用过滤器Filter判断用户是否登陆
用过滤器Filter判断用户是否登陆
WEB.XML
- <!-- 用户session的 键 sessionKEY -->
- <context-param>
- <param-name>userSessionKey</param-name>
- <param-value>USERSESSIONKEY</param-value>
- </context-param>
- <!-- 重定向的页面 -->
- <context-param>
- <param-name>rediretPage</param-name>
- <param-value>/u_member/Login.jsp</param-value>
- </context-param>
- <!-- 不需要过滤的页面 -->
- <context-param>
- <param-name>uncheckUrls</param-name>
- <param-value>/u_member/insert.jsp,/u_member/Login.jsp</param-value>
- </context-param>
Filter 过滤器代码
- package go.onlineShop.filter;
- import java.io.IOException;
- import java.util.Arrays;
- import java.util.List;
- 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.annotation.WebFilter;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- /**
- * Servlet Filter implementation class IsLoginFilter
- * 判断是否登陆过滤器
- */
- @WebFilter("/u_member")
- public class IsLoginFilter implements Filter {
- //从xml中取值
- String uncheckUrls =null;
- String userSessionKey=null;
- String rediretPage=null;
- /**
- * Default constructor.
- */
- public IsLoginFilter() {
- // TODO Auto-generated constructor stub
- }
- /**
- * @see Filter#destroy()
- */
- public void destroy() {
- // TODO Auto-generated method stub
- }
- /**
- * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
- */
- public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
- // TODO Auto-generated method stub
- //1.得到访问路径
- HttpServletRequest request = (HttpServletRequest)req;
- HttpServletResponse response = (HttpServletResponse)res;
- String reqUrl = request.getRequestURL().toString();
- String reqURI = request.getRequestURI();
- String servletPath = request.getServletPath();
- // String[] uncheckUrl = uncheckUrls.split(",");
- List<String> urls = Arrays.asList(uncheckUrls.split(","));
- //2.如果是属于不需要过滤的地址就直接 放行 方法结束
- if(urls.contains(servletPath)){
- chain.doFilter(request, response);
- return;
- }
- //3.从session中获取sessionKey对应的值;若不存在 则跳转到登陆页面
- Object user = request.getSession().getAttribute(userSessionKey);
- if(user==null){
- request.getRequestDispatcher(rediretPage).forward(request, response);
- return;
- }
- //4若存在 则放行;
- chain.doFilter(request, response);
- }
- /**
- * @see Filter#init(FilterConfig)
- */
- public void init(FilterConfig fConfig) throws ServletException {
- rediretPage=fConfig.getServletContext().getInitParameter("rediretPage");
- uncheckUrls=fConfig.getServletContext().getInitParameter("uncheckUrls");
- userSessionKey=fConfig.getServletContext().getInitParameter("userSessionKey");
- }
- }
Login页面
参考:
用过滤器Filter判断用户是否登陆 - CSDN博客
http://blog.csdn.net/u010634066/article/details/38769577
用过滤器Filter判断用户是否登陆的更多相关文章
- .Net Mvc判断用户是否登陆、未登陆跳回登陆页、三种完美解决方案
开篇先不讲解,如何判断用户是否登陆,我们先来看用户登录的部分代码,账户密码都正确后,先将当前登录的用户名记录下来. public ActionResult ProcessLogin() { try { ...
- 2016-02-20WebForm登陆验证,判断用户是否登陆 PageBase类
http://blog.csdn.net/fanbin168/article/details/49404233 很多时候,WebFrom页面,我们需要判断用户是否已经登陆了.假如有很多页面,难道我们要 ...
- Ecshop在模板中判断用户是否登陆,获取用户等级信息
ecshop模板中smarty怎样判断用户等级.用户id.用户昵称用户名,请看以下方法,使用全局变量 <!-- {if $smarty.session.user_rank gt 1}--> ...
- django 判断用户是否登陆
基于类的视图登陆
- JavaEE中Filter实现用户登录拦截
实现思路是编写过滤器,如果用户登录之后session中会存一个user.如果未登录就为null,就可以通过过滤器将用户重定向到登陆页面,让用户进行登陆,当然过滤器得判断用户访问的如果是登陆请求需要放行 ...
- servlet和jsp页面过滤器Filter的作用及配置
刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下, 过滤器是一个对象,可以传输请求或修改响应.它可以在请求到达Servlet/JSP之前对其进行预处理, ...
- 在写WebApi判断用户权限时返回数据和接受支付结果 定义返回数据类型
using ADT.Core.Encrypt; using System; using System.Collections.Generic; using System.Linq; using Sys ...
- 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能
在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...
- 过滤器(Filter)案例:检测用户是否登陆的过滤器
*****检测用户是否登陆的过滤器:不需要用户跳转到每个页面都需要登陆,访问一群页面时,只在某个页面上登陆一次,就可以访问其他页面: 1.自定义抽象的 HttpFilter类, 实现自 Filter ...
随机推荐
- Java基础学习总结(94)——Java线程再学习
Java线程有哪些不太为人所知的技巧与用法? 萝卜白菜各有所爱.像我就喜欢Java.学无止境,这也是我喜欢它的一个原因.日常工作中你所用到的工具,通常都有些你从来没有了解过的东西,比方说某个方法或者是 ...
- C#窗体学生成绩管理系统
c#学生成绩管理系统 实现用户登录.注册 所有成绩查询.个人成绩查询 管理员审核.添加.删除用户 项目源码GIT:https://github.com/soulsjie/StuScoreMa.git
- 80. Hibernate 5.0命名策略使用naming-strategy 不起作用【从零开始学Spring Boot】
[原创文章,转载请注明出处] 事情的起因:一不小心从1.3.3升级到了1.4.0版本,结果就碰到了各种悲催的事情了,好吧,Hibernate5.0的新特性就是其中一个坑,我们会发现我们配置的namin ...
- The Grove(poj 3182)
题意:一个n*m(n,m<=50)的矩阵有一片连着的树林,Bessie要从起始位置出发绕林子一圈再回来,每次只能向横着.竖着或斜着走一步.问最少需多少步才能完成. /* 如果我们用搜索来写的话, ...
- 任意两点间最短距离floyd-warshall ---- POJ 2139 Six Degrees of Cowvin Bacon
floyd-warshall算法 通过dp思想 求任意两点之间最短距离 重复利用数组实现方式dist[i][j] i - j的最短距离 for(int k = 1; k <= N; k++) f ...
- C++动态特性和C++对象模型——《高质量程序设计12章》
1.动态特性 静态特性和动态特性,编译时和运行时 虚函数 (1)虚函数的叫覆盖,虚函数不是实现多态的唯一手段(其他语言也可能采用别的方法). 抽象基类: (1)如果将基类的虚函数声明为纯虚函数,则基类 ...
- java 字节码 指令集
有时候为了能理解JVM对程序所做的优化等,需要查看程序的字节码,因此知道了解一些常见的指令集很重要! 指令码 助记符 说明 0x00 nop 什么都不做 0x01 aconst_null 将null推 ...
- 进入一个jsp直接跳到另一个jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- C/C++ (一)
c语言中的逻辑运算符都是短路运算,一旦能够确定整个表达式的值就不再计算,配合c的定义的灵活性,可以写出很多漂亮的程序. 例如 如果要在一个长为n的数列s中找到第k个没被标记过的数 for(i=1,j= ...
- CSS 遮罩层、滑出页面
<style> .panel_bak { position:fixed; bottom:0; display:none; width:100%; margin:0px; padding:5 ...