• Javaweb三大组件知识点记录


    Servlet

    生命周期

    1. 执行Servlet构造方法
    2. 执行init初始化方法
    3. 执行service方法
    4. 执行destroy销毁方法
      第一、二步只有在第一次访问创建Servlet时候会被调用。
      第三步,在每次放回都会调用。
      第4步只有web工程停止的时候才会执行。

    Servlet类的继承体系

    Servlet类的继承体系

    ServletConfig

    Servlet程序和ServletConfig对象都是由Tomcat负责创建,程序员负责使用。
    Servlet程序默认是第一次访问的时候场景,ServletConfig是每个Servlet程序创建时就创建一个对应的ServletConfig对象。

    ServletConfig类的三大作用

    1. 可以获取Servlet程序的别名servle-name的值
    2. 可以获取初始化参数init-param
    3. 获取ServletContext对象

    ServletContext类

    1.ServletContext是一个接口,它表示Servlet上下文对象。
    2.一个web工程中只有一个ServletContext对象实例
    3.ServletContext对象是一个域对象
    4.ServletContext是在web工程部署启动的时候创建,在web工程停止的时候销毁。

    什么是域对象?
    答:域对象是可以像Map一样存取数据的对象,叫域对象。这里的域指的是存取数据的操作范围。

    ServletContext类的四个作用

    1. 获取web.xml中配置的上下文参数context-param
    2. 获取当前的工程路径,格式:/工程路径
    3. 获取工程部署后在服务器硬盘上的绝对路径
    context.getRealPath("/")
    
    • 1

    在这里 / 斜杆被服务器解析地址为:http://ip:port/工程名/
    5. 像Map一样存取数据。

    HttpSevletRequest类

    作用:每次只要有请求进入Tomcat服务器, Tomcat 服务器就会把请求过来的HTTP协议信息解析好封装到Request对象中。然后传递到service方法( doGet和doPost)中给我们使用。我们可以通过HttpServletRequest对象,获取到所有请求的信息。

    常用方法

    i. getRequestURI() 获取请求的资源路径
    ii. getRequestURL () 获取请求的统一资源定位符 (绝对路径)
    iii. getRemoteHost () 获取客户端的ip地址
    iv. getHeader() 获取请求头
    v. getParameter( ) 获取请求的参数
    vi. getParameterValues( ) 获取请求的参数(多个值的时候使用)
    vii. getMethod( ) 获取请求的方式GET或POST
    viii. setAttribute(key, value); . 设置域数据
    ix. getAttribute(key); 获取域数据
    x. getRequestDispat cher( ) 获取请求转发对象

    请求的转发

    什么是请求转发?
    答:请求转发是指服务器收到请求后,从一次资源跳转到另一个服务器资源的操作。
    请求转发
    请求转发的特点:
    1、 浏览器地址栏没有变化。
    2、是一次请求。
    3、共享Request域中的数据。
    4、可以转发到WEB-INF目录下。
    5、不可以访问工程外的资源。

    HttpServletResponse类

    1.作用:HttpServletResponse类和HttpServletRequest类- -样。每次清求进来,Tomcat 服务器都会创建一个Response 对象传递给Servlet程序去使用。
    HttpSerletRequest 表示请求过来的信息,HttpSerletResponse 表示所有响应的信息,我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse对象来进行设置。

    两个输出流的说明

    字节流 getOutputStream(); 常用于下载(传递二进制数据)
    字符流 getWriter(); 常用于回传字符串(常用)
    两个流同时只能使用一个!

    响应中文乱码解决办法

    需要给响应流以及浏览器设置编码

    HttpServletResponse resp;
    // 设置服务器字符集为UTF-8
    resp.setCharacterEncoding("UTF-8");
    
    // 通过响应头,设置浏览器也使用UTF-8
    resp.setHeader("Content-type", "text/html;charset=UTF-8");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    或者使用下面代码,可以同时设置服务器和客户端都使用特定字符集

    resp.setContentType("text/html;charset=UTF-8");
    
    • 1

    需要注意的是,这个方法需要在获取流对象之前调用才有效!

    请求重定向

    什么是请求重定向?
    答:请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你新地址。你去新地址访问。叫请求重定向(因为之前的地址可能已经被废弃)。

    请求重定向

    两种使用方案

    1. 设置响应状态码加响应头
    resp.setStatus(302);
    resp.setHeader("Location", "地址");
    
    • 1
    • 2
    1. 直接使用sendRedirect
    resp.sendRedirect("地址");
    
    • 1

    JavaEE三层架构

    javaEE三层架构

    Listener监听器

    什么是Listener监听器?

    1、Listener监听器它是JavaWeb的三大组件之一。 JavaWeb的三大组件分别是: Servlet 程序、Filter 过滤器、Listener 监
    听器。
    2、Listener 它是JavaEE的规范,就是接口
    3、监听器的作用是,监听某种事物的变化。然后通过回调函数,反馈给客户(程序)去做- -些相应的处理。

    ServletContextListener监听器

    1.ServletContextListener它可以监听ServletContext对象的创建和销毁。
    2.ServletContext对象在web工程启动的时候创建,在web工程停止的时候销毁。
    3.监听到创建和销毁之后都会分别调用ServletContextListener监听器的方法反馈。

        // 在ServletContext对象创建之后马上调用,做初始化
        void contextInitialized(ServletContextEvent var1);
    	// 在ServletContext对象销毁之后调用。
        void contextDestroyed(ServletContextEvent var1);
    
    • 1
    • 2
    • 3
    • 4

    如何使用ServletContextListener监听器监听ServletContext对象?

    使用步骤如下:

    1. 编写一个类实现ServletContextListener
    2. 实现其两个回调方法
    3. 到web.xml中配置监听器

    Filter 过滤器

    什么是Filter过滤器?

    1. Filter过滤器是Java web三大组件之一。三大组件分别是Servlet程序、Listener监听器、Filter过滤器。
    2. Filter过滤器是个接口。
    3. Filter过滤器的作用是:拦截请求,过滤响应

    拦截请求的常见应用场景有:
    1.权限检查(登录后才能访问某些资源)
    2.日记操作
    3.事物管理
    。。。。等等

    Filter的生命周期

    Filter的生命周期包含几个方法:

    1. 构造器方法
    2. init初始化方法
      第一、二步,在web工程启动的时候就会执行。
    3. doFilter过滤方法
      每次拦截到请求的时候,第三步就会执行。
    4. destory销毁方法
      停止web工程的时候,就会执行销毁方法。

    FilterChain 过滤器链

    简单的说FilterChain就是多个过滤器联合工作。
    多个Filter联合工作
    多个Filter联合工作的时候,其执行顺序是根据其在配置文件中的顺序决定的。

    多个Filter过滤器执行的特点:

    1. 所有Filter和目标资源默认都执行在同一个线程中。
    2. 多个Filter共同执行的时候,它们都使用同一个Request对象。

    Filter过滤器拦截路径

    精确匹配

    <url-pattern>/xxx.jspurl-pattern>
    
    • 1

    以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/xxx.jsp

    目录匹配

    <url-pattern>/img/*url-pattern>
    
    • 1

    以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/img/*

    后缀名匹配

    <url-pattern>*.htmlurl-pattern>
    
    • 1

    以上配置的路径,表示请求地址必须以html结尾才会拦截到
    后缀名不一定是文件类型,任意字符可以

  • 相关阅读:
    一、C#入门
    一百七十七、Hive——海豚调度执行Hive的.sql文件
    ESP8266-Arduino编程实例-HDC2080温湿度传感器驱动
    【华为OD机试真题 JAVA】根据某条件聚类最少交换次数
    12张图一次性搞懂高性能并发容器ConcurrentLinkedQueue
    zabbix监控
    Allegro如何添加泪滴操作指导
    远程服务器上,再次配笔记1、2、11、12相同的深度学习和gcc环境
    终于有人把VMware虚拟机三种网络模式讲清楚了!
    JVM的类的生命周期
  • 原文地址:https://blog.csdn.net/qq_31063727/article/details/126321785