用过滤器Filter判断用户是否登陆

WEB.XML

  1. <!-- 用户session的 键   sessionKEY -->
  2. <context-param>
  3. <param-name>userSessionKey</param-name>
  4. <param-value>USERSESSIONKEY</param-value>
  5. </context-param>
  6. <!-- 重定向的页面 -->
  7. <context-param>
  8. <param-name>rediretPage</param-name>
  9. <param-value>/u_member/Login.jsp</param-value>
  10. </context-param>
  11. <!-- 不需要过滤的页面 -->
  12. <context-param>
  13. <param-name>uncheckUrls</param-name>
  14. <param-value>/u_member/insert.jsp,/u_member/Login.jsp</param-value>
  15. </context-param>

Filter 过滤器代码

  1. package go.onlineShop.filter;
  2. import java.io.IOException;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import javax.servlet.Filter;
  6. import javax.servlet.FilterChain;
  7. import javax.servlet.FilterConfig;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.ServletRequest;
  10. import javax.servlet.ServletResponse;
  11. import javax.servlet.annotation.WebFilter;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. /**
  15. * Servlet Filter implementation class IsLoginFilter
  16. * 判断是否登陆过滤器
  17. */
  18. @WebFilter("/u_member")
  19. public class IsLoginFilter implements Filter {
  20. //从xml中取值
  21. String uncheckUrls =null;
  22. String userSessionKey=null;
  23. String rediretPage=null;
  24. /**
  25. * Default constructor.
  26. */
  27. public IsLoginFilter() {
  28. // TODO Auto-generated constructor stub
  29. }
  30. /**
  31. * @see Filter#destroy()
  32. */
  33. public void destroy() {
  34. // TODO Auto-generated method stub
  35. }
  36. /**
  37. * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
  38. */
  39. public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
  40. // TODO Auto-generated method stub
  41. //1.得到访问路径
  42. HttpServletRequest request = (HttpServletRequest)req;
  43. HttpServletResponse response = (HttpServletResponse)res;
  44. String reqUrl = request.getRequestURL().toString();
  45. String reqURI = request.getRequestURI();
  46. String servletPath = request.getServletPath();
  47. //  String[] uncheckUrl = uncheckUrls.split(",");
  48. List<String> urls = Arrays.asList(uncheckUrls.split(","));
  49. //2.如果是属于不需要过滤的地址就直接  放行  方法结束
  50. if(urls.contains(servletPath)){
  51. chain.doFilter(request, response);
  52. return;
  53. }
  54. //3.从session中获取sessionKey对应的值;若不存在  则跳转到登陆页面
  55. Object user = request.getSession().getAttribute(userSessionKey);
  56. if(user==null){
  57. request.getRequestDispatcher(rediretPage).forward(request, response);
  58. return;
  59. }
  60. //4若存在 则放行;
  61. chain.doFilter(request, response);
  62. }
  63. /**
  64. * @see Filter#init(FilterConfig)
  65. */
  66. public void init(FilterConfig fConfig) throws ServletException {
  67. rediretPage=fConfig.getServletContext().getInitParameter("rediretPage");
  68. uncheckUrls=fConfig.getServletContext().getInitParameter("uncheckUrls");
  69. userSessionKey=fConfig.getServletContext().getInitParameter("userSessionKey");
  70. }
  71. }

Login页面

参考:

用过滤器Filter判断用户是否登陆 - CSDN博客
http://blog.csdn.net/u010634066/article/details/38769577

