文件的和上传下载

1.index.jsp

<a href="FileupLoad/upLoad.jsp">文件的上传</a>
<a href="queryAllServlet">文件的下载</a>

在这里插入图片描述

2.文件的上传

将文件上传到文件夹,该文件夹路径为发布到服务器的WEB-INF目录下的files目录,文件的路径等信息储存进数据库
2.0.在WEB-INF目录下的建立files目录,文件上传到该目录

2.1.FileupLoad目录下的upLoad.jsp

<%--
  Created by IntelliJ IDEA.
  User: H
  Date: 2019/7/23
  Time: 12:36
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>upLoad</title>
    <script type="text/javascript" src="../script/jquery-1.7.2.js"></script>
    <script type="text/javascript">
        $(function () {
            var i = 2;
            $("#addFile").click(function () {
                $(this).parent().parent().before("<tr class='file'><td>File" +
                    i + ":</td><td><input type='file' name='file" +
                    i + "'></td></tr><tr class='desc'><td>desc" +
                    i + ":</td><td><input type='text' name='desc" +
                    i + "'\"><button class='delete'>删除</button></td></tr>")
                $(".delete").click(function () {
                    var $tr = $(this).parent().parent();
                    $tr.prev("tr").remove();
                    $tr.remove();

                    $(".file").each(function (index) {
                        $(this).find("td:first").text("File"+(index+1));
                        $(this).find("td:last input").attr("name","file"+(index+1));
                    })
                    $(".desc").each(function (index) {
                        $(this).find("td:first").text("desc"+(index+1));
                        $(this).find("td:last input").attr("name","desc"+(index+1));
                    })
                    return false;
                })
                i++;
                return false;
            })
        });

    </script>
</head>
<body>
<form action="../upLoadServlet" method="post" enctype="multipart/form-data">
    <font color="red">${requestScope.message}</font>
    <table>
        <tr class="file">
            <td>File1:</td>
            <td><input type="file" name="file1"></td>
        </tr>
        <tr class="desc">
            <td>Desc1:</td>
            <td><input type="text" name="desc1"></td>
        </tr>
        <tr>
            <td><input type="submit" value="Submit"></td>
            <td>
                <button id="addFile">新增一个附件</button>
            </td>
        </tr>
    </table>
</form>
</body>
</html>

2.2.连接数据库
在这里插入图片描述
src目录下的c3p0-config.xml

<c3p0-config>
   <!--配置连接池mysql-->
    <named-config name="mvcapp">
        <property name="driverClass">com.mysql.jdbc.Driver</property>  
        <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/FileUpload</property>
        <property name="user">root</property>  
        <property name="password">qq2694200519</property>  
        <property name="initialPoolSize">10</property>  
        <property name="maxIdleTime">30</property>  
        <property name="maxPoolSize">100</property>  
        <property name="minPoolSize">10</property>  
        <property name="maxStatements">200</property>
        <property name="maxStatementsPerConnection">5</property>
    </named-config>  
</c3p0-config>

jdbcUtil

