javaweb三大组件简单介绍

本文介绍了JavaWeb的三大核心组件:Servlet、过滤器(Filter)和监听器(Listener)。Servlet生命周期中,首次访问时创建单例对象,后续访问共享此对象,可能存在线程安全问题。过滤器适用于用户登录验证和设置统一字符编码等场景,它拦截请求并在请求到达目标Servlet前处理。监听器则用于监听对象状态变化,包括ServletContext、HTTPSession和ServletRequest的生命周期及属性变化事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

Servlet

**
Servlet生命周期

第一次访问Servlet的时候创建对象,整个项目只有一个对象
第二次以后访问:访问的通过一个对象。
死亡:相关关闭
单列:懒汉模式
只在访问时才创建
Servlet线程不安全问题
多次访问共用一个对象,如果该对象包含数据域就有可能出现线程不安全的问题
不建议在Servlet中定义全局属性,特别是参数。

ServletContext
(1)ServletContext管理所有servlet,ServletContext是servlet他爹。
(2)ServletContext生命周期:天地同寿,项目启动就有了。
(3)ServletContext也是域对象,生命周期最长的对象,不要轻易往ServletContext写数据。
**

过滤器filter

**
使用场景
(1)用户登录之后,将用户信息放置到Session中,访问一些个人相关的页面,只有session存在的用户信息才能访问(只有登录成功之后才能访问)。
访问所有的Servlet之前都需要先从Session里面去除用户信息进行判断
(2)设置字符编码,在所有的Servlet里面都需要写
解决:使用filter
filter是什么
这个filter 就相当于路上的关卡,设了几道关卡就要拦截几次,只要有一个过滤器没通过,这个请求就结束了。

Filter配置

Web.xml
在这里插入图片描述

注解方式

在这里插入图片描述

package com.huadian.filter;

import com.huadian.entity.User;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebFilter(filterName = "demo1Filter",urlPatterns = {"/servlet/*"})
public class demo1Filter implements Filter {
    public void destroy() {
        System.out.println("destroy");
    }
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        System.out.println("doFilter");
        HttpServletRequest request= (HttpServletRequest) req;
        HttpServletResponse response= (HttpServletResponse) resp;
        resp.setContentType("text/html;charset=utf-8");
        String uri=request.getRequestURI();
        User user=(User) request.getAttribute("user");
        if (user!=null||uri.contains("login"))
        {
            chain.doFilter(req,resp);
        }
        else
        {
            response.getWriter().write( "{\"code\":1,\"message\":\"未登入\"}" );
        }
    }

    public void init(FilterConfig config) throws ServletException {
        System.out.println("init");
    }

}

**

监听器Listener

**

**

是什么

**

监听器就是监听某一个对象的状态,发生改变的组件。
事件源:被监听的对象。
监听器:监听事件源的对象
相应的行为:监听的事件发生了,应该怎么处理

8个监听器

在这里插入图片描述

前6个是对3个域对象(ServletContext、HTTPSession、ServletRequest)的监听,每个与对象分别对应(监听创建和销毁)(属性 的变化)
HTTPSessionBindingListener:
用户成功登陆后,一般会将用户信息(user)存储在session中,会触发该事件,从session中奖User对象移除时,也会触发该事件、
HttpSessionActivationListener:
钝化:将内存中的session持久化到磁盘中,
活化:将磁盘上的session回复到内存中
创建监听器:
(1)配置文件
在这里插入图片描述

方式二:注解

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值