IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> JavaWeb三大组件(Servlet、Filter、Listener) -> 正文阅读

[系统运维]JavaWeb三大组件(Servlet、Filter、Listener)

目录

一、Servlet

二、Filter

1、概念

2、功能

3、Filter生命周期方法

4、拦截路径配置

5、拦截方式配置

6、?过滤器链执行顺序

7、Filter执行过程

8、登录案例

三、Listener

1、概念

2、方法

3、配置


一、Servlet

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

详细整理请参阅:Servlet知识点整理_秋风&的博客-CSDN博客

二、Filter

1、概念

当访问服务器的资源时,Filter过滤器可以将请求拦截下来,完成一些特殊的功能。

通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理。

一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤...

2、功能

它使用户可以改变一个request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response。

1. 在servlet被调用之前截获;

2. 在servlet被调用之前检查servlet request;

3. 根据需要修改request头和request数据;

4. 根据需要修改response头和response数据;

5. 在servlet被调用之后截获.

3、Filter生命周期方法

@WebFilter("/*")//访问任意资源,都会执行Filter过滤器
public class FilterDemo1 implements Filter {
    //在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
    public void init(FilterConfig filterConfig) throws ServletException {

    }
    //每一次请求被拦截资源时,会执行。执行多次
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //放行
        filterChain.doFilter(servletRequest,servletResponse);
    }
    //在服务器正常关闭后,Filter对象被销毁
    public void destroy() {
    }
}

4、拦截路径配置

????????????1. 具体资源路径: /index.jsp ? 只有访问index.jsp资源时,过滤器才会被执行
?? ??? ??? ?2. 拦截目录: /user/*?? ?访问/user下的所有资源时,过滤器都会被执行
?? ??? ??? ?3. 后缀名拦截: *.jsp?? ??? ?访问所有后缀名为jsp资源时,过滤器都会被执行
?? ??? ??? ?4. 拦截所有资源:/*?? ?访问所有资源时,过滤器都会被执行

5、拦截方式配置

????????设置dispatcherTypes属性
?? ??? ??? ??? ??? ?1. REQUEST:默认值。浏览器直接请求资源
?? ??? ??? ??? ??? ?2. FORWARD:转发访问资源
?? ??? ??? ??? ??? ?3. INCLUDE:包含访问资源
?? ??? ??? ??? ??? ?4. ERROR:错误跳转资源
?? ??? ??? ??? ??? ?5. ASYNC:异步访问资源

//直接请求或者转发访问,过滤器都会执行
@WebFilter(value = "/*",dispatcherTypes = {DispatcherType.FORWARD,DispatcherType.REQUEST})

6、?过滤器链执行顺序

????????????????1. 注解配置:按照类名的字符串比较规则比较,值小的先执行

????????????????2. web.xml配置: <filter-mapping>谁先定义,谁先执行。

7、Filter执行过程

?

8、登录案例

        //强制转换到HttpServletRequest
        HttpServletRequest request = (HttpServletRequest) req;
        //获取资源请求路径
        String uri = request.getRequestURI();//URI资源请求路径
        //判断是否包含登陆相关资源路径以及css/js/图片/验证码等资源
        if (uri.contains("/login.jsp") || uri.contains("/loginServlet") || uri.contains("/css/") || uri.contains("/js/") || uri.contains("/fonts/") || uri.contains("/checkCodeServlet")) {
            //成立则放行,去登录
            chain.doFilter(req, resp);
        } else {
            //不成立,验证用户是否登录
            Object user = request.getSession().getAttribute("user");
            if (user != null) {
                //已登陆,放行
                chain.doFilter(req, resp);
            } else {
                //未登录。转发到登录页面
                request.setAttribute("login_msg", "尚未登录,请先登录!");
                request.getRequestDispatcher("/login.jsp").forward(request, resp);
            }
        }

三、Listener

1、概念

注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码

2、方法

public class Listener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //ServletContext对象创建后会调用该方法
    }
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        //ServletContext对象被销毁之前会调用该方法
    }
}

3、配置

???????????????web.xml配置:

	<listener>
 		 <listenerclass>cn.itcast.web.listener.ContextLoaderListener</listener-class>
 	</listener>
 <!-- 指定初始化参数 -->
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
   </context-param>

????????注解配置:@WebListener

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 19:10:50  更:2022-03-30 19:15:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:56:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码