资讯详情

千峰 Servlet

千峰 Servlet

温老师 https://www.bilibili.com/video/BV1Ga4y1Y7Ah 

课程目标:

  1. CS/BS 架构
  2. Tomcat
  3. Servlet
  4. Servlet应用
  5. Cookie/Session
  6. Filter 管理器

958794123

一、引言

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-grwMaBSy-1639054040115)(E:\app\Typora\img\image-20211114141842107.png)]

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-zDk833UC-1639054040117)(E:\app\Typora\img\image-20211114141953536.png)]

二 、服务器

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-y5bxgsJv-1639054040118)(E:\app\Typora\img\image-20211114142119618.png)]

2.2 常见服务器

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-JvFqY6KG-1639054040120)(E:\app\Typora\img\image-20211114142423176.png)]

2.3 Tomcat 服务器

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-LylUFyup-1639054040123)(E:\app\Typora\img\image-20211114145414178.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vCq8Nnnt-1639054040125)(E:\app\Typora\img\image-20211114145453543.png)]

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-aqv6JggL-1639054040127)(E:\app\Typora\img\image-20211114145938690.png)]

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-vqjBoPEX-1639054040130)(E:\app\Typora\img\image-20211114150152964.png)]

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-f9dITkAN-1639054040131)(E:\app\Typora\img\image-20211114150251902.png)]

2.6 项目部署及访问静态资源

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-RXoIt4Kj-1639054040133)(E:\app\Typora\img\image-20211114150335983.png)]

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-9Qnwq9QA-1639054040135)(E:\app\Typora\img\image-20211114151121164.png)]

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-vHTfIjM4-1639054040138)(E:\app\Typora\img\image-20211114151151594.png)]

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-8WZ3s0eg-1639054040140)(E:\app\Typora\img\image-20211114151218179.png)]

2.7 常见错误

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-3OxTnGbj-1639054040141)(E:\app\Typora\img\image-20211114151243909.png)]

三、 Servlet 【重点】

3.1 概念

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-NVlJrZbe-1639054040143)(E:\app\Typora\img\image-20211114151429566.png)]

3.2 开发步骤

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-k4BgFL7G-1639054040145)(E:\app\Typora\img\image-20211114151511547.png)]

3.2.2 编写Servlet

 public class servlet implements Servlet { 
             @Override     public void init(ServletConfig servletConfig) throws ServletException { 
             }     @Override     public ServletConfig getServletConfig() { 
                 return null;     }     @Override     public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { 
                System.out.println("My First Servlet!");
    }
    @Override
    public String getServletInfo() { 
        
        return null;
    }
    @Override
    public void destroy() { 
        
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5FBLmuJ-1639054040147)(E:\app\Typora\img\image-20211114152950630.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-77Md4cyI-1639054040149)(E:\app\Typora\img\image-20211114152909983.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HdwXLKVD-1639054040150)(E:\app\Typora\img\image-20211114153346409.png)]

检查Servlet是否编写异常

四、使用Idea创建web项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ihzy4njJ-1639054040153)(E:\app\Typora\img\image-20211114153641470.png)]

4.2 Idea开发Servlet

  1. 编写Servlet
  2. 配置web.xml
  3. 部署web.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BWN3shgX-1639054040155)(E:\app\Typora\img\image-20211114154138920.png)]

导入第三方jar包

4.4.2 导出war包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UiPLoDcu-1639054040157)(E:\app\Typora\img\image-20211114195635104.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ZW3Ko47-1639054040159)(E:\app\Typora\img\image-20211114200828019.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l3LAGQ2l-1639054040161)(E:\app\Typora\img\image-20211114200847467.png)]

五、HTTP协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bzk4nyKw-1639054040163)(E:\app\Typora\img\image-20211114200918581.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JpeAvVlb-1639054040165)(E:\app\Typora\img\image-20211114201022119.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UwhP5pAo-1639054040167)(E:\app\Typora\img\image-20211114201414195.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xw7Y3IEQ-1639054040169)(E:\app\Typora\img\image-20211114201428873.png)]

5.4 请求报文

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3LWdrAJn-1639054040171)(E:\app\Typora\img\image-20211114201603885.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SL9P6inx-1639054040173)(E:\app\Typora\img\image-20211114201638620.png)]

响应报文

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zAcFs20N-1639054040175)(E:\app\Typora\img\image-20211114201913158.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ebemN07e-1639054040176)(E:\app\Typora\img\image-20211114202025607.png)]

状态码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XIEJJ7wv-1639054040180)(E:\app\Typora\img\image-20211114202111358.png)]

六、Servlet详解【重点】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LTGENkdH-1639054040184)(E:\app\Typora\img\image-20211114202234865.png)]

