JavaWeb-过滤器

本文介绍Web应用程序中的过滤器概念及其实现方法,包括如何通过过滤器对请求进行预处理及响应后处理,以及如何在web.xml中配置过滤器。

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

什么是过滤器?

过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理,通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理。

过滤器语法格式

创建一个类实现Filter接口

public class MyFilter implements Filter{}

重写接口中的方法

public void destroy() { //销毁的方法}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
//过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理
	chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
/*初始化方法 接收一个FilterConfig类型的参数 该参数是对Filter的一些配置*/
}

在web.xml文件中配置

<filter>
	<filter-name>过滤器名称</filter-name>
	<filter-class>过滤器所在的路径</filter-class>
</filter>
<filter-mapping>
	<filter-name>过滤器名称</filter-name>
	<url-pattern>需要过滤的资源</url-pattern>
</filter-mapping>

多个过滤器执行顺序

先执行的后结束
后执行的先结束

统一设置编码方式

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
//过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理
	HttpServletReqeust requst = (HttpServletRequest)req;
	requst.setCharacterEncoding("utf-8");
	FilterChain.doFilter(req, resp);//调取下一个servlet或filter
}

通过过滤器来禁止特定用户访问页面

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
//过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理
	HttpServletRequest request = (HttpServletRequest)req;
	HttpServletRequest response = (HttpServletResponse)resp;
	requst.setCharacterEncoding("utf-8");
	String username = request.getSession().getAttribute("username");
	String requestURI = request.getRequestURI();//获取请求地址
	if(requestURI.endsWith("/") || requestURI.endsWith("error.jsp")||requestURI.endsWith("login.jsp"||username!=null){
		FilterChain.doFilter(req, resp);//调取下一个servlet或filter
	}else{
	response.sendRedirect("/Error.jsp");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值