小demo例子: 上传&&下载

来源:互联网 发布:pad怎么卸载软件 编辑:程序博客网 时间:2024/05/01 20:00

1. user.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'user.jsp' starting page</title>      </head>    <body>    <form name="form1" action="${pageContext.request.contextPath}/UserUploadServlet" method="post" enctype="multipart/form-data">        用户名:<input name="username" type="text" /><br/>   性别:<input name="sex" type="radio" value="男" />男<br/>   <input name="sex" type="radio" value="女" />女<br/> 电话: <input name="tel" type="text" /><br/> 上传的文件:<input name="filepath" type="file" /><br/> <input value="上传" type="submit" /><br/>    </form>    <a href="${pageContext.request.contextPath }/UserListServlet">查看</a>  </body></html>

2. userList.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'userList.jsp' starting page</title>  </head>  <body>    用户信息查询:<br/>    <table border="1">       <tr>         <td>用户名</td>          <td>性别</td>           <td>电话</td>            <td>文件名称</td>             <td>下载</td>       </tr>       <c:forEach items="${list}" var="user">         <tr>           <td>${user.username }</td>           <td>${user.sex }</td>           <td>${user.tel }</td>           <td>${user.filename }</td>           <td>             <c:url value="/DownUserServlet" var="url">               <c:param name="filepath" value="${user.filepath }"></c:param>              <c:param name="filename" value="${user.filename}"></c:param>                          </c:url>              <a href="${url }">${user.filepath }下载</a>           </td>         </tr>              </c:forEach>    </table>  </body></html>

3. web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- 配置标签库 --><jsp-config><taglib>  <!-- 在jsp页面使用的tld文件的名称,看成一个别名 --><taglib-uri>/WEB-INF/tag.tld</taglib-uri><!-- 标签库在当前web应用的完整路径,/表示从更路径开始 --><taglib-location>/WEB-INF/tld/tag.tld</taglib-location></taglib><taglib>  <!-- 在jsp页面使用的tld文件的名称,看成一个别名 --><taglib-uri>/WEB-INF/elfunction.tld</taglib-uri><!-- 标签库在当前web应用的完整路径,/表示从更路径开始 --><taglib-location>/WEB-INF/tld/elfunction.tld</taglib-location></taglib></jsp-config>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>LoginServlet</servlet-name>    <servlet-class>day09.LoginServlet</servlet-class>  </servlet>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>GetCGIServlet</servlet-name>    <servlet-class>day09.GetCGIServlet</servlet-class>  </servlet>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>ReadCookieServlet</servlet-name>    <servlet-class>day09.ReadCookieServlet</servlet-class>  </servlet>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>LastDateServlet</servlet-name>    <servlet-class>day09.LastDateServlet</servlet-class>  </servlet>      <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>AddProductServlet</servlet-name>    <servlet-class>day10Shopping.AddProductServlet</servlet-class>  </servlet>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>RemoveProductServlet</servlet-name>    <servlet-class>day10Shopping.RemoveProductServlet</servlet-class>  </servlet>  <servlet>    <servlet-name>UserUploadServlet</servlet-name>    <servlet-class>day16.UserUploadServlet</servlet-class>  </servlet>  <servlet>    <servlet-name>UserListServlet</servlet-name>    <servlet-class>day16.UserListServlet</servlet-class>  </servlet>  <servlet>    <servlet-name>DownUserServlet</servlet-name>    <servlet-class>day16.DownUserServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>LoginServlet</servlet-name>    <url-pattern>/servlet/LoginServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>GetCGIServlet</servlet-name>    <url-pattern>/servlet/GetCGIServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>ReadCookieServlet</servlet-name>    <url-pattern>/servlet/ReadCookieServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>LastDateServlet</servlet-name>    <url-pattern>/LastDateServlet</url-pattern>  </servlet-mapping>    <servlet-mapping>    <servlet-name>AddProductServlet</servlet-name>    <url-pattern>/servlet/AddProductServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>RemoveProductServlet</servlet-name>    <url-pattern>/servlet/RemoveProductServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>UserUploadServlet</servlet-name>    <url-pattern>/UserUploadServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>UserListServlet</servlet-name>    <url-pattern>/UserListServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>DownUserServlet</servlet-name>    <url-pattern>/DownUserServlet</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>

