java登录拦截Filter
此例子为一个简单的登录拦截。
首先在web.xml中配置拦截类。
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter>
<filter-name>SessionFilter</filter-name>
<!-- 拦截类 -->
<filter-class>com.skin.generate.user.UserLoginFilter</filter-class>
<init-param>
<param-name>loginUrl</param-name>
<param-value>/finder/login.html</param-value>
</init-param>
<!-- 配置参数 比如不拦截的路径 -->
<init-param>
<param-name>excludes</param-name>
<param-value>
/register.html,
/resource/**/*,
/note/**/*
</param-value>
</init-param>
</filter>
其次就是拦截类的编写。
package com.skin.generate.user;
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.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import com.skin.finder.security.UserSession;
import com.skin.finder.web.util.Client;
import com.skin.finder.web.util.CookieUtil;
import com.skin.generate.entity.User; public class UserLoginFilter implements Filter {
/*
* String nofilter; String nofilterFiles[]; String sendRedirect;
*/ public void destroy() { } public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String path = request.getServletPath();
String url = request.getRequestURI(); // 如果不需要过滤的静态文件,直接放行
if (path.endsWith(".css") || path.endsWith(".js")
|| path.endsWith("Login.html")
|| url.indexOf("resource") > 0 || url.indexOf("note") > 0
|| url.endsWith("login.jsp") || path.endsWith(".gif")
|| path.endsWith(".ico")) {
chain.doFilter(request, response);
return;
} else {
if (checkUser(request, response)) {
chain.doFilter(request, response);// 如果用户已经登录,就放行
return;
} else {
// 没有登录,重定向到登录页面
String contextPath = getContextPath(request);
response.sendRedirect(contextPath+ "/template/finder/login.jsp");
return;
}
} } protected String getContextPath(HttpServletRequest request) {
String contextPath = request.getContextPath(); if ((contextPath == null) || (contextPath.equals("/"))) {
return "";
}
return contextPath;
} private boolean isInArray(String path, String nofilterFiles[]) {
for (int i = 0; i < nofilterFiles.length; i++) {
String nofilterFile = nofilterFiles[i];
if (nofilterFile.equals(path)) {
return true;
}
}
return false;
} private boolean checkUser(HttpServletRequest request,
HttpServletResponse response) throws IOException { //1.判断cookie 是否存在
Cookie cookie = CookieUtil.getCookie(request, Client.COOKIE_NAME);
if(cookie ==null ){
return false;
} //2.校验session
HttpSession session = request.getSession(false);// 如果不存在返回空
if (session == null) {
return false;
}
//3.校验登录用户
Object obj = session.getAttribute(SessionUtils.USER_NAME);
if (obj == null) {
return false;
} return true;
} public void init(FilterConfig config) throws ServletException {
/*
* nofilter = config.getInitParameter("excludes");
* nofilterFiles =nofilter.split(","); sendRedirect =
* config.getInitParameter("loginUrl");
*/
// System.out.println(Arrays.asList(nofilterFiles));
} }
java登录拦截Filter的更多相关文章
- 过滤器(filter)实现用户登录拦截
过滤器(filter)实现用户登录拦截 >>>>>>>>>>>>>>>>>>>> ...
- Java 中的 Filter 过滤器详解
Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...
- Java中的Filter过滤器
Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...
- Spring mvc登录拦截器
自己实现的第一个Spring mvc登录拦截器 题目要求:拒绝未登录用户进入系统,只要发现用户未登录,则将用户请求转发到/login.do要求用户登录 实现步骤: 1.在spring的配置文件中添加登 ...
- java之拦截器Interceptor
1,拦截器的概念 java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了 ...
- 大型运输行业实战_day05_1_登录+注销+表单重复提交+登录拦截器
1.登录 登录实现如下步骤: 1.在首页中添加登录按钮 html代码如下: <%@ page contentType="text/html;charset=UTF-8" la ...
- struts2自定义登录拦截器
版权声明:本文为博主原创文章,未经博主允许不得转载. (1)配置web.xml,让xml加载struts2框架 <?xml version="1.0" encoding=&q ...
- SpringMVC 使用注解完成登录拦截
目录 为了实现用户登录拦截你是否写过如下代码呢? 1. 基于Filter 2. 基于Struts 3. 基于SpringMVC 如何使用自定义注解完成自定义拦截呢? 登录注解 SpringMVC 拦截 ...
- Java Web之Filter
Filter被称为过滤器或者拦截器,基本功能就是对调用servler过程的拦截,在servlet进行响应和处理前后实现一些特殊功能.其实,Filter过滤器就是一个实现了javax.servlet.F ...
随机推荐
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 18. 基于Claim和Policy的授权 下 - 自定义Policy
在加一个策略,要求cliam的值必须是123 第二个参数的类型 可变参数 ,可以是这三种类型 变成一个集合也可以 策略内置的几种方式 自定义 RequireAssetion的参数是个Func,Func ...
- 怎样在github上协同开发
How to co-work wither parter via github. Github协同开发情景模拟 Github不仅有很多开源的项目可以参考,同样也是协同开发的最佳工具,接下来的就模拟一下 ...
- 用grep在子目录中指定的文件类型中查找(转载)
转自:http://www.ai7.org/wp/html/653.html grep -r abcd *.py 这样的命令得不到你期待的结果,而 grep -r abcd * 这样得到的结果又太多, ...
- 大数据系列文章-Hadoop的HDFS读写流程(二)
在介绍HDFS读写流程时,先介绍下Block副本放置策略. Block副本放置策略 第一个副本:放置在上传文件的DataNode:如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点. 第二 ...
- 浅谈欧拉函数 By cellur925
1.某神犇Blog 学了三遍的 欧拉函数φ--DEADFISH7 2.我要做一些补充o(* ̄▽ ̄*)o $φ(1)=1$: 公式有两种形式,一种有太多除法,实际可能会慢些.通用 对于任意$n$> ...
- 定位,标记,Socket通信传输位置
# -*- coding: utf- -*- """ Editor : X-POWER Date : -- Motto : talk is cheap,show me y ...
- the little schemer 笔记(3)
第三章 cons the magnificent (rember a lat)是什么,其中a是mint,lat是(lamb chops and mint jelly) (lamb chops and ...
- POJ244Set Operation(bitset用法)
Bryce1010模板 /* 题意:给出n个集合(n<=1000),每个集合中最多有10000个数, 每个数的范围为1~10000,给出q次询问(q<=200000), 每次给出两个数u, ...
- [NOIP2018校模拟赛]T1聚会 party
题目链接: 聚会 分析: 设每个点到1号点的距离为dist_{i},每个点的权值为x_{i},目标点到1号点的距离为dist,权值为x,那么对于每一次查询,我们讨论三种情况: ① 目标家庭在区间左边( ...
- Educational Codeforces Round 20 A
Description You are given matrix with n rows and n columns filled with zeroes. You should put k ones ...