java web实现页面跳转页面_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";
java web实现页面跳转页面_JavaWeb过滤器实现页面跳转至登录页面相关推荐
- Servlet过滤器(Filter)不过滤登录页面、JS和CSS文件
Servlet过滤器主要用于对客户端(浏览器)的请求进行过滤处理,先将过滤后的请求转交给下一资源,它在Java Web开发中具有十分重要的作用.Servlet过滤器可以用于验证用户的登录情况,但在实际 ...
- HTML+CSS登陆界面实例:Instagram 登录页面(一个拿来就能用的炫酷登录页面)
效果: 在线预览: Instagram 登录页面 (codepen.io)https://codepen.io/atulcodex/pen/VoWRVP 代码: <!DOCTYPE html&g ...
- java web 文件上传工具类_JavaWeb中实现文件上传的方式有哪些?
上回我们说了下文件下载的方式有哪些,这次我们从不同的环境下简单来说说文件上传的方式有哪些. 文件上传的方式Servlet2.5 方式 Servlet3.0 方式 SpringMVC 方式 案例实操 S ...
- java web从入门到精通视频_JavaWeb从入门到精通(视频实战版)
JavaWeb从入门到精通(视频实战版) 作者:常倬林 出版日期:2010年12月 文件大小:28.02M 支持设备: ¥30.00仅供试读 适用客户端: 言商书局 iPad/iPhone客户端:下载 ...
- Java学习day3——Javaweb登录页面设计(1)(含JSP代码)
写在前面 本文主要的内容是完成网页登录页面设计,以及判断用户名密码是否正确,如果正确,进入下一页面,并输出sessionID,若错误,则在登录页面给出用户名或密码错误提示,并在登录页面显示访问次数. ...
- java web 添加超链接_Javaweb 超链接后显示问题
java web 项目发送带有超链接文本邮件问题 今天做java web项目的时候遇到了一个很想不通的或者说很奇葩的问题, 小编首先需要设置邮件内容的格式为:html 其次在内容中加上不要太乖,不想做 ...
- Web APIs 正则表达式综合案例丨小兔仙儿登录页面
目录 综合案例:小兔鲜登录页面 案例代码:CSS丨common 案例代码:CSS丨index 案例代码:CSS丨login 案例代码:CSS丨register 案例代码:HTML丨index 案例代码 ...
- 小米商城项目——首页跳转到登录页面或注册页面的制作分析
需要实现的效果:首页进行跳转到登录页面或者注册页面的操作时,相应页面变化的同时地址也进行相应变化. 打开登录页面 location.href 地址后几位为:/login.html 首页 ...
- 太恐怖了 两天搞定一个项目 Java Web MVC 网络商城教程+源代码
两天搞定一个项目 Java Web MVC 网络商城教程+源代码 最近自学做了一个网络商城将以下是代码和教程 环境搭建–数据库设计–页面设计-后台设计 本项目使用的jdk版本是 运行项目前需要先配置好 ...
- java web里实现 mvc_MVC模式在Java Web应用程序中的实现
一.MVC简介: MVC架构是一个复杂的架构,其实现也显得非常复杂..Views可以看作一棵树,可以用Composite Pattern来实现.Views和Models之间的关系可以Observer ...
最新文章
- springside / springside4—CRUD页面教程
- C语言socket accept()函数(提取出所监听套接字的等待连接队列中第一个连接请求,创建一个新的套接字,并返回指向该套接字的文件描述符)
- JavaScript面向对象——理解构造函数继承(类继承)
- 布局管理器android,Android课程---布局管理器之相对布局(一)
- js学习笔记(十一)
- MySQL系列教程(三)
- php如何去重,php二维数组如何去重?(代码示例)
- mysql 判断质数_质数(素数)判断算法总结
- windows系统oracle11.2.0.4打补丁
- 安装unbuntu,vmware傻瓜式笔记
- 【股票】股票是什么?什么情况下股票会涨?
- 同学录退出了历史舞台了吗?
- java高级之xml
- vscode代码切换大小写的教程
- USB摄像头预览识别二维码
- 【植物冠层分析仪Sunscan】
- 2019智慧树python答案大全_2020智慧树Python语言应用答案
- JavaWeb毕业生就业招聘管理系统
- 运维篇—几句话搞明白nginx正向和反向代理的区别
- 3D引擎Axiom的选择与学习
热门文章
- stm32f407 usb cdc设备无法启动问题
- python 2022/1/2
- 17.matlab中各种文件的I/O操作2——fopen操作
- 多线程题目 2019.06.02 晚
- 使用docker部署一个直接可用的puppet服务端
- NSString字符串常用知识点
- 如何使用图形界面Webmin管理linux服务器
- centos nfs端口固定
- CSP认证201709-4	通信网络[C++题解]:dfs、建立两张图:正向建图和反向见图、统计联通点的个数
- PAT甲级1048 Find Coins :[C++题解]哈希表、两个硬币之和为定值