用过滤器Filter判断用户是否登陆的更多相关文章

  1. .Net Mvc判断用户是否登陆、未登陆跳回登陆页、三种完美解决方案

    开篇先不讲解,如何判断用户是否登陆,我们先来看用户登录的部分代码,账户密码都正确后,先将当前登录的用户名记录下来. public ActionResult ProcessLogin() { try { ...

  2. 2016-02-20WebForm登陆验证,判断用户是否登陆 PageBase类

    http://blog.csdn.net/fanbin168/article/details/49404233 很多时候,WebFrom页面,我们需要判断用户是否已经登陆了.假如有很多页面,难道我们要 ...

  3. Ecshop在模板中判断用户是否登陆,获取用户等级信息

    ecshop模板中smarty怎样判断用户等级.用户id.用户昵称用户名,请看以下方法,使用全局变量 <!-- {if $smarty.session.user_rank gt 1}--> ...

  4. django 判断用户是否登陆

    基于类的视图登陆

  5. JavaEE中Filter实现用户登录拦截

    实现思路是编写过滤器,如果用户登录之后session中会存一个user.如果未登录就为null,就可以通过过滤器将用户重定向到登陆页面,让用户进行登陆,当然过滤器得判断用户访问的如果是登陆请求需要放行 ...

  6. servlet和jsp页面过滤器Filter的作用及配置

    刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下,            过滤器是一个对象,可以传输请求或修改响应.它可以在请求到达Servlet/JSP之前对其进行预处理, ...

  7. 在写WebApi判断用户权限时返回数据和接受支付结果 定义返回数据类型

    using ADT.Core.Encrypt; using System; using System.Collections.Generic; using System.Linq; using Sys ...

  8. 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能

    在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...

  9. 过滤器(Filter)案例:检测用户是否登陆的过滤器

    *****检测用户是否登陆的过滤器:不需要用户跳转到每个页面都需要登陆,访问一群页面时,只在某个页面上登陆一次,就可以访问其他页面: 1.自定义抽象的 HttpFilter类, 实现自 Filter ...

随机推荐

  1. 是时候学习真正的 spark 技术了

     
 spark sql 可以说是 spark 中的精华部分了,我感觉整体复杂度是 spark streaming 的 5 倍以上,现在 spark 官方主推 structed streaming, ...

  2. 【Floyd最短路】第七届福建省赛 FZU Problem 2271 X

    http://acm.fzu.edu.cn/problem.php?pid=2271 [题意] 给定一个n个点和m条边的无向连通图,问最多可以删去多少条边,使得每两个点之间的距离(最短路长度)不变. ...

  3. Postman调试依赖登录接口的3种方法

    在接口测试种, 我们经常会遇到有些接口登录后才能访问.我们在使用Postman调试这种接口时一般有3种方法: 依次请求 如果有登录接口的文档,或者通过抓包比较容易抓出登录请求的参数和格式,可以先使用P ...

  4. 【CF766D】Mahmoud and a Dictionary(并查集)

    题意:有n个单词,给定m个关系,每个关系要么表示单词a与单词b相同,要么表示单词a与单词b相反. 并且“相同”与“相反”有性质:若a与b相同,b与c相同,则a与c相同(从而单词的相同关系是等价关系): ...

  5. ubuntu 12.04 64bit 安装 teamviewer 8.0

    1. 在http://www.teamviewer.com下载teamviewer_linux_x64.deb 2.sudo dpkg -i teamviewer_linux_x64.deb 3.如果 ...

  6. js闭包的用途[转载]

    通过使用闭包,我们可以做很多事情.比如模拟面向对象的代码风格:更优雅,更简洁的表达出代码:在某些方面提升代码的执行效率. 1 匿名自执行函数我们知道所有的变量,如果不加上var关键字,则默认的会添加到 ...

  7. Netty 4.0 新的特性及需要注意的地方

    Netty 4.0 新的特性及需要注意的地方 这篇文章和你一起过下Netty的主发行版本的一些显著的改变和新特性,让你在把你的应用程序转换到新版本的时候有个概念. 项目结构改变 Netty的包名从or ...

  8. 利用开源工具实现轻量级上网行为审计(来源ispublic.com)

    https://blog.csdn.net/cnbird2008/article/details/5875781

  9. FastDfs + Dht 搭建笔记

    以下为搭建一套分布式文件集群系统,参考了很多资料,自己经过在服务器上搭建并且经过了测试.记录以方便以后使用查看. FastDfs + Dht 安装手册 一:概述 FastDFS是由淘宝的余庆先生所开发 ...

  10. [Bzoj2286][Sdoi2011]消耗战(虚树模板题附讲解)

    2286: [Sdoi2011]消耗战 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 4896  Solved: 1824[Submit][Statu ...