登陆过滤 Session失效,跳转回login页面方法介绍



登陆过滤 Session失效,跳转回login页面方法介绍。

登陆过滤类;

public class LoginFilter implements Filter {

private FilterConfig config;
private String logon_page;
private String home_page;

public void destroy() {
config = null;
}

public void init(FilterConfig filterconfig) throws ServletException {
// 从部署描述符中获取登录页面和首页的URI
config = filterconfig;
logon_page = filterconfig.getInitParameter(“LOGON_URI”);
home_page = filterconfig.getInitParameter(“HOME_URI”);

if(null == logon_page || null == home_page) {
throw new ServletException(“没有找到登录页面或主页”);
}
}

@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse rsp = (HttpServletResponse) response;

Login login =(Login) req.getSession().getAttribute(“login”);
String request_uri = req.getRequestURI().toUpperCase(); //得到用户请求的URI
System.out.println(request_uri);
String ctxPath = req.getContextPath(); //得到web应用程序的上下文路径
String uri = request_uri.substring(ctxPath.length()); //去除上下文路径,得到剩余部分的路径
try {

if(!request_uri.equals(“/LEAMEDCALL/LOGIN”) && login == null) {
System.out.println(“***********************************”);
rsp.sendRedirect(home_page+logon_page);
// PrintWriter out = rsp.getWriter();
// out.println(“<script type=’text/javascript’>window.parent.location=’”+home_page+logon_page+”‘</script>”);
System.out.println(home_page+logon_page);
return;
}
else {
chain.doFilter(request, response);
}
} catch (IOException e) {

} catch (ServletException e1) {
}
}
}

 


 

web.xml配置

 

<filter>
<filter-name>loginfilter</filter-name>
<filter-class>filter.LoginFilter</filter-class>
<init-param>
<param-name>LOGON_URI</param-name>
<param-value>/login.jsp</param-value>
</init-param>
<init-param>
<param-name>HOME_URI</param-name>
<param-value>/LeamedCall</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>loginfilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>

 

 

 

如果使用frame框架,跳到单独的页面login.jsp

在login.jsp页面加上

<script type=”text/javascript”>
if(top!=self){
if(top.location != self.location)
top.location=self.location;
}
</script>