4. User.java

package day16.bean;public class User {private Integer id;private String username;private String sex;private String tel;private String filepath;private String filename;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String getFilepath() {return filepath;}public void setFilepath(String filepath) {this.filepath = filepath;}public String getFilename() {return filename;}public void setFilename(String filename) {this.filename = filename;}}

5. DaoUserImpl

package day16.dao.impl;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement;import day16.DBManager;import day16.bean.User;public class DaoUserImpl {public void saveUser(User user) throws Exception {DBManager dbManager=null;Connection conn=null;PreparedStatement pstmt=null;try {dbManager=new DBManager();conn=dbManager.getConnection();//组织Sql语句String sql="insert into userfile (id,username,sex,tel,filepath,filename)values(null,?,?,?,?,?)";pstmt=(PreparedStatement) conn.prepareStatement(sql);pstmt.setString(1, user.getUsername());pstmt.setString(2, user.getSex());pstmt.setString(3, user.getTel());pstmt.setString(4, user.getFilepath());pstmt.setString(5, user.getFilename());pstmt.executeUpdate();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{dbManager.closeResource(conn, pstmt);}}public List<User> findAllUser() throws Exception {DBManager dbManager=null;Connection conn=null;PreparedStatement pstmt=null;ResultSet rs=null;List<User> list=new ArrayList<User>();try {dbManager=new DBManager();conn=dbManager.getConnection();//组织Sql语句String sql="select id,username,sex,tel,filepath,filename from userfile order by id ";pstmt=(PreparedStatement) conn.prepareStatement(sql);rs=pstmt.executeQuery();while(rs.next()){User u=new User();u.setId(rs.getInt(1));u.setUsername(rs.getString(2));u.setSex(rs.getString(3));u.setTel(rs.getString(4));u.setFilepath(rs.getString(5));u.setFilename(rs.getString(6));list.add(u);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{dbManager.closeResource(conn, pstmt,rs);}return list;}}

6. UserListServlet

package day16;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import day16.bean.User;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import day16.dao.impl.DaoUserImpl;public class UserListServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();DaoUserImpl daoUser=new DaoUserImpl();List<User> list=null;try {list = daoUser.findAllUser();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}request.setAttribute("list", list);request.getRequestDispatcher("/userList.jsp").forward(request, response);}}
7. DownUserServlet

package day16;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import java.io.PrintWriter;import java.net.URLDecoder;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DownUserServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");//获取路径String filepath=request.getParameter("filepath");//获取文件名称String filename=request.getParameter("filename");response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename,"utf-8"));//获取真实路径String realPath=this.getServletContext().getRealPath(filepath);realPath=realPath+"/";//读取文件输入流FileInputStream fis=new FileInputStream(realPath);BufferedInputStream bis=new BufferedInputStream(fis);//定义输出流//从响应对象中获取输出流OutputStream fos=response.getOutputStream();BufferedOutputStream bos= new BufferedOutputStream(fos);//从输入流中读取写入到输出流byte[] b= new byte[200*1024];int len=0;while((len=bis.read(b))!=-1){bos.write(b, 0, len);}//关闭bis.close();bos.close();}}

8.UserUploadServlet

package day16;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Arrays;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileItemFactory;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import day16.bean.User;import day16.dao.impl.DaoUserImpl;public class UserUploadServlet extends HttpServlet {//定义哪些后缀类型的文件能被接受String allowedExt[]=new String[]{"doc","jpg","mp3"};public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();//保存表单域的mapMap<String,String> formMap= new HashMap<String,String>();//保存文件域的mapMap<String,String> fileMap= new HashMap<String,String>();//如果客户端请求 enctype="multipart/form-data" 返回trueboolean isMultipart = ServletFileUpload.isMultipartContent(request);// Create a factory for disk-based file itemsFileItemFactory factory = new DiskFileItemFactory();  // Set factory constraints表示上传文件存储在内存空间的大小,若上传文件大小大于1024B,存储在硬盘D:/temp下,否则存储在内存中((DiskFileItemFactory) factory).setSizeThreshold(1024);((DiskFileItemFactory) factory).setRepository(new File("D:/temp"));// Create a new file upload handlerServletFileUpload upload = new ServletFileUpload(factory);try {//限制文件上传的大小long MAXSIZE=1024*1024;upload.setFileSizeMax(MAXSIZE);// Parse the requestList /* FileItem */ items = upload.parseRequest(request);// Process the uploaded itemsIterator iter = items.iterator();while (iter.hasNext()) {    FileItem item = (FileItem) iter.next();    if (item.isFormField()) {    // Process a regular form field    //请输入文件名:<input type="text" name="filename"/><br/>        String name = item.getFieldName();        String value = item.getString("utf-8");        System.out.println("isFormField: "+name+"       "+value);        formMap.put(name, value);            } else {    // Process a file upload    //请选择要上传的文件:<input type="file" name="filepath" /><br/>    if (!item.isFormField()) {        String fieldName = item.getFieldName();        String fileName = item.getName();        String contentType = item.getContentType();//上传的文件类型        boolean isInMemory = item.isInMemory();//true 临时保存在内存;false保存在硬盘        long sizeInBytes = item.getSize();        System.out.println("file upload: "+fieldName+"       "+fileName);        fileMap.put(fieldName, fileName);        /************************************************/         /*  //获取上传文件的名称:方法一        File uploadedFile = new File("D:/"+fileName);        //把上传的内容写到一个文件中    item.write(uploadedFile);*/    /************************************************/        //上传的文件保存到pics文件夹下        String realPath=this.getServletContext().getRealPath("/user");        System.out.println("realPath= "+realPath);                //获取后缀名        String fileNameEnd=fileName.substring(fileName.lastIndexOf(".")+1);        System.out.println("fileNameEnd= "+fileNameEnd);      //阻止某些类型的文件        if(fileNameEnd!=null){        boolean flag=Arrays.asList(allowedExt).contains(fileNameEnd);        if(!flag){        throw new RuntimeException("您上传的文件类型["+fileNameEnd+"],本系统不支持");        }        }        realPath=realPath+"/"+fileName;        File uploadedFile = new File(realPath);        //把上传的内容写到一个文件中    item.write(uploadedFile);                /************************************************/        /*保存固定的文件名         * //定义一个file指向一个具体的文件        File uploadedFile = new File("D:/a.jpg");        //把上传的内容写到一个文件中    item.write(uploadedFile);*/    /************************************************/            }    }}} catch (FileUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} //封装信息到javaBeanUser user=new User();user.setUsername(formMap.get("username"));user.setSex(formMap.get("sex"));user.setTel(formMap.get("tel"));user.setFilepath("/user");user.setFilename(fileMap.get("filepath"));DaoUserImpl daoUser = new DaoUserImpl();try {daoUser.saveUser(user);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

9. DBManager

package day16;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.mysql.jdbc.Connection;import com.mysql.jdbc.PreparedStatement;public class DBManager {private String url="jdbc:mysql://localhost:3306/test";Connection conn=null;public DBManager() throws Exception{Class.forName("com.mysql.jdbc.Driver");}public Connection getConnection() throws SQLException{conn=(Connection) DriverManager.getConnection(url, "root", "");return conn;}public void closeResource(Connection conn, PreparedStatement pstmt,ResultSet rs) throws SQLException {if(rs!=null){rs.close();}if(pstmt!=null){pstmt.close();}if(conn!=null){conn.close();}}public void closeResource(Connection conn, Statement pstmt,ResultSet rs) throws SQLException {if(rs!=null){rs.close();}if(pstmt!=null){pstmt.close();}if(conn!=null){conn.close();}}public void closeResource(Connection conn, PreparedStatement pstmt) throws SQLException {if(pstmt!=null){pstmt.close();}if(conn!=null){conn.close();}}}



原创粉丝点击