6.1.2 GenericServlet 抽象类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-miFHfijc-1639054040186)(E:\app\Typora\img\image-20211114202532749.png)]

6.2 两种方式创建Servlet

  • 实现接口Servlet

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BXHAddos-1639054040188)(E:\app\Typora\img\image-20211114211434124.png)]

该方式比较麻烦,需要实现接口中的所有方法

  • 继承HttpServlet

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T0419Ni9-1639054040189)(E:\app\Typora\img\image-20211114211519850.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l8P85k51-1639054040191)(E:\app\Typora\img\image-20211114211621436.png)]

6.3 Servlet的两种配置方式

6.3.1 使用web.xml (Servlet2.5之前使用)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Frx5F9Op-1639054040195)(E:\app\Typora\img\image-20211114212011161.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EaAwkRcL-1639054040197)(E:\app\Typora\img\image-20211114212104571.png)]

6.3.2 使用注解(Servlet3.0后支持,推荐)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rf3nSFu1-1639054040199)(E:\app\Typora\img\image-20211114215218333.png)]

七、Servlet应用【重点】

7.1 request 对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3VUTLwf0-1639054040201)(E:\app\Typora\img\image-20211114220345042.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z9ZTzn8D-1639054040203)(E:\app\Typora\img\image-20211114220409019.png)]

7.1.2 request 主要方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pe8uAsop-1639054040206)(E:\app\Typora\img\image-20211114220526641.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f4NsSaV3-1639054040207)(E:\app\Typora\img\image-20211114221937313.png)]

7.1.5 中文乱码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kNL8TGQg-1639054040209)(E:\app\Typora\img\image-20211114222013659.png)]

7.2 response 对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hbxjd8sH-1639054040212)(E:\app\Typora\img\image-20211114222947677.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aQEYE3QS-1639054040218)(E:\app\Typora\img\image-20211114224533410.png)]

7.2.2 解决输出中文乱码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1k8gEe3k-1639054040220)(E:\app\Typora\img\image-20211114224621148.png)]

7.3 综合案例(Servlet + JDBC)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2EfB4GSC-1639054040221)(E:\app\Typora\img\image-20211114224933344.png)]

八、转化与重定向

8.1 现有问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NYMGSExT-1639054040223)(E:\app\Typora\img\image-20211115221154420.png)]

8.1.1 业务、显示分离

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q1GOxxTl-1639054040224)(E:\app\Typora\img\image-20211115221633430.png)]

8.2 转发

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vz2URndR-1639054040226)(E:\app\Typora\img\image-20211115221751410.png)]

8.2.2 数据传递

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WaUEdrde-1639054040231)(E:\app\Typora\img\image-20211115223242881.png)]

8.2.3 转发的特点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qd2nGUSy-1639054040233)(E:\app\Typora\img\image-20211115224409432.png)]

8.3 重定向

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OaxulIft-1639054040235)(E:\app\Typora\img\image-20211115224847724.png)]

8.3.2 数据传递

  • Response 传递数据 只能是String类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZYipDNrt-1639054040237)(E:\app\Typora\img\image-20211115225130132.png)]

8.3.3 重定向的特点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-488TMKyp-1639054040239)(E:\app\Typora\img\image-20211115225402567.png)]

8.4 转发、重定向总结

  • 不建议使用sendRedirect进行传递数据,明文传递数据不安全

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ohrOIXpO-1639054040242)(E:\app\Typora\img\image-20211115225457977.png)]

九、Servlet 生命周期

9.1 生命周期的是个阶段

9.1.1 实例化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LbFRKbTL-1639054040245)(E:\app\Typora\img\image-20211115225720696.png)]

9.1.2 初始化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x6Kc1Lsu-1639054040249)(E:\app\Typora\img\image-20211115225833487.png)]

9.1.3 服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FLc0V9pz-1639054040254)(E:\app\Typora\img\image-20211115225845412.png)]

9.1.4 销毁

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H62036uT-1639054040257)(E:\app\Typora\img\image-20211115225858488.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yHqA7mtA-1639054040258)(E:\app\Typora\img\image-20211115230228125.png)]

@WebServlet("/ls")
public class LifeServlet implements Servlet { 
        
    public LifeServlet(){ 
        
        System.out.println("1、实例化");
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException { 
        
        System.out.println("2、初始化");
    }
    @Override
    public ServletConfig getServletConfig() { 
        
        return null;
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { 
        
        System.out.println("3、接收请求,响应结果");
    }
    @Override
    public String getServletInfo() { 
        
        return null;
    }
    @Override
    public void destroy() { 
        
        System.out.println("4、销毁");
    }
}

十、Servlet特性

10.1 线程安全问题

Servlet的成员变量 message

10.2 如何保证线程安全

既能解决线程安全、又能解决性能问题 就是局部变量了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o6p2yrKu-1639054040259)(E:\app\Typora\img\image-20211115231545580.png)]

