Filter过滤器的写法

这里写的过滤器用的是适配器模式,思路为:

先写一个类实现Filter,然后在让你写的过滤器来继承自这个类;

 

步骤:1.建一个AbstractFilter实现Filter;2.建一个类来继承AbstractFilter,还要在web.xml中配置;

 

web.xml中的配置:

 

<filter>
		<filter-name>validateFilter</filter-name>
		<filter-class>com.peng.ValidateFilter(这里写的是类的完全限定名)</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>validateFilter</filter-name>
		<url-pattern>/*(这里是让所有的通过)</url-pattern>
	</filter-mapping>

 

 

Abstractr.java

 

 

public abstract class AbstractFilter implements Filter{

	public void destroy() {}

	public abstract void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException ;

	public void init(FilterConfig filterConfig) throws ServletException {}

}

 

 下面是我自己写的过滤器:我给他取名为  ValidateFilter;

 

ValidateFilter.java

 

 

package com.kaishengit.web.filter;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.kaishengit.entity.User;
import com.kaishengit.util.Const;

public class ValidateFilter extends AbstractFilter{

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) resp;
		
		//判断如果是index.jspx 放行
		String uri = request.getRequestURI();
		uri = uri.substring(uri.lastIndexOf("/")+1);
		//System.out.println("当前请求的路径: " + uri);
		
		
		
		if("".equals(uri) || "index.jsp".equals(uri) || "index.jspx".equals(uri) || "login.jspx".equals(uri) || uri.endsWith("png") || uri.endsWith("jpg")) {
			//所有人都能请求到的URI,放行
			chain.doFilter(request, response);
		} else {    //下面是判断是否有session,也就是用户是否已登录状态;                                                                                                                                        
			HttpSession session = request.getSession();
			User user = (User) session.getAttribute(Const.USER_IN_SESSION);
			if(user == null) {
				System.out.println("URI:" + uri + ">>>>访问被拒绝!");
				response.sendRedirect("index.jspx?code=10002");
			} else {
				chain.doFilter(request, response);
			}
		}	
		
	}

}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值