Filter类其实也是servlet,它的作用是客户端请求到达时未达到servlet处理前拦截请求,可以对HttpServletRequest进行预处理,然后再把请求转交给后续的servlet处理;它也可会HttpServletResponse返回客户端前进行后处理。

Filter的通常用法:

1.用户授权判断,当用户请求达到时,验证用户是否已通过登录授权。

2.日志记录处理,记录用户特殊用户请求。

3.解码处理,负责对请求的内容统一进行解码。

Filter类需要实现javax.servlet.Filter接口,该接口有3个方法:init()、doFilter()、destroy()。

 Filter的配置:

1.可以使用注释方式,在filter类前使用@WebFilter注释,filterName属性指定filter名称,urlPatterns属性指定过滤路径。

2.在web.xml中配置方式

 

以使用Filter实际用户授权控制实例:

目录结构如下

Filter类

security目录下的资源需要授权后再能方式

login.jsp为登录页面,为了不引入新技术,没有使用struts,只使用html表单,表单的处理为login_proc.jsp。

login_proc.jsp为登录的处理页面(本应该使用servlet或者MVC框架来处理,为了省事而直接使用jsp页面,jsp其本质也是servlet),当用户名和密码均为admin时表示登录成功。

error.jsp为未授权访问security的提示页面。

firstfilter.java为Filter类,实现security访问授权控制。

 security/index.jsp文件内容:

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 <title>授权访问首页</title>
 8 </head>
 9 <body>
10 <% out.println("你好," + session.getAttribute("userName") + "!"); %>
11 </body>
12 </html>
security/index.jsp

相关文章:

  • 2021-10-24
  • 2021-12-11
  • 2021-11-26
  • 2021-07-28
猜你喜欢
  • 2022-12-23
  • 2021-10-11
  • 2022-12-23
  • 2022-01-18
  • 2021-09-03
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案