@WebServlet(name = "NumberServlet",value = "/numberServlet")
public class NumberServlet extends HttpServlet { 
        
    // 成员变量只有一份
// private int number;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        
        // 局部变量
        int number = 1;
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        out.print("您的数字是:" + number);
        number++;
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
        
        doGet(req, resp);
    }
}

十一、状态管理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UvNlaM30-1639054040262)(E:\app\Typora\img\image-20211116211825604.png)]

十二、Cookie 的使用

12.1 什么是 Cookie

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pc3EmtoN-1639054040275)(E:\app\Typora\img\image-20211116212025193.png)]

12.2 创建 Cookie

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTOpMdYt-1639054040277)(E:\app\Typora\img\image-20211116213137177.png)]

12.3 获取 Cookie

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZCtlWEHG-1639054040279)(E:\app\Typora\img\image-20211116214052841.png)]

  • 防止Cookie为空,获取完Cookie后要判断

12.4 修改 Cookie

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EdKrixDU-1639054040280)(E:\app\Typora\img\image-20211116215754764.png)]

12.5 Cookie 编码与解码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f7LD9yLX-1639054040282)(E:\app\Typora\img\image-20211116220618103.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8duAoUKU-1639054040283)(E:\app\Typora\img\image-20211116220450003.png)]

12.6 Cookie 的优点和缺点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jykd2vy7-1639054040284)(E:\app\Typora\img\image-20211116220519098.png)]

十三、Session对象 【重点】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DnjoA8TZ-1639054040286)(E:\app\Typora\img\image-20211116220717409.png)]

13.3 Session 使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ujWF0Vbj-1639054040288)(E:\app\Typora\img\image-20211116220931596.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3T8chJbq-1639054040289)(E:\app\Typora\img\image-20211116222045968.png)]

13.4 Session 与 request 的区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YjY5kEdK-1639054040290)(E:\app\Typora\img\image-20211116222644497.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yjFX8tAO-1639054040293)(E:\app\Typora\img\image-20211116222730858.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fTYLsZ4d-1639054040294)(E:\app\Typora\img\image-20211116222756744.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7wmVwMZj-1639054040296)(E:\app\Typora\img\image-20211116222817594.png)]

13.5 Session 的生命周期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p1JqulK7-1639054040297)(E:\app\Typora\img\image-20211116222944480.png)]

13.4 浏览器禁用Cookie解决方案【了解】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i1PGHkr1-1639054040298)(E:\app\Typora\img\image-20211116223523283.png)]

13.5 Session实战权限验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TwyRnQwL-1639054040305)(E:\app\Typora\img\image-20211116224103549.png)]

13.6 Session 实战保存验证码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wjKoF5Ie-1639054040308)(E:\app\Typora\img\image-20211116225139483.png)]

十四、ServletContext对象【重点】

14.1 ServletContext概述

14.2 获取 ServletContext 对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AGx1fkFi-1639054040329)(E:\app\Typora\img\image-20211116225814510.png)]

14.3 ServletContext 作用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXB5H29A-1639054040333)(E:\app\Typora\img\image-20211117203446755.png)]

14.4 ServletContext 特点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PUOS1hKW-1639054040335)(E:\app\Typora\img\image-20211117203507972.png)]

14.5 ServletContext 应用场景

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wyq1xY2F-1639054040338)(E:\app\Typora\img\image-20211117203641184.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xdjldVHQ-1639054040340)(E:\app\Typora\img\image-20211117203711500.png)]

14.6 作用域总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-byPewpWU-1639054040342)(E:\app\Typora\img\image-20211117203751672.png)]

十五、过滤器【重点】

15.1 现有问题

15.2 概念

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d0VRJeDX-1639054040343)(E:\app\Typora\img\image-20211117203922374.png)]

15.3 过滤器作用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W7B8cP03-1639054040345)(E:\app\Typora\img\image-20211117204152823.png)]

15.4 编写过滤器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zXDvyks4-1639054040347)(E:\app\Typora\img\image-20211117204259040.png)]

@WebFilter(filterName = "MyFilter",value = "/t")
public class MyFilter implements Filter { 
        
    @Override
    public void destroy() { 
        
    }
    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { 
        
        System.out.println("过滤前 -- MyFilter--");
        chain.doFilter(req, resp);
        System.out.println("过滤后 --end--");
    }
    @Override
    public void init(FilterConfig config) throws ServletException { 
        
    }
}

