Filter过滤器的写法
http://pengenjing.iteye.com/blog/1607248
这里写的过滤器用的是适配器模式,思路为:
先写一个类实现Filter,然后在让你写的过滤器来继承自这个类;
步骤:1.建一个AbstractFilter实现Filter;2.建一个类来继承AbstractFilter,还要在web.xml中配置;
web.xml中的配置:
- <filter>
- <filter-name>validateFilter</filter-name>
- <filter-class>com.peng.ValidateFilter(这里写的是类的完全限定名)</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>validateFilter</filter-name>
- <url-pattern>/*(这里是让所有的通过)</url-pattern>
- </filter-mapping>
Abstractr.java
- public abstract class AbstractFilter implements Filter{
- public void destroy() {}
- public abstract void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException ;
- public void init(FilterConfig filterConfig) throws ServletException {}
- }
下面是我自己写的过滤器:我给他取名为 ValidateFilter;
ValidateFilter.java
- package com.kaishengit.web.filter;
- import java.io.IOException;
- import javax.servlet.FilterChain;
- 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.kaishengit.entity.User;
- import com.kaishengit.util.Const;
- public class ValidateFilter extends AbstractFilter{
- @Override
- public void doFilter(ServletRequest req, ServletResponse resp,
- FilterChain chain) throws IOException, ServletException {
- HttpServletRequest request = (HttpServletRequest) req;
- HttpServletResponse response = (HttpServletResponse) resp;
- //判断如果是index.jspx 放行
- String uri = request.getRequestURI();
- uri = uri.substring(uri.lastIndexOf("/")+1);
- //System.out.println("当前请求的路径: " + uri);
- if("".equals(uri) || "index.jsp".equals(uri) || "index.jspx".equals(uri) || "login.jspx".equals(uri) || uri.endsWith("png") || uri.endsWith("jpg")) {
- //所有人都能请求到的URI,放行
- chain.doFilter(request, response);
- } else { //下面是判断是否有session,也就是用户是否已登录状态;
- HttpSession session = request.getSession();
- User user = (User) session.getAttribute(Const.USER_IN_SESSION);
- if(user == null) {
- System.out.println("URI:" + uri + ">>>>访问被拒绝!");
- response.sendRedirect("index.jspx?code=10002");
- } else {
- chain.doFilter(request, response);
- }
- }
- }
- }
Filter过滤器的写法的更多相关文章
- Servlet的学习之Filter过滤器技术(1)
本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器, ...
- [转]Servlet的学习之Filter过滤器技术
本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器, ...
- HBase - Filter - 过滤器的介绍以及使用
1 过滤器HBase 的基本 API,包括增.删.改.查等.增.删都是相对简单的操作,与传统的 RDBMS 相比,这里的查询操作略显苍白,只能根据特性的行键进行查询(Get)或者根据行键的范围来查询( ...
- JavaWeb学习篇--Filter过滤器
Filter过滤器简介 ServletAPI中提供了一个Filter接口,开发web应用时,如果编写的 java 类实现了这个接口,则把这个java类称之为过滤器Filter. WEB服务器每次在调用 ...
- filter 过滤器(监听)
Filter 过滤器 1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, ...
- Java防止SQL注入2(通过filter过滤器功能进行拦截)
首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...
- Filter(过滤器)学习
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- javaweb学习总结(四十二)——Filter(过滤器)学习
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- Filter过滤器简单应用( 接口访问控制 )
一.描述 在提供安卓.IOS客户端接口时,可以在登陆接口分配Session给客户端,用于判断其他接口是否是合法访问,以避免将所有的接口都暴露在web中可以由路径直接访问.但是最近的一个项目中的移动接口 ...
随机推荐
- win7远程桌面连接windows2008服务器,连接启动很慢。我是这样解决的。
1.在本地链接属性中把IPv6勾选取消掉. 2.在window命令中运行 (cmd) netsh int tcp setglobal autotuninglevel=disable 祝君成功!
- node平台截取图片模块——jimp
前几天介绍了一个简单的截图模块——iamges,虽然简单,但是功能还是有很多局限的地方. jimp的优势:1.简单,2.支持回调方式和ES6(promise)语法也可以链式调用 3. 丰富的api ...
- 用实例讲解RSA加密算法(精)
RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名.RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,这个算法经 ...
- python 编辑xml中namespace问题中出现很多ns0
原始文件:
- Dynamics AX 2012 在BI分析中建立数据仓库的必要性
AX系统已有的BI分析架构 对于AX 的BI分析架构,相信大家都了解,可以看Reinhard之前的译文[译]Dynamics AX 2012 R2 BI系列-分析的架构 . AX 的BI分析架构的优势 ...
- Java读取文件最后两行
File f=new File("C:\\123.txt"); BufferedReader br = new BufferedReader(new FileReader(f)); ...
- php如何在某个时间上加一天?一小时? 时间加减
<?php date_default_timezone_set('PRC'); //默认时区 echo "今天:",date("Y-m-d",time() ...
- 【转】缺少servlet-api.jar包
转载地址:http://blog.sina.com.cn/s/blog_6cfb18070100n7pu.html 在Eclipse中缺省servlet-api.jar包,由于servlet-apbi ...
- Bootstrap学习(1)
文档顶部写上H5的DOCTYPE声明 head部分: <meta> (1)编码方式 (2)在IE运行最新的渲染模式 <meta http-equiv="x-ua-comp ...
- 设计一个泛型类Collection
要求:设计一个泛型类Collection,它存储object对象的集合(在数组中),以及该集合当前的大小.提供public方法isEmtpy,makeEmpty,insert,remove,isPre ...