最新JavaWeb 监听器和过滤器,多线程面试题2024

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

目录:

部分内容截图:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

2、等待一段时间(30分钟)

3、调用session对象invalidate方法

/**

  • 关闭Session的Serlvet

  • @author xray

*/

@WebServlet(“/close.do”)

public class CloseSessionServlet extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//关闭Session

req.getSession().invalidate();

}

}

页面

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

统计网站用户人数

当前网站人数:${count}

安全退出

过滤器

=================================================================

可以对Web项目的各种资源进行过滤(页面、Servlet、图片、文件),也可以在网站资源进行请求和响应时,完成一些通用的功能。

如:每个Servlet都需要设置请求和响应的编码,可以把设置编码放到过滤器中,每个Servlet经过过滤器就完成编码设置工作。

过滤器的使用:

项目中可以创建多个过滤器,项目的资源可能会经过多个过滤器,多个过滤器就形成过滤器链。

在这里插入图片描述

实现步骤:

  1. 实现Filter接口

方法:

  • init 初始化

  • destroy 销毁

  • doFilter 过滤资源

doFilter的参数:

  • ServletRequest 请求对象

  • ServletResponse 响应对象

  • FilterChain 过滤器链

调用doFilter方法,对请求放行,不调用就拦截了

  1. 注册
  • web.xml注册

Filter1

com.qianfeng.java34.Filter1

Filter1

/test.jsp

如果要过滤所有资源:url-pattern设置为/*

过滤部分资源:/资源名,/资源名。。。

  • 注解注册

@WebFilter({“/*”})

@WebFilter({“/login.do”,“/register.do”})

案例:实现用户的登陆验证

1、添加过滤器过滤Web资源(除了login.jsp\login.do)

2、在过滤器中,判断Session中是否存在User对象

如果存在,就执行后面的操作

如果不存在,就跳转到login.jsp页面

3、在登陆成功后,将User对象存在Session中

/**

  • 用户登录验证的过滤器

*/

public class UserLoginFilter implements Filter{

public static final String[] NO_FILTER_URLS =

{“/login.jsp”,“/login.do”,“/code.do”};

@Override

public void destroy() {}

@Override

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)

throws IOException, ServletException {

MyLogger logger = new MyLogger(UserLoginFilter.class);

//获得Session对象

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) resp;

//判断如果是不拦截的URL,就放行

String url = request.getRequestURL().toString();

for(String surl : NO_FILTER_URLS){

if(url.endsWith(surl)){

chain.doFilter(req, resp);

logger.info(“不过滤URL:”+url);

return;

}

}

logger.info(“过滤URL:”+url);

//获得User对象

HttpSession session = request.getSession();

User user = (User) session.getAttribute(“user”);

//判断User对象为null,重定向到login.jsp页面

if(user == null){

logger.info(“当前URL没有登陆:”+url);

response.sendRedirect(“login.jsp”);

}else{

logger.info(“当前URL已经登陆:”+url);

//如果不为null,跳转到后面页面

chain.doFilter(req, resp);

}

}

最后

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

ain.doFilter(req, resp);

}

}

最后

[外链图片转存中…(img-H7nawAto-1715631293949)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值