Java-过滤器重定向到登录页面

开发工具与关键技术:Java/MyEclipse 10
作者:张俊辉
撰写时间:2019年08月8日

本文章是以登录后把用户信息保存到Session中为依据写的过滤器,当请求的页面有用户信息的Session时则不作处理,继续运行,当请求的页面没有用户信息的Session时,则重定向到登录页面。
过滤器的配置如下:

<filter>
  	<filter-name>RedirectFilter</filter-name>
  	<filter-class>com.zjh.filter.RedirectFilter</filter-class>
 </filter>
 <filter-mapping>
  	<filter-name>RedirectFilter</filter-name>
  	<url-pattern>/jsp/*</url-pattern>
  	<url-pattern>/servlet/*</url-pattern>
 </filter-mapping>

在写路径url-pattern时注意不要包含一些公共的css、或js文件,如果包含这些文件,你的页面将读取不了这些css与js文件。
过滤器代码如下:

public class RedirectFilter implements Filter{
	private FilterConfig filterConfig;
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
	}
	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		// TODO Auto-generated method stub		
		//判断是否是登录方法与验证码图片的servlet	if(!"/servlet/LoginServlet".equals(((HttpServletRequest)arg0).getServletPath())&&!"/servlet/IdentityServlet".equals(((HttpServletRequest)arg0).getServletPath())){
			HttpSession session=((HttpServletRequest)arg0).getSession();
			UserPo userS=(UserPo)session.getAttribute("userS");
			//判断用户信息Session是否为空
			if(userS==null){
				//为空则重定向
				HttpServletResponse response=(HttpServletResponse) arg1; 
				response.sendRedirect("/ERP/servlet/LoginServlet");
			}else{
				//不为空则通行
				arg2.doFilter(arg0, arg1);
			}
		}else{
			//如果是就放其通过
			arg2.doFilter(arg0, arg1);
		}
	}
	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		this.filterConfig=arg0;
	}
}

排除登录方法servlet是因为登录本就用于创建用户信息的Session,因此在登录方法中便找不到用户信息的Session,如果不排除他,则页面会不断的重定向,成了个死循环。如下图:
在这里插入图片描述
排除验证码是因为登录页面需要显示验证码图片,如果过滤掉那么登录页面中的验证码便会显示找不到图片。如下图:
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值