java 过滤器

package com.web.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CheckLoginFilter implements Filter{
	
	protected FilterConfig filterConfig = null;
	private String redirectURL = null;
	private List<String> notCheckURLList = new ArrayList<String>();

	public void doFilter(ServletRequest servletRequest,ServletResponse servletResponse, FilterChain filterChain)
			throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) servletRequest;
		HttpServletResponse response = (HttpServletResponse) servletResponse;

		String userId=null;
		//检查用户cookie
		Cookie cookies[] = request.getCookies(); 
		Cookie sCookie = null; 
		String svalue = null; 
		String sname = null; 
		
		if(cookies!=null){
			for(int i=0;i<cookies.length;i++){ 
				sCookie = cookies[i]; 
				svalue = sCookie.getValue(); 
				sname = sCookie.getName();
				
				if (sname.equals("usermsg")) {
					userId = svalue;
				}
			}
		}
		
		//检查失败
		if ((!checkRequestURIIntNotFilterList(request))&& userId==null) {
			response.sendRedirect(redirectURL);
			return;
		}
		request.getSession().removeAttribute("user_id");
		request.getSession().setAttribute("user_id", userId);
		filterChain.doFilter(servletRequest, servletResponse);
	}
	private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) {
		String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
		return notCheckURLList.contains(uri);
	}
	
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
		redirectURL = filterConfig.getInitParameter("redirectURL");
		String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");

		if (notCheckURLListStr != null) {
			StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
			notCheckURLList.clear();
			while (st.hasMoreTokens()) {				
				notCheckURLList.add(st.nextToken());
			}
		}
	}
	public void destroy() {
		
	}
	
}


web.xml 配置

<filter>
  	<filter-name>checklogin</filter-name>
  	<filter-class>com.web.util.CheckLoginFilter</filter-class>
  	<init-param> 
      <param-name>redirectURL</param-name> 
      <param-value>../error.jsp</param-value> 
   </init-param> 
   <init-param> 
      <param-name>notCheckURLList</param-name> 
      <param-value>/jsp/register.jsp</param-value> 
   </init-param> 
  </filter>
  
  <filter-mapping> 
   <filter-name>checklogin</filter-name> 
   <url-pattern>/jsp/a/*</url-pattern> 
  </filter-mapping> 
   <filter-mapping> 
   <filter-name>checklogin</filter-name> 
   <url-pattern>/jsp/b/*</url-pattern> 
  </filter-mapping> 
  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值