需求说明:

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";

java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面相关推荐

  1. Servlet过滤器(Filter)不过滤登录页面、JS和CSS文件

    Servlet过滤器主要用于对客户端(浏览器)的请求进行过滤处理,先将过滤后的请求转交给下一资源,它在Java Web开发中具有十分重要的作用.Servlet过滤器可以用于验证用户的登录情况,但在实际 ...

  2. HTML+CSS登陆界面实例:Instagram 登录页面(一个拿来就能用的炫酷登录页面)

    效果: 在线预览: Instagram 登录页面 (codepen.io)https://codepen.io/atulcodex/pen/VoWRVP 代码: <!DOCTYPE html&g ...

  3. java web 文件上传工具类_JavaWeb中实现文件上传的方式有哪些?

    上回我们说了下文件下载的方式有哪些,这次我们从不同的环境下简单来说说文件上传的方式有哪些. 文件上传的方式Servlet2.5 方式 Servlet3.0 方式 SpringMVC 方式 案例实操 S ...

  4. java web从入门到精通视频_JavaWeb从入门到精通(视频实战版)

    JavaWeb从入门到精通(视频实战版) 作者:常倬林 出版日期:2010年12月 文件大小:28.02M 支持设备: ¥30.00仅供试读 适用客户端: 言商书局 iPad/iPhone客户端:下载 ...

  5. Java学习day3——Javaweb登录页面设计(1)(含JSP代码)

    写在前面 本文主要的内容是完成网页登录页面设计,以及判断用户名密码是否正确,如果正确,进入下一页面,并输出sessionID,若错误,则在登录页面给出用户名或密码错误提示,并在登录页面显示访问次数. ...

  6. java web 添加超链接_Javaweb 超链接后显示问题

    java web 项目发送带有超链接文本邮件问题 今天做java web项目的时候遇到了一个很想不通的或者说很奇葩的问题, 小编首先需要设置邮件内容的格式为:html 其次在内容中加上不要太乖,不想做 ...

  7. Web APIs 正则表达式综合案例丨小兔仙儿登录页面

    目录 综合案例:小兔鲜登录页面 案例代码:CSS丨common 案例代码:CSS丨index 案例代码:CSS丨login 案例代码:CSS丨register 案例代码:HTML丨index 案例代码 ...

  8. 小米商城项目——首页跳转到登录页面或注册页面的制作分析

            需要实现的效果:首页进行跳转到登录页面或者注册页面的操作时,相应页面变化的同时地址也进行相应变化. 打开登录页面 location.href 地址后几位为:/login.html 首页 ...

  9. 太恐怖了 两天搞定一个项目 Java Web MVC 网络商城教程+源代码

    两天搞定一个项目 Java Web MVC 网络商城教程+源代码 最近自学做了一个网络商城将以下是代码和教程 环境搭建–数据库设计–页面设计-后台设计 本项目使用的jdk版本是 运行项目前需要先配置好 ...

  10. java web里实现 mvc_MVC模式在Java Web应用程序中的实现

    一.MVC简介: MVC架构是一个复杂的架构,其实现也显得非常复杂..Views可以看作一棵树,可以用Composite Pattern来实现.Views和Models之间的关系可以Observer  ...

最新文章

  1. springside / springside4—CRUD页面教程
  2. C语言socket accept()函数(提取出所监听套接字的等待连接队列中第一个连接请求,创建一个新的套接字,并返回指向该套接字的文件描述符)
  3. JavaScript面向对象——理解构造函数继承(类继承)
  4. 布局管理器android,Android课程---布局管理器之相对布局(一)
  5. js学习笔记(十一)
  6. MySQL系列教程(三)
  7. php如何去重,php二维数组如何去重?(代码示例)
  8. mysql 判断质数_质数(素数)判断算法总结
  9. windows系统oracle11.2.0.4打补丁
  10. 安装unbuntu,vmware傻瓜式笔记
  11. 【股票】股票是什么?什么情况下股票会涨?
  12. 同学录退出了历史舞台了吗?
  13. java高级之xml
  14. vscode代码切换大小写的教程
  15. USB摄像头预览识别二维码
  16. 【植物冠层分析仪Sunscan】
  17. 2019智慧树python答案大全_2020智慧树Python语言应用答案
  18. JavaWeb毕业生就业招聘管理系统
  19. 运维篇—几句话搞明白nginx正向和反向代理的区别
  20. 3D引擎Axiom的选择与学习

热门文章

  1. stm32f407 usb cdc设备无法启动问题
  2. python 2022/1/2
  3. 17.matlab中各种文件的I/O操作2——fopen操作
  4. 多线程题目 2019.06.02 晚
  5. 使用docker部署一个直接可用的puppet服务端
  6. NSString字符串常用知识点
  7. 如何使用图形界面Webmin管理linux服务器
  8. centos nfs端口固定
  9. CSP认证201709-4 通信网络[C++题解]:dfs、建立两张图:正向建图和反向见图、统计联通点的个数
  10. PAT甲级1048 Find Coins :[C++题解]哈希表、两个硬币之和为定值