zoukankan      html  css  js  c++  java
  • Java Web总结十八之二上传下载和数据库结合

    1、up.sql

    use mydb3;
    drop table if exists up;
    create table if not exists up(
     id int primary key auto_increment,
     username varchar(20) not null,
     realFileName varchar(40) not null,
     uuidFileName varchar(80) not null
    );

    2、UpDao.java

    package com.gnnuit.web.updownload.dao;
    
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanHandler;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    
    import com.gnnuit.web.updownload.domain.Up;
    import com.gnnuit.web.updownload.util.JdbcUtil;
    
    
    public class UpDao {
        // 增加Up对象
        public void addUp(Up up) throws SQLException {
            QueryRunner runner = new QueryRunner();
            String sql = "insert into up(username,realFileName,uuidFileName) values(?,?,?)";
            runner.update(
                    JdbcUtil.getMySqlConnection(),
                    sql,
                    new Object[] { up.getUsername(), up.getRealFileName(),
                            up.getUuidFileName() });
        }
    
        // 查询所有的Up对象
        public List<Up> findAllUp() throws SQLException {
            List<Up> upList = new ArrayList<Up>();
            QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
            String sql = "select * from up";
            upList = (List<Up>) runner
                    .query(sql, new BeanListHandler<Up>(Up.class));
            return upList;
        }
    
        // 根据UUID文件名查询唯一的Up对象
        public Up findUpByUuidFileName(String uuidFileName) throws SQLException {
            Up up = null;
            QueryRunner runner = new QueryRunner(JdbcUtil.getDataSource());
            String sql = "select * from up where uuidFileName = ?";
            up = (Up) runner
                    .query(sql, new BeanHandler<Up>(Up.class), uuidFileName);
            return up;
        }
    }

    3、Up.java

    package com.gnnuit.web.updownload.domain;
    
    public class Up {
        private int id;
        private String username;
        private String realFileName;
        private String uuidFileName;
    
        public Up() {
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getRealFileName() {
            return realFileName;
        }
    
        public void setRealFileName(String realFileName) {
            this.realFileName = realFileName;
        }
    
        public String getUuidFileName() {
            return uuidFileName;
        }
    
        public void setUuidFileName(String uuidFileName) {
            this.uuidFileName = uuidFileName;
        }
    }

    4、User.java

    package com.gnnuit.web.updownload.domain;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.commons.fileupload.FileItem;
    
    //封装上传文件的内容
    public class User {
        // 上传用户
        private String username;
        // 上传的文件
        private List<FileItem> upfileList = new ArrayList<FileItem>();
    
        public User() {
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public List<FileItem> getUpfileList() {
            return upfileList;
        }
    
        public void setUpfileList(List<FileItem> upfileList) {
            this.upfileList = upfileList;
        }
    }

    5、JdbcUtil.java

    package com.gnnuit.web.updownload.util;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    //JDBC工具类:关闭流和取得连接
    public final class JdbcUtil {
        private static ComboPooledDataSource dataSource;
        private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
        static {
            dataSource = new ComboPooledDataSource();
        }
    
        // 取得数据源
        public static ComboPooledDataSource getDataSource() {
            return dataSource;
        }
    
        // 取得连接
        public static Connection getMySqlConnection() throws SQLException {
            Connection conn = tl.get();
            if (conn == null) {
                conn = dataSource.getConnection();
                tl.set(conn);
            }
            return conn;
        }
    
        // 关闭连接
        public static void close(Connection conn) throws SQLException {
            if (conn != null) {
                conn.close();
            }
        }
    
        public static void close(PreparedStatement pstmt) throws SQLException {
            if (pstmt != null) {
                pstmt.close();
            }
        }
    
        public static void close(ResultSet rs) throws SQLException {
            if (rs != null) {
                rs.close();
            }
        }
    
        public static void begin() throws SQLException {
            Connection conn = getMySqlConnection();
            conn.setAutoCommit(false);
        }
    
        public static void commit() throws SQLException {
            Connection conn = getMySqlConnection();
            conn.commit();
        }
    
        public static void rollback() throws SQLException {
            Connection conn = getMySqlConnection();
            conn.rollback();
        }
    
        public static void closeConnection() throws SQLException {
            Connection conn = getMySqlConnection();
            close(conn);
            tl.remove();
        }
    }

    6、UploadUtil.java

    package com.gnnuit.web.updownload.util;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.List;
    import java.util.UUID;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    
    import com.gnnuit.web.exception.NoUpfileException;
    import com.gnnuit.web.updownload.domain.Up;
    import com.gnnuit.web.updownload.domain.User;
    
    public final class UploadUtil {
    
        // 取得上传使用的临时和真实目录
        public static final String tempPath = "/WEB-INF/temp";
        public static final String uploadPath = "/WEB-INF/upload";
    
        // 取得真实文件名
        public static String getRealFileName(String realFileName) {
            int index = realFileName.lastIndexOf("\");
            if (index >= 0) {
                // IE6浏览器
                realFileName = realFileName.substring(index + 1);
            }
            return realFileName;
        }
    
        // 取得upload/目录下的分散目录
        public static String makeUuidFilePath(String uploadPath, String uuidFileName) {
            String uuidFilePath = null;
            int code = uuidFileName.hashCode();// 8
            int dir1 = code & 0xF;// 3
            int dir2 = code >> 4 & 0xF;// A
            File file = new File(uploadPath + "/" + dir1 + "/" + dir2);
            // 如果该目录未存在
            if (!file.exists()) {
                // 一次性创建N层目录
                file.mkdirs();
            }
            uuidFilePath = file.getPath();
            return uuidFilePath;
        }
    
        // 取得uuid文件名
        public static String makeUuidFileName(String realFileName) {
            return UUID.randomUUID().toString() + "_" + realFileName;
        }
    
        // 文件复制
        public static void doSave(InputStream is, String uuidFileName,
                String uuidFilePath) {
            OutputStream os = null;
            try {
                os = new FileOutputStream(uuidFilePath + "/" + uuidFileName);
                byte[] buf = new byte[1024];
                int len = 0;
                while ((len = is.read(buf)) > 0) {
                    os.write(buf, 0, len);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (is != null) {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (os != null) {
                    try {
                        os.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        // 将上传文件封装成JavaBean对象中
        public static User doUpload(HttpServletRequest request, List<Up> upList)
                throws Exception {
            User user = new User();
            // 创建上传文件工厂
            DiskFileItemFactory factory = new DiskFileItemFactory();
            // 设置内存中缓存区的大小,默认10K
            factory.setSizeThreshold(100 * 1024);
            // 设置上传文件临时存放的目录
            String tempPath = request.getSession().getServletContext()
                    .getRealPath(UploadUtil.tempPath);
            factory.setRepository(new File(tempPath));
            // 创建上传文件对象[核心]
            ServletFileUpload upload = new ServletFileUpload(factory);
            // 设置上传文件的中文编码方式
            upload.setHeaderEncoding("UTF-8");
            // 客户端上传文件是否使用MIME协议,
            boolean flag = ServletFileUpload.isMultipartContent(request);
            if (!flag) {
                // 不是以MIME协议上传文件
                throw new ServletException();
            } else {
                /*
                 * 是以MIME协议上传的文件,解析request中的所有上传内容每个内容封装成一个对象FileItem,
                 * FileItem代表普通字段和上传字段二类
                 */
                List<FileItem> fileItemList = upload.parseRequest(request);
                for (FileItem fileItem : fileItemList) {
                    if (fileItem.isFormField()) {
                        // 必定是普通字段
                        String fieldName = fileItem.getFieldName();
                        String fieldValue = fileItem.getString("UTF-8");
                        user.setUsername(fieldValue);
                    } else {
                        // 必定是上传字段
    
                        // 如果无上传文件
                        if (fileItem.getSize() == 0) {
                            throw new NoUpfileException();
                        }
    
                        String realFileName = UploadUtil.getRealFileName(fileItem
                                .getName());
    
                        /*
                         * 只能上传JPG文件 if(!realFileName.endsWith("JPG")){ throw new
                         * UpfileTypeException(); }
                         */
    
                        /*
                         * 只有上传<=200K的文件 if(fileItem.getSize() > 200 * 1024){ throw
                         * new UpfileSizeException(); }
                         */
    
                        // 封装到JavaBean
                        user.getUpfileList().add(fileItem);
    
                        // 封装N个Up对象
                        Up up = new Up();
                        up.setRealFileName(realFileName);
                        up.setUuidFileName(UploadUtil
                                .makeUuidFileName(realFileName));
                        up.setUsername(user.getUsername());
                        upList.add(up);
    
                    }
                }// end of for loop
            }
            return user;
        }
    
        public static void doSave(User user, String uploadPath, List<Up> upList)
                throws Exception {
            // 取得该用户上传的所有文件集合
            List<FileItem> fileItemList = user.getUpfileList();
            // 迭代每个文件,并上传
            int index = 0;
            for (FileItem fileItem : fileItemList) {
                // 取得输入流
                InputStream is = fileItem.getInputStream();
                // 取得真实文件名
                String realFileName = fileItem.getName();
                realFileName = UploadUtil.getRealFileName(realFileName);
                // 取得UUID文件名
                // String uuidFileName = UploadUtil.makeUuidFileName(realFileName);
                String uuidFileName = upList.get(index).getUuidFileName();
                // 取得UUID文件路径
                String uuidFilePath = UploadUtil.makeUuidFilePath(uploadPath,
                        uuidFileName);
                // 保存
                UploadUtil.doSave(is, uuidFileName, uuidFilePath);
                // 删除临时文件
                fileItem.delete();
                index++;
            }
    
        }
    }

    7、UpService.java

    package com.gnnuit.web.updownload.service;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import com.gnnuit.web.updownload.dao.UpDao;
    import com.gnnuit.web.updownload.domain.Up;
    
    public class UpService {
        private UpDao upDao = new UpDao();
    
        public void addUps(List<Up> upList) throws Exception {
            for (Up up : upList) {
                try {
                    upDao.addUp(up);
                } catch (SQLException e) {
                    e.printStackTrace();
                    throw new Exception();
                }
            }
        }
    
        public List<Up> findAllUp() throws Exception {
            try {
                return upDao.findAllUp();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new Exception();
            }
        }
    
        public Up findUpByUuidFileName(String uuidFileName) throws Exception {
            try {
                return upDao.findUpByUuidFileName(uuidFileName);
            } catch (SQLException e) {
                e.printStackTrace();
                throw new Exception();
            }
        }
    }

    8、UploadServlet.java

    package com.gnnuit.web.updownload.upload;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.gnnuit.web.updownload.domain.Up;
    import com.gnnuit.web.updownload.domain.User;
    import com.gnnuit.web.updownload.exception.NoUpfileException;
    import com.gnnuit.web.updownload.exception.UpfileSizeException;
    import com.gnnuit.web.updownload.exception.UpfileTypeException;
    import com.gnnuit.web.updownload.service.UpService;
    import com.gnnuit.web.updownload.util.JdbcUtil;
    import com.gnnuit.web.updownload.util.UploadUtil;
    
    public class UploadServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            try {
    
                String uploadPath = this.getServletContext().getRealPath(
                        UploadUtil.uploadPath);
                List<Up> upList = new ArrayList<Up>();
                User user = UploadUtil.doUpload(request, upList);
    
                // 事务开始
                JdbcUtil.begin();
    
                // 写入表
                UpService upService = new UpService();
                upService.addUps(upList);
    
                // int i = 10/0;
    
                // 写入硬盘
                UploadUtil.doSave(user, uploadPath, upList);
    
                // 事务提交
                JdbcUtil.commit();
    
                request.setAttribute("message", "上传文件成功");
                request.getRequestDispatcher("/WEB-INF/message.jsp").forward(
                        request, response);
            } catch (UpfileSizeException e) {
                e.printStackTrace();
                request.setAttribute("message",
                        "<font color='green'>上传文件大小限制在200K以内</font>");
                request.getRequestDispatcher("/WEB-INF/message.jsp").forward(
                        request, response);
            } catch (UpfileTypeException e) {
                e.printStackTrace();
                request.setAttribute("message",
                        "<font color='red'>只能上传JPG格式的文件</font>");
                request.getRequestDispatcher("/WEB-INF/message.jsp").forward(
                        request, response);
            } catch (NoUpfileException e) {
                e.printStackTrace();
                request.setAttribute("message", "<font color='blue'>无上传文件</font>");
                request.getRequestDispatcher("/WEB-INF/message.jsp").forward(
                        request, response);
            } catch (Exception e) {
                // 事务回滚
                try {
                    JdbcUtil.rollback();
                    JdbcUtil.commit();
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
                // 事务提交
                e.printStackTrace();
                request.setAttribute("message", "上传文件失败");
                request.getRequestDispatcher("/WEB-INF/message.jsp").forward(
                        request, response);
            } finally {
                // 关闭Connection对象,并分离线程
                try {
                    JdbcUtil.closeConnection();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    9、DownloadServlet.java

    package com.gnnuit.web.updownload.download;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.gnnuit.web.updownload.domain.Up;
    import com.gnnuit.web.updownload.service.UpService;
    import com.gnnuit.web.util.UploadUtil;
    
    //下载文件到本地[DB版]
    public class DownloadServlet extends HttpServlet {
    
        private static final long serialVersionUID = 1L;
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            // 取得uuid文件名并进行URL解码
            String uuidFileName = request.getParameter("uuidFileName");
            byte[] buf = uuidFileName.getBytes("ISO8859-1");
            uuidFileName = new String(buf, "UTF-8");
    
            try {
                // 根据UUID文件名查询Up对象
                UpService upService = new UpService();
                Up up = upService.findUpByUuidFileName(uuidFileName);
    
                // 向浏览器输出以下载方式打开文件
                response.setHeader("content-disposition", "attachment;filename="
                        + URLEncoder.encode(up.getRealFileName(), "UTF-8"));
    
                // 真正下载
                String uploadPath = this.getServletContext().getRealPath(
                        UploadUtil.uploadPath);
                String uuidFilePath = UploadUtil.makeUuidFilePath(uploadPath,
                        uuidFileName);
                InputStream is = new FileInputStream(uuidFilePath + "/"
                        + uuidFileName);
                OutputStream os = response.getOutputStream();
                int len = 0;
                buf = new byte[1024];
                while ((len = is.read(buf)) > 0) {
                    os.write(buf, 0, len);
                }
                is.close();
                os.close();
            } catch (Exception e) {
                e.printStackTrace();
                request.setAttribute("message", "下载文件失败");
                request.getRequestDispatcher("/WEB-INF/message.jsp").forward(
                        request, response);
            }
        }
    }

    10、ListFileServlet.java

    package com.gnnuit.web.updownload.download;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.gnnuit.web.updownload.domain.Up;
    import com.gnnuit.web.updownload.service.UpService;
    
    //显示可供下载的文件列表[DB版]
    public class ListFileServlet extends HttpServlet {
    
        private static final long serialVersionUID = 1L;
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            try {
                UpService upService = new UpService();
                List<Up> upList = upService.findAllUp();
                request.setAttribute("upList", upList);
                request.getRequestDispatcher("/WEB-INF/list.jsp").forward(request,
                        response);
            } catch (Exception e) {
                e.printStackTrace();
                request.setAttribute("message", "显示可供下载文件失败");
                request.getRequestDispatcher("/WEB-INF/message.jsp").forward(
                        request, response);
            }
        }
    }

    11、NoUpfileException.java

    package com.gnnuit.web.updownload.exception;
    
    public class NoUpfileException extends Exception {
    
        private static final long serialVersionUID = 1L;
    
    }

    12、UpfileSizeException.java

    package com.gnnuit.web.updownload.exception;
    
    public class UpfileSizeException extends Exception {
    
        private static final long serialVersionUID = 1L;
    
    }

    13、UpfileTypeException.java

    package com.gnnuit.web.updownload.exception;
    
    public class UpfileTypeException extends Exception {
    
        private static final long serialVersionUID = 1L;
    
    }

    14、c3p0-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
        <default-config>
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="user">root</property>
            <property name="password">root</property>
            <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/mydb3</property>
        </default-config>
    </c3p0-config>

    15、upload.jsp

    <%@ page language="java" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
          <script type="text/javascript">
              //全局变量
              var time = 0;
              function addLine(addButton){
                  //创建内部div对象
                  var divElement = document.createElement("div");
                  //创建input对象[file类型]
                  var inputElement1 = document.createElement("input");
                  inputElement1.type="file";
                  inputElement1.name="upfile";
                  //创建input对象[button类型]
                  var inputElement2 = document.createElement("input");
                  inputElement2.type="button";
                  inputElement2.value="删除";
                  //对删除按钮添加事件监听
                  inputElement2.onclick=function(){
                      //取得该按钮所在行的直接父元素
                      var divElement = this.parentNode.parentNode;
                      //通过父元素删除直接子元素
                      divElement.removeChild(this.parentNode);
                      time--;
                      if(time < 5){
                          //按钮生效
                          addButton.disabled=false;
                          //addButton.style.visibility="visible";
                      }
                  };
                  //依次将file类型和button类型的input对象加入到内部div对象中
                  divElement.appendChild(inputElement1);
                  divElement.appendChild(inputElement2);
                  //再次内部div对象加入到外部div对象
                  var outDivElement = document.getElementById("outDiv");
                  outDivElement.appendChild(divElement);
                  time++;
                  if(time == 5){
                      //将按钮失效
                      addButton.disabled=true;
                      //addButton.style.visibility="hidden";
                  }    
              }
          </script>
      </head>
      <body>
          <form 
              action="${pageContext.request.contextPath}/UploadServlet" 
              method="POST"
              enctype="multipart/form-data">
              <table border="1" align="center">
                  <caption>文件上传</caption>
                  <tr>
                      <th>上传用户</th>
                      <td><input type="text" name="username"/></td>
                  </tr>
                  <tr>
                      <th></th>
                      <td>
                          <div id="outDiv">
                              <%--
                              <div>
                                <input type="file" name="upfile"/>
                                <input type="button" value="删除"/>                              
                              </div>
                              --%>
                          </div>
                      </td>
                  </tr>
                  <tr>
                      <th></th>
                      <td>
                          <input 
                              type="button" 
                              value="添加上传文件"
                              onclick="addLine(this)"
                          />
                      </td>
                  </tr>
                  <tr>
                      <td colspan="2" align="center">
                          <input type="submit" value="上传"/>
                          <a href="${pageContext.request.contextPath}/ListFileServlet">
                              显示下载文件
                          </a>
                      </td>
                  </tr>
              </table>
          </form>
      </body>
    </html>

    16、download.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      
      <body>
        <table align="center" border="1">
            <tr>
                <th>文件列表</th>
                <th>操作</th>
            </tr>
            <c:forEach var="entry" items="${map }">
                <tr>
                    <td>${entry.value }</td>
                    <td>
                        <c:url var="myURL" value="/DownLoadServlet">
                            <c:param name="fileName" value="${entry.key }"></c:param>
                        </c:url>
                        <a href="${myURL }" >下载</a>
                    </td>
                </tr>
            </c:forEach>
        </table>
      </body>
    </html>

    17、list.jsp

    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <body>
          <table border="1" align="center">
              <caption>下载文件列表</caption>
              <tr>
                  <th>文件名</th>
                  <th>操作</th>
              </tr>
              <c:forEach var="up" items="${requestScope.upList}">
                  <tr>
                      <td>${up.realFileName}</td>    
                      <td>
                          <c:url var="myURL" value="/DownloadServlet">
                              <c:param name="uuidFileName" value="${up.uuidFileName}"/>
                          </c:url>
                          <a  href="${myURL}" 
                              style="text-decoration:none">
                              下载
                          </a>
                      </td>
                  </tr>
              </c:forEach>
          </table>
      </body>
    </html>

    18、message.jsp

    <%@ page language="java" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <body>
          ${message}<br/>
          <a href="${pageContext.request.contextPath}/upload.jsp">
              返回
          </a>
      </body>
    </html>

    19、web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        id="WebApp_ID" version="3.0">
        <display-name>day18</display-name>
        <servlet>
            <servlet-name>Upload</servlet-name>
            <servlet-class>com.gnnuit.web.servlet.upload.Upload</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>Upload</servlet-name>
            <url-pattern>/Upload</url-pattern>
        </servlet-mapping>
    
        <servlet>
            <servlet-name>UploadServlet</servlet-name>
            <servlet-class>com.gnnuit.web.updownload.upload.UploadServlet</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>ListFileServlet</servlet-name>
            <servlet-class>com.gnnuit.web.updownload.download.ListFileServlet</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>DownloadServlet</servlet-name>
            <servlet-class>com.gnnuit.web.updownload.download.DownloadServlet</servlet-class>
        </servlet>
    
    
    
        <servlet-mapping>
            <servlet-name>UploadServlet</servlet-name>
            <url-pattern>/UploadServlet</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>ListFileServlet</servlet-name>
            <url-pattern>/ListFileServlet</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>DownloadServlet</servlet-name>
            <url-pattern>/DownloadServlet</url-pattern>
        </servlet-mapping>
    
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>default.html</welcome-file>
            <welcome-file>default.htm</welcome-file>
            <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
  • 相关阅读:
    本地坐标转世界坐标为什么是 先缩放后旋转再平移
    cocos子节点转父节点坐标 原理浅析(局部坐标转世界坐标同理)
    Github上关于iOS的各种开源项目集合2(强烈建议大家收藏,查看,总有一款你需要)
    Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)
    Masonry基本语法
    WebStorm 10.0.4注册码
    如何让CCLayer创造的地图,左右滑动不出现黑边
    GitHub 上排名前 100 的 Objective-C 项目简介
    C语言fmod()函数:对浮点数取模(求余)
    查看笔记本最大支持内存
  • 原文地址:https://www.cnblogs.com/FlySheep/p/3726976.html
Copyright © 2011-2022 走看看