package com.zx.fileUpLoad.c3po;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class jdbcUtil {

private static DataSource dataSource=null;
static {
    dataSource=new  ComboPooledDataSource("mvcapp");
}

    /**
     * 获取数据库连接
     * @return
     */
    public static Connection getConnection(){
    try {
        return dataSource.getConnection();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

public static void realseConnection(Connection connection){
        if(connection!=null){
            try {
                connection.close();
            } catch (SQLException e) {
                System.out.println("关闭数据库连接失败");
            }
            System.out.println("关闭数据库连接成功");
        }
}
}

DAO

package com.zx.fileUpLoad.DAO;

import com.zx.fileUpLoad.c3po.jdbcUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

public class DAO<T> {
   public  Class<T>clazz;
   private QueryRunner queryRunner=new QueryRunner();
    public DAO(){
        Type type=getClass().getGenericSuperclass();
        if(type instanceof ParameterizedType){
            ParameterizedType parameterizedType=(ParameterizedType)type;
           Type[]types=parameterizedType.getActualTypeArguments();
           if(types!=null&&types.length>0){
               clazz=(Class<T>)types[0];
           }
        }
    }
public List<T>getForList(String sql,Object...args){
        Connection connection=jdbcUtil.getConnection();
    try {
        System.out.println(clazz);
        return queryRunner.query(connection,sql,new BeanListHandler<>(clazz),args);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}
public T get(String sql,Object...args){
    Connection connection=jdbcUtil.getConnection();
    try {
        return queryRunner.query(connection,sql,new BeanHandler<>(clazz),args);
    } catch (SQLException e) {
        e.printStackTrace();
    }finally {
        jdbcUtil.realseConnection(connection);
    }
        return null;
}

public  <E>E getValue(String sql,Object...args){

    Connection connection=null;
    try {
        connection=jdbcUtil.getConnection();
        return (E)queryRunner.query(connection,sql,new ScalarHandler(),args);
    } catch (Exception e) {
        e.printStackTrace();
    }finally {
        jdbcUtil.realseConnection(connection);
    }
    return null;
}

public void Updata(String sql,Object...args){
        Connection connection=jdbcUtil.getConnection();
    try {
        queryRunner.update(connection,sql,args);
    } catch (SQLException e) {
        e.printStackTrace();
    }finally {
        jdbcUtil.realseConnection(connection);
    }
}
}

FilrUpLoadBeanDAO

package com.zx.fileUpLoad.DAO;

import com.zx.fileUpLoad.doMain.FilrUpLoadBean;

import java.util.List;

public interface FilrUpLoadBeanDAO {
    public void sava(List<FilrUpLoadBean> filrUpLoadBeans);
    public List<FilrUpLoadBean> getAll();
    public FilrUpLoadBeanDAO get(int id);
    public void Delete(int id);
}

impFilrUpLoadBeanDAO

package com.zx.fileUpLoad.imple;

import com.zx.fileUpLoad.DAO.DAO;
import com.zx.fileUpLoad.DAO.FilrUpLoadBeanDAO;
import com.zx.fileUpLoad.doMain.FilrUpLoadBean;

import java.util.List;

public class impFilrUpLoadBeanDAO extends DAO<FilrUpLoadBean> implements FilrUpLoadBeanDAO {
    @Override
    public void sava(List<FilrUpLoadBean> filrUpLoadBeans) {
        String sql = "INSERT INTO Filruploadbean(fileName,filePath,fileDesc) VALUES(?,?,?)";
        for (FilrUpLoadBean filr : filrUpLoadBeans) {
            Updata(sql, filr.getFileName(), filr.getFilePath(), filr.getFileDesc());
        }
    }

    @Override
    public List<FilrUpLoadBean> getAll() {
        String sql = "SELECT*FROM Filruploadbean";
        return getForList(sql);
    }

    @Override
    public FilrUpLoadBeanDAO get(int id) {
        String sql = "SELECT*FROM Filruploadbean WHERE id=?";
        return (FilrUpLoadBeanDAO) get(sql, id);
    }


    @Override
    public void Delete(int id) {
        String sql = "DELETE FROM Filruploadbean WHERE id=?";
        Updata(sql,id);
    }
}

FilrUpLoadBean

package com.zx.fileUpLoad.doMain;

public class FilrUpLoadBean {
    private int id;
    private String fileName;
    private String filePath;
    private String fileDesc;

    public FilrUpLoadBean() {
    }

    public FilrUpLoadBean(String fileName, String filePath, String fileDesc) {
        this.fileName = fileName;
        this.filePath = filePath;
        this.fileDesc = fileDesc;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public String getFilePath() {
        return filePath;
    }

    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }

    public String getFileDesc() {
        return fileDesc;
    }

    public void setFileDesc(String fileDesc) {
        this.fileDesc = fileDesc;
    }

    @Override
    public String toString() {
        return "FilrUpLoadBean{" +
                "id='" + id + '\'' +
                ", fileName='" + fileName + '\'' +
                ", filePath='" + filePath + '\'' +
                ", fileDesc='" + fileDesc + '\'' +
                '}';
    }
}

2.3.用配置文件限制能上传文件的扩展名等信息
src下的upload.properties

exts=pptx,docx,doc,java,mp4
file.max.size=1048576
total.file.max.size=5242880

FileUpLoadProperties

package com.zx.fileUpLoad.doMain;

import java.util.HashMap;
import java.util.Map;

public class FileUpLoadProperties {
    private FileUpLoadProperties(){}
    private Map<String,String>propertiess=new HashMap<>();
    private static FileUpLoadProperties instances=new FileUpLoadProperties();
    public static FileUpLoadProperties getInstances(){
        return instances;
    }

    public String getProperties(String key) {
        return propertiess.get(key);
    }

    public void putProperties(String key,String value) {
        this.propertiess .put(key,value);
    }
}

监听器ReadPropertiesFile

package com.zx.fileUpLoad.Listener;

import com.zx.fileUpLoad.doMain.FileUpLoadProperties;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import java.util.Properties;

public class ReadPropertiesFile implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        InputStream in = getClass().getClassLoader().getResourceAsStream("upload.properties");
        Properties properties = new Properties();
        try {
            properties.load(in);
            for (Map.Entry<Object, Object> pro : properties.entrySet()) {
                String propertiesName = (String) pro.getKey();
                String propertiesValue = (String) pro.getValue();
                System.out.println(propertiesName);
                System.out.println(propertiesValue);
                FileUpLoadProperties.getInstances().putProperties(propertiesName, propertiesValue);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}

若扩展名不合法所写的异常类
InvaildExtNameException

package com.zx.fileUpLoad.Exception;

public class InvaildExtNameException extends RuntimeException {
    public InvaildExtNameException(String message) {
        super(message);
    }
}

2.4.upLoadServlet

package com.zx.fileUpLoad.Servlet;

import com.zx.fileUpLoad.DAO.FilrUpLoadBeanDAO;
import com.zx.fileUpLoad.Exception.InvaildExtNameException;
import com.zx.fileUpLoad.doMain.FileUpLoadProperties;
import com.zx.fileUpLoad.doMain.FilrUpLoadBean;
import com.zx.fileUpLoad.imple.impFilrUpLoadBeanDAO;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.*;

public class upLoadServlet extends HttpServlet {
    private static final String File_Path = "/WEB-INF/files/";
    private static final String tempDirectoryPath="E:\\idea2018.1\\FileUpload\\tempDirectory";
private FilrUpLoadBeanDAO uploadFileDAO=new impFilrUpLoadBeanDAO();
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletFileUpload upload = getServletFileUpload();
        String FilePath=null;
// Set overall request size constraint
//        最大上传500m
        upload.setSizeMax(1024*1024*500);
        request.setCharacterEncoding("UTF-8");
        try {
            //把需要上传的items都放进该Map中
            Map<String, FileItem> upLoadFiles = new HashMap<>();
            //解析请求
            List<FileItem> items = upload.parseRequest(request);
            //1.构建FilrUpLoadBean的集合,同时填充upLoadFiles
            List<FilrUpLoadBean> beans = buildFilUpLoadBeans(items, upLoadFiles);
            //2.效验扩展名
            vaidateExtName(beans);
            //3.效验文件大小,解析时已经效验,我们只需通过异常得到结果
            //4.进行文件上传操作
            upload(upLoadFiles);
            //5.把上传信息保存到数据库
            savaUpLoadBean(beans);
            FilePath=request.getContextPath()+"WEB-INF/promt/success.jsp";
        } catch (Exception e) {
            FilePath=request.getContextPath()+"FileupLoad/upLoad.jsp";
            request.setAttribute("message",e.getMessage() );
            e.printStackTrace();
        }
request.getRequestDispatcher(FilePath).forward(request,response);
    }

    private void savaUpLoadBean(List<FilrUpLoadBean> beans) {
        uploadFileDAO.sava(beans);
    }

    private void upload(Map<String, FileItem> upLoadFiles) {
        for (Map.Entry<String, FileItem> upLoadFile : upLoadFiles.entrySet()) {
            upload(upLoadFile);
        }
    }

    private void upload(Map.Entry<String, FileItem> upLoadFile) {
        InputStream in = null;
        OutputStream outputStream = null;
        try {
            in = upLoadFile.getValue().getInputStream();
            outputStream = new FileOutputStream(upLoadFile.getKey());
            int len = 0;
            byte[] b = new byte[1024];
            while ((len = in.read(b)) != -1) {
                outputStream.write(b, 0, len);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private void vaidateExtName(List<FilrUpLoadBean> beans) {
        List<String> extsList = Arrays.asList(FileUpLoadProperties.getInstances().getProperties("exts").split(","));
        for (FilrUpLoadBean bean : beans) {
            String fileName=bean.getFileName();
            String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1);
            if (!extsList.contains(fileExt)) {
            //抛的该异常为自己写的异常类
                throw new InvaildExtNameException("文件扩展名不合法");
            }
        }
    }

    private List<FilrUpLoadBean> buildFilUpLoadBeans(List<FileItem> items, Map<String, FileItem> upLoadFiles) throws UnsupportedEncodingException {
        Map<String, String> formField = new HashMap<>();
        List<FilrUpLoadBean> fileUpLoadBeans = new ArrayList<>();
        buildFormField(items, formField);
        buildFileUpLoadBeans(items, upLoadFiles, formField, fileUpLoadBeans);

        return fileUpLoadBeans;
    }

    private void buildFileUpLoadBeans(List<FileItem> items, Map<String, FileItem> upLoadFiles, Map<String, String> formField, List<FilrUpLoadBean> fileUpLoadBeans) {
        for (FileItem item : items) {
            if (!item.isFormField()) {
                String fieldName = item.getFieldName();
                String index = fieldName.substring(fieldName.length() - 1);
                String fileName = item.getName();
                fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);
                String filePath = getFilePath(fileName);
                String s = "desc" + index;
                String fileDesc = formField.get(s);
                System.out.println(fieldName);
                System.out.println(fileName);
                System.out.println(filePath);
                System.out.println(fileDesc);
                FilrUpLoadBean filrUpLoadBean = new FilrUpLoadBean(fileName, filePath, fileDesc);
                fileUpLoadBeans.add(filrUpLoadBean);
                upLoadFiles.put(filePath, item);
            }
        }
    }

    private void buildFormField(List<FileItem> items, Map<String, String> formField) throws UnsupportedEncodingException {
        for (FileItem item : items) {
            if (item.isFormField()) {
                String name = item.getFieldName();
                String value =item.getString("UTF-8");
                formField.put(name, value);
            }
        }
    }

    private String getFilePath(String fileName) {
        String extName = fileName.substring(fileName.lastIndexOf("."));
        Random random = new Random();
        String filePath = getServletContext().getRealPath(File_Path) + "\\" + System.currentTimeMillis() + random.nextInt(100000) + extName;
        return filePath;
    }

   private ServletFileUpload getServletFileUpload() {
        //1.获取List
        // Create a factory for disk-based file items
        DiskFileItemFactory factory = new DiskFileItemFactory();

// Set factory constraints
        //如果上传文件超过了500k就把它放到tempDirectory下
        factory.setSizeThreshold(1024 * 500);
        File tempDirectory = new File(tempDirectoryPath);
        factory.setRepository(tempDirectory);

// Create a new file upload handler
        return new ServletFileUpload(factory);
    }
}

上传成功WEB-INF/promt目录下的success.jsp

<%--
  Created by IntelliJ IDEA.
  User: H
  Date: 2019/7/26
  Time: 12:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>success</title>
</head>
<body>
<h2>文件上传成功</h2>
<a href=${pageContext.servletContext.contextPath}"/FileupLoad/upLoad.jsp">return</a>
<a href=${pageContext.servletContext.contextPath}"queryAllServlet">下载文件</a>
</body>
</html>

文件的下载

从数据库获取路径等信息,从而提供下载资源目录等信息
DownLoad.jsp

<html>
<head>
    <title>Down.jsp</title>
</head>
<body>
<c:forEach items="${requestScope.filrUpLoadBeans}" var="filrUpLoadBean">
    FileName:${filrUpLoadBean.fileName}<br>
    Desc:${filrUpLoadBean.fileDesc}<br>
    <c:url var="downLoad" value="DownLoadServlet" scope="request">
        <c:param name="filePath" value="${filrUpLoadBean.filePath}"></c:param>
        <c:param name="fileName" value="${filrUpLoadBean.fileName}"></c:param>
    </c:url>
    <a href="${requestScope.downLoad}">下载</a><br>
    <c:url var="delete" value="DeleteServlet" scope="request">
        <c:param name="filePath" value="${filrUpLoadBean.filePath}"></c:param>
        <c:param name="id" value="${filrUpLoadBean.id}"></c:param>
    </c:url>
    <a href="${requestScope.delete}">Delete</a>
    <hr>
</c:forEach>
<a href="${pageContext.servletContext.contextPath}/index.jsp">index</a>
</body>
</html>

queryAllServlet.java

package com.zx.fileUpLoad.Servlet;

import com.zx.fileUpLoad.DAO.FilrUpLoadBeanDAO;
import com.zx.fileUpLoad.doMain.FilrUpLoadBean;
import com.zx.fileUpLoad.imple.impFilrUpLoadBeanDAO;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;


public class queryAllServlet extends HttpServlet {
    private static FilrUpLoadBeanDAO filrUpLoadBeanDAO=new  impFilrUpLoadBeanDAO();
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<FilrUpLoadBean>filrUpLoadBeans= filrUpLoadBeanDAO.getAll();
        request.setAttribute("filrUpLoadBeans",filrUpLoadBeans);
        request.getRequestDispatcher(request.getContextPath()+"/DownLoad/DownLoad.jsp").forward(request,response);
    }
}

DownLoadServlet.java

package com.zx.fileUpLoad.Servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class DownLoadServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("application/x-msdownload");
        String filePath = request.getParameter("filePath");
        String fileName = request.getParameter("fileName");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
//        response.setHeader("Content-Disposition", "attachment;filename=1.txt");
        OutputStream out = response.getOutputStream();
        InputStream in = new FileInputStream(filePath);
        int len = 0;
        byte[] b = new byte[1024];
        if ((len = in.read(b)) != -1) {
            out.write(b, 0, len);
        }
        in.close();
    }
}

DeleteServlet.java

package com.zx.fileUpLoad.Servlet;

import com.zx.fileUpLoad.DAO.FilrUpLoadBeanDAO;
import com.zx.fileUpLoad.imple.impFilrUpLoadBeanDAO;
import org.apache.commons.io.FileUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;

@WebServlet(name = "DeleteServlet")
public class DeleteServlet extends HttpServlet {
    FilrUpLoadBeanDAO filrUpLoadBeanDAO = new impFilrUpLoadBeanDAO();

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String idStr = request.getParameter("id");
        String filePath = request.getParameter("filePath");
        int id = Integer.parseInt(idStr);
        FileUtils.deleteQuietly(new File(filePath));
        filrUpLoadBeanDAO.Delete(id);
        response.sendRedirect("queryAllServlet");
    }


}

