Servlet入门及其基本用法(下载文件,上传文件,BaseServlet)

本文详细介绍了如何使用Java Servlet进行文件下载和上传操作,包括设置响应头、读取文件流以及处理请求转发和重定向。同时,展示了BaseServlet的使用,以减少Servlet数量并优化代码结构,实现不同功能的方法调用。此外,还讨论了Cookie的管理和请求转发与重定向的区别及其应用场景。

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。(百度百科)

目录

下载文件:

上传文件:

 BaseServlet功能:

请求转发与重定向


 


下载文件:

设置好response的相应头格式

response.setContentType("application/force-download");
response.setHeader("Content-Disposition","attachment;filename=\""+filename+"\"");

关于响应头格式csdn上有很多优秀博主有详细介绍: @大小鱼鱼鱼与鱼.

文件的读取位置没放对很头疼,我把文件放置在这个位置:

@WebServlet( "/downServlet")
public class DownServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        OutputStream out;
        InputStream in;
        ServletContext servletContext = getServletContext();
      

        String filename = request.getParameter("filename");//获取请求文件名
        if(filename==null){
            out= response.getOutputStream();
            out.write("Please input filename".getBytes("utf-8"));
            out.close();
            return;
        }
        in=servletContext.getResourceAsStream("/WEB-INF/img/" +filename);//这里文件的路径要注意写对
        //设置响应正文的MIME类型
        response.setContentType("application/force-download");
        response.setHeader("Content-Disposition","attachment;filename=\""+filename+"\"");

        out= response.getOutputStream();
        int len=0;
        byte[]bys=new byte[1024];
        while((len=in.read(bys))!=-1){
            out.write(bys,0,len);//将输入流写到页面上
        }
        in.close();
        out.close();

        in= ServletContext.class.getResourceAsStream("/img/"+filename);

    }


}

html页面很简陋

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>down</title>
</head>
<body>
  <a href="/downServlet?filename=1.jpg" onclick="">点击下载图片1</a> <br>
  <a href="/downServlet?filename=2.jpg" onclick="">点击下载图片2</a>
</body>
</html>

效果:

上传文件:

使用fileuploadjar包配合 IO jar包,里面有工厂类.

同样要上传文件位置也要写对,这里我直接用绝对路径能省点事.

    private String filePath="E:\\develop\\files\\store";//文件放置目录
    private String tempFilePath="E:\\develop\\files\\store";//临时目录
@WebServlet("/upload")
public class upload extends HttpServlet {
    private String filePath="E:\\develop\\files\\store";//文件放置目录
    private String tempFilePath="E:\\develop\\files\\store";//临时
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值