javaweb关于用户是否登录全局判断,没有登录跳转到登录界面

有这样一个需求,用户密码登录网站,在session中保留了用户的信息,但是用户很长时间没有再操作该界面,用户的session则被浏览器清除,而一些业务逻辑则是需要用到用户的信息,那么用户再执行操作后,则会引起业务代码报错,这时我们就需要在用户访问的时候判断一下用户的信息是否存在,如何实现这个功能,我们这里用到了过滤器这个功能,在用户访问特定界面或者特定接口的时候,先进行过滤,复合条件再执行下一步操作,具体代码如下:

package com.demo.filter;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.demo.entity.User;
/*** 全站判断用户是否登录过滤器* @author zhangdi**/
public class AuthFilter implements Filter{@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletResponse resp = (HttpServletResponse)response;HttpServletRequest req = (HttpServletRequest)request;HttpSession session = req.getSession();User user = (User)session.getAttribute("user");String uri = req.getRequestURI();//简单判断缓存中是否有用户if(user==null){//没有用户//判断用户是否是选择跳到登录界面if(uri.endsWith("login.jsp")||uri.endsWith("login.do")){chain.doFilter(request, response);}else{resp.sendRedirect(req.getContextPath()+"/login.jsp");}    }else{//有用户
            chain.doFilter(request, response);}chain.doFilter(request, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}}

注意,这个过滤器需要在web.xml中声明,不然不会被项目调用,代码如下:

    <!-- 登录认证过滤器 --><filter><filter-name>auth</filter-name><filter-class>com.demo.filter.AuthFilter</filter-class></filter><filter-mapping><filter-name>auth</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping><filter-mapping><filter-name>auth</filter-name><url-pattern>*.do</url-pattern></filter-mapping>

这里配置过滤的范围是所有的jsp界面以及所有以.do结尾的接口

posted on 2017-04-27 09:38 <&nbsp/> 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/zhangdiIT/p/6772615.html

javaweb关于用户是否登录全局判断,没有登录跳转到登录界面相关推荐

  1. Vue 用户30分钟未操作,页面跳转到登录页

    <template><div id="app"><router-view/></div> </template> < ...

  2. 【八】有验证码登录配置:通过 Cookie 跳过验证码登录接口

    一.基本配置 二.HTTP请求默认值 (1)jmeter的设置: (2)设置HTTP请求默认值的优点: 1.该默认请求值下的所有接口,都不用填以下截图这几个选项. 2.而且可以通过修改默认值的域名和端 ...

  3. Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】

    应用情形:在web项目中,经常会遇到用户未登录或SESSION失效时用户发出非法的权限操作,如新闻的评论.文件的下载等等,在此我们可以使用struts拦截器对该用户发出的请求进行拦截,拦截后判断用户是 ...

  4. php未登录跳到登陆页面,vue实现未登录跳转到登录页面的方法

    环境:vue 2.9.3; webpack;vue-router 目的:实现未登录跳转 例子:直接在url地址栏输入...../home,但是这个页面要求需要登陆之后才能进入,判断的值就通过登陆之后给 ...

  5. java shiro登录实例_Shiro安全框架入门篇(登录验证实例详解与源码)

    转载自http://blog.csdn.net/u013142781 一.Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权.Shiro在JavaSE和J ...

  6. Vue 如何实现登录后,跳转到登录之前要访问的页面

    Vue 如何实现登录后,跳转到登录之前要访问的页面 一.需求 有些时候,需要实现这样的功能: 项目中的有些页面是可以直接访问的,不需要登录. 但这个页面中的一些链接一些路径则需要登录后才能查看,也就是 ...

  7. CAS单点登录 - 创建用户会话、全局门票、临时票据

    CAS的统一登录接口目的:1. 登录后创建用户的全局会话 -> uniqueToken2. 创建用户全局门票,用以表示在CAS端是否登录 -> userTicket3. 创建用户的临时票据 ...

  8. vue路由守卫判断用户是否登录,如果没登陆就跳转到登录

    router.beforeEach((to, from, next) => {//路由跳转中const nextRoute = ['About'];//将所有需要登陆才显示的页面的路由都放进一个 ...

  9. php 高效判断是否登录,php 判断用户是否登录

    判断用户登陆主要分几个过程,第一步是用户登陆成功后把数据保存到session中,然后当用户访问需要登陆过的用户权限时就来判断session是否为空,如果不是就登录成功.下面来看个实例 session_ ...

最新文章

  1. c语言实现 十进制到二进制的转换
  2. 关于数据仓库数据质量的问题处理
  3. 【白话设计模式二】外观模式(Facade)
  4. Visual Basic的未来之路
  5. WebHelper类
  6. linux安装服务程序,将 Go 程序安装成系统服务
  7. 词汇的积累与遣词造句 —— 准确的表达、新鲜的词汇
  8. Python使用XGBoost
  9. python设置路径变量_python – Bokeh中设置的静态路径变量在哪里(对于create_html_snippet)...
  10. 进入“后红海”时代,大数据体系到底是什么?
  11. MATLAB绘图——加强篇
  12. laravel5.5 Validator 自定义错误提示语
  13. CF140C New Year Snowmen (#贪心+优先队列)
  14. 存储之磁盘阵列RAID
  15. 父亲将房子过户给后代需要交税吗
  16. java组件叠加显示,如何让上层的组件一直在上层显示
  17. 漫画 | 什么是 HashMap?
  18. MySQL:排序(filesort)详细解析(8000字长文)
  19. 深切悼念JAVA培训界第一人张孝祥老师意外辞世
  20. FDFS_Ubuntu部署fdfs测试上传文件不成功

热门文章

  1. r语言平均值显著性检验_8小时整理!t检验原理!R语言实现!一文彻底搞定t检验(上)...
  2. python实现一个简单的加法计算器_Python tkinter实现简单加法计算器代码实例
  3. 18年石油大学c语言网考答案,石油大学华东C语言2018在线考试.doc
  4. scikit-image安装 from numpy.lib.arraypad import _validate_lengths ImportError: cannot import name ‘_va
  5. Python之web开发(一):python常用搭建网站的框架简介
  6. 有三AI第一批10个研究小组上线
  7. 喜马拉雅音频下载工具
  8. AtCoder Regular Contest 067 F - Yakiniku Restaurants
  9. 初识 HTML5(一)
  10. golang 编写的邮件客户端