DownLoad目录下的DownLoad.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: H
  Date: 2019/7/26
  Time: 17:01
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Down.jsp</title>
</head>
<body>
<c:forEach items="${requestScope.filrUpLoadBeans}" var="filrUpLoadBean">
    FileName:${filrUpLoadBean.fileName}<br>
    Desc:${filrUpLoadBean.fileDesc}<br>
    <c:url var="downLoad" value="DownLoadServlet" scope="request">
        <c:param name="filePath" value="${filrUpLoadBean.filePath}"></c:param>
        <c:param name="fileName" value="${filrUpLoadBean.fileName}"></c:param>
    </c:url>
    <a href="${requestScope.downLoad}">下载</a><br>
    <c:url var="delete" value="DeleteServlet" scope="request">
        <c:param name="filePath" value="${filrUpLoadBean.filePath}"></c:param>
        <c:param name="id" value="${filrUpLoadBean.id}"></c:param>
    </c:url>
    <a href="${requestScope.delete}">Delete</a>
    <hr>
</c:forEach>
<a href="${pageContext.servletContext.contextPath}/index.jsp">index</a>
</body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>upLoadServlet</servlet-name>
        <servlet-class>com.zx.fileUpLoad.Servlet.upLoadServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>upLoadServlet</servlet-name>
        <url-pattern>/upLoadServlet</url-pattern>
    </servlet-mapping>
    <listener>
        <listener-class>com.zx.fileUpLoad.Listener.ReadPropertiesFile</listener-class>
    </listener>
    <servlet>
        <servlet-name>DownLoadServlet</servlet-name>
        <servlet-class>com.zx.fileUpLoad.Servlet.DownLoadServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DownLoadServlet</servlet-name>
        <url-pattern>/DownLoadServlet</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>queryAllServlet</servlet-name>
        <servlet-class>com.zx.fileUpLoad.Servlet.queryAllServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>queryAllServlet</servlet-name>
        <url-pattern>/queryAllServlet</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>DeleteServlet</servlet-name>
        <servlet-class>com.zx.fileUpLoad.Servlet.DeleteServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DeleteServlet</servlet-name>
        <url-pattern>/DeleteServlet</url-pattern>
    </servlet-mapping>
</web-app>

效果展示

在这里插入图片描述

点击文件上传
在这里插入图片描述
点击两次新增附件
在这里插入图片描述

点击删除
在这里插入图片描述
在这里插入图片描述

Submit
在这里插入图片描述

return接着提交

点击下载文件

在这里插入图片描述

点击下载
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值