当前位置:   article > 正文

Filter实现web未登录跳转到登录页面

java没有登陆之前自动跳转到登录页面

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.annotation.*;


import java.io.*;


@WebFilter(filterName="authority"

, urlPatterns={"/*"}

, initParams={

@WebInitParam(name="encoding", value="GBK"),

@WebInitParam(name="loginPage", value="/login.jsp"),

@WebInitParam(name="proLogin", value="/proLogin.jsp")})

public class AuthorityFilter implements Filter 

{

//FilterConfig可用于访问Filter的配置信息

private FilterConfig config;

//实现初始化方法

public void init(FilterConfig config)

{

this.config = config; 

}

//实现销毁方法

public void destroy()

{

this.config = null; 

}

//执行过滤的核心方法

public void doFilter(ServletRequest request,

ServletResponse response, FilterChain chain)

throws IOException,ServletException

{

//获取该Filter的配置参数

String encoding = config.getInitParameter("encoding");

String loginPage = config.getInitParameter("loginPage");

String proLogin = config.getInitParameter("proLogin");

//设置request编码用的字符集

request.setCharacterEncoding(encoding); //①

HttpServletRequest requ = (HttpServletRequest)request;

HttpSession session = requ.getSession(true);

//获取客户请求的页面

String requestPath = requ.getServletPath();

//如果session范围的user为null,即表明没有登录

//且用户请求的既不是登录页面,也不是处理登录的页面

if( session.getAttribute("user") == null

&& !requestPath.endsWith(loginPage)

&& !requestPath.endsWith(proLogin))

{

//forward到登录页面

request.setAttribute("tip" , "对不起,您还没有登录!");

request.getRequestDispatcher(loginPage)

.forward(request, response);

}

//"放行"请求

else

{

chain.doFilter(request, response);

}

}


转载于:https://my.oschina.net/u/2418824/blog/599307

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/lpred/article/detail/61358
推荐阅读
相关标签
  

闽ICP备14008679号