java 过滤器跳转页面_JavaWeb过滤器实现页面跳转至登录页面

需求说明:

1、用户登录某页面一段时间之内,如果无任何操作,跳转至登录页面。

2、用户在非登录状态下,无法访问项目下的某些页面。

解决方式:

通过session过滤器实现对请求的过滤,如果未登录跳转至登录页面,如果已登录直接放行。在过滤器中不对登录页面进行过滤,不对css、js、img资源进行过滤。

如果不是前面说的两种资源,则判断记录用户信息的session是否为空,空则跳转至登录页面、非空则放行。

方法一:Java过滤器实现(推荐)

解决步骤:

步骤一:在项目下配置web.xml文件中配置session

1、设置session失效时间(时间单位为分钟)

30

2、配置过滤器

session过滤器

sessionFilter

com.filter.SessionFilter

sessionFilter

/*

注意:这里对所有的请求都进行了过滤。也可以在配置过滤器的时候设置某些请求不进行过滤,这里不进行具体的介绍。

步骤二:编写过滤器类

packagecom.filter;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importcom.model.user.User;public class SessionFilter implementsFilter {public void init(FilterConfig filterConfig) throwsServletException {

}public voiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain)throwsIOException, ServletException {

HttpServletRequest req=(HttpServletRequest) request;

HttpServletResponse res=(HttpServletResponse) response;

res.addHeader("Access-Control-Allow-Origin", "*");

String uri=req.getRequestURI();if (uri.indexOf("login") != -1 || uri.indexOf("Login") != -1) {

chain.doFilter(req, res);

}else if ((uri.contains(".css") || uri.contains(".js") || uri.contains(".jpg") || uri.contains(".png")|| uri.contains(".jpng") && !uri.contains(".jsp")) {

chain.doFilter(req, res);

}else{HttpSession session=req.getSession();

User user = (User) session.getAttribute("user");

String username= "";if (user != null && !user.equals("")) {

username=user.getLoginName();

}if (username != "" && username != null) {chain.doFilter(req, res);

}else{session.invalidate();

res.setContentType("text/html;charset=utf-8");

PrintWriter out=res.getWriter();

out.println("

out.println("window.top.location.href='" + req.getContextPath() + "/jsp/login.jsp'");

out.println("");

}

}if (uri.indexOf("redirect") != -1) {if (null != request.getParameter("userimg")) {chain.doFilter(req, res);

}

}

}public voiddestroy() {

}

}

注意:1、这里使用window.top.location.herf,如果使用window.location.herf有时候无法完成跳转。2、上面的代码执行时需要用户在登录时将用户信息放入session中。

方法二:Jsp页面Java代码实现(了解)

完成方法一的步骤就可以实现一个session过滤器了,过滤器会对请求想要访问的页面进行进行请求判断。如果我们只想对某一个页面进行session判断又不想使用过滤器,可以在页面上使用java代码进行判断。

注意这里只对某一个特定的页面,其他页面是不能用的。

if(session.getAttribute("user")== null) {%>

top.location.href="jsp/login.jsp";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值