15.5 过滤器配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-idIPwCKS-1639054040348)(E:\app\Typora\img\image-20211117205039775.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LZTnNzo1-1639054040349)(E:\app\Typora\img\image-20211117205059155.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmbuouVj-1639054040350)(E:\app\Typora\img\image-20211117205250700.png)]

15.6 过滤器链和优先级

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rgz9hdiJ-1639054040352)(E:\app\Typora\img\image-20211117205320389.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SraBLQhH-1639054040354)(E:\app\Typora\img\image-20211117205642152.png)]

15.7 过滤器的典型应用

15.7.1 过滤器解决编码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HlNQGFIs-1639054040357)(E:\app\Typora\img\image-20211117210354759.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yeA4nWey-1639054040358)(E:\app\Typora\img\image-20211117210939492.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8tnFKTad-1639054040360)(E:\app\Typora\img\image-20211117210731725.png)]

15.7.2 权限验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-05zqi307-1639054040361)(E:\app\Typora\img\image-20211117211005369.png)]

十六、综合案例(EMS)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I055CjEL-1639054040362)(E:\app\Typora\img\image-20211117211543104.png)]

补充

https://www.bilibili.com/video/BV1Ta4y1H7Vc?p=39

1. 文件上传

1.1 前台页面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2TuVviax-1639054040363)(E:\app\Typora\img\image-20211117231114016.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RuN4xDPb-1639054040364)(E:\app\Typora\img\image-20211117231229418.png)]

1.2 后台实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tNFEwF6R-1639054040365)(E:\app\Typora\img\image-20211117231322708.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F2VQO20p-1639054040367)(E:\app\Typora\img\image-20211117231355439.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fRGIIoQk-1639054040368)(E:\app\Typora\img\image-20211117231625400.png)]

2. 文件下载

2.1 超链接下载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D9o3yVOt-1639054040370)(E:\app\Typora\img\image-20211117233229691.png)]

<!-- 浏览器能够识别的文件 默认打开-->
<a href="./download/test.txt">文本文件</a>
<a href="./download/test.jpg">图片文件</a>
<!-- 浏览器不能识别的文件 默认下载-->
<a href="./download/test.zip">压缩文件</a>
<hr>
<!-- 浏览器下载可识别的文件 download属性 -->
<a href="./download/test.txt" download>文件</a>
<a href="./download/test.jpg" download="比萨斜塔.jpg">文件</a>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Ge2sF9K-1639054040371)(E:\app\Typora\img\image-20211117233732016.png)]

2.2 后台实现下载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KxGWRBmN-1639054040373)(E:\app\Typora\img\image-20211117234522405.png)]

<form action="/Servlet/downloadServlet">
    文件名:<input type="text" name="fileName" placeholder="请输入要下载的文件名">
    <button>下载</button>
</form>
@WebServlet(name = "DownloadServlet",value = "/downloadServlet")
public class DownloadServlet extends HttpServlet { 
        
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
        
        System.out.println("文件下载 ....");
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        String fileName = request.getParameter("fileName");
        if(fileName==null || "".equals(fileName.trim())){ 
        
            System.out.println("文件名输入为空");
            response.getWriter().write("请输入要下载的文件名!");
            response.getWriter().close();
            return;
        }
        // 得到图片存放的路径
        String path = request.getServletContext().getRealPath("/download/");
        // 通过路径得到File对象
        File file = new File(String.valueOf(Path.of(path,fileName)));
        // 判断文件对象是否存在,并且是一个标准文件
        if(file.exists() && file.isFile()){ 
        
            System.out.println("下载文件:"+file.getPath());
            // 设置响应类型(浏览器无法使用某种方式或激活某个程序来处理MIME类型)
            response.setContentType("application/x-msdownload");
            // 设置响应头
            response.setHeader("Content-Disposition","attachment;filename="+fileName);
            // 得到输入流
            FileInputStream fis = new FileInputStream(file);
            byte[] bytes = new byte[1024];
            ServletOutputStream out = response.getOutputStream();
            int len = 0;
            while((len=fis.read(bytes))!=-1){ 
        
                out.write(bytes);
            }
            // 关闭流
            out.close();
            fis.close();
        }else{ 
        
            System.out.println("文件不存在");
            response.getWriter().write("文件不存在,请重试!");
            response.getWriter().close();
        }

    }

3. 监听器

https://www.bilibili.com/video/BV1mE411h7Co?p=280

3.1 Servlet 监听器的概述

3.1.1 什么是监听器

监听器就是一个

标签: aqv光耦继电器aqv201ax电磁继电器aqv252g3a固态继电器aqv234a固态继电器aqv210ls固态继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台