http://pengenjing.iteye.com/blog/1607248

这里写的过滤器用的是适配器模式,思路为:

先写一个类实现Filter,然后在让你写的过滤器来继承自这个类;

步骤:1.建一个AbstractFilter实现Filter;2.建一个类来继承AbstractFilter,还要在web.xml中配置;

web.xml中的配置:

  1. <filter>
  2. <filter-name>validateFilter</filter-name>
  3. <filter-class>com.peng.ValidateFilter(这里写的是类的完全限定名)</filter-class>
  4. </filter>
  5. <filter-mapping>
  6. <filter-name>validateFilter</filter-name>
  7. <url-pattern>/*(这里是让所有的通过)</url-pattern>
  8. </filter-mapping>

Abstractr.java

  1. public abstract class AbstractFilter implements Filter{
  2. public void destroy() {}
  3. public abstract void doFilter(ServletRequest request, ServletResponse response,
  4. FilterChain chain) throws IOException, ServletException ;
  5. public void init(FilterConfig filterConfig) throws ServletException {}
  6. }

下面是我自己写的过滤器:我给他取名为  ValidateFilter;

ValidateFilter.java

  1. package com.kaishengit.web.filter;
  2. import java.io.IOException;
  3. import javax.servlet.FilterChain;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.ServletRequest;
  6. import javax.servlet.ServletResponse;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import javax.servlet.http.HttpSession;
  10. import com.kaishengit.entity.User;
  11. import com.kaishengit.util.Const;
  12. public class ValidateFilter extends AbstractFilter{
  13. @Override
  14. public void doFilter(ServletRequest req, ServletResponse resp,
  15. FilterChain chain) throws IOException, ServletException {
  16. HttpServletRequest request = (HttpServletRequest) req;
  17. HttpServletResponse response = (HttpServletResponse) resp;
  18. //判断如果是index.jspx 放行
  19. String uri = request.getRequestURI();
  20. uri = uri.substring(uri.lastIndexOf("/")+1);
  21. //System.out.println("当前请求的路径: " + uri);
  22. if("".equals(uri) || "index.jsp".equals(uri) || "index.jspx".equals(uri) || "login.jspx".equals(uri) || uri.endsWith("png") || uri.endsWith("jpg")) {
  23. //所有人都能请求到的URI,放行
  24. chain.doFilter(request, response);
  25. } else {    //下面是判断是否有session,也就是用户是否已登录状态;
  26. HttpSession session = request.getSession();
  27. User user = (User) session.getAttribute(Const.USER_IN_SESSION);
  28. if(user == null) {
  29. System.out.println("URI:" + uri + ">>>>访问被拒绝!");
  30. response.sendRedirect("index.jspx?code=10002");
  31. } else {
  32. chain.doFilter(request, response);
  33. }
  34. }
  35. }
  36. }

Filter过滤器的写法的更多相关文章

  1. Servlet的学习之Filter过滤器技术(1)

    本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器, ...

  2. [转]Servlet的学习之Filter过滤器技术

    本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器, ...

  3. HBase - Filter - 过滤器的介绍以及使用

    1 过滤器HBase 的基本 API,包括增.删.改.查等.增.删都是相对简单的操作,与传统的 RDBMS 相比,这里的查询操作略显苍白,只能根据特性的行键进行查询(Get)或者根据行键的范围来查询( ...

  4. JavaWeb学习篇--Filter过滤器

    Filter过滤器简介 ServletAPI中提供了一个Filter接口,开发web应用时,如果编写的 java 类实现了这个接口,则把这个java类称之为过滤器Filter. WEB服务器每次在调用 ...

  5. filter 过滤器(监听)

    Filter 过滤器 1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, ...

  6. Java防止SQL注入2(通过filter过滤器功能进行拦截)

    首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...

  7. Filter(过滤器)学习

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  8. javaweb学习总结(四十二)——Filter(过滤器)学习

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  9. Filter过滤器简单应用( 接口访问控制 )

    一.描述 在提供安卓.IOS客户端接口时,可以在登陆接口分配Session给客户端,用于判断其他接口是否是合法访问,以避免将所有的接口都暴露在web中可以由路径直接访问.但是最近的一个项目中的移动接口 ...

随机推荐

  1. LCD接口(转载)

    LCD接口分类 1.   I8080接口,我觉得应该就是所谓的8080,通常会用在12864屏上面,且有内部sdram,不需要实时的刷新图片,速度有限制, 支持的数据宽度有8/9/16/18bit,接 ...

  2. nginx,控浏览器缓存,前端优化方案

    1,困惑 做web项目,对于开发者来说,一个最头痛的问题就是浏览器缓存,有缓存,js更改了,html更改了,发布服务器以后用户往往无法通过浏览器访问到最新的类容,需要用户主动去刷新页面, 因为一直做企 ...

  3. jquery.min.map 404 (Not Found)出错的原因及解决办法

    Chrome 更新后出现了 jquery.min.map 404  (Not Found) 的信息 这个到底是什么东西?查询了一下,得到了以下资料 JQuery 官方解释 摘录一下內容 从 jQuer ...

  4. 在XP上安装WinPython最新版本

    2015年3月30日星期一 16:01:47     晴 WinPython 新版本不再支持Windows XP平台,会出现错误提示WindowsError 127. 按照官网论坛上的解决方案(htt ...

  5. IOS随机随学

    1.Objective-C是一种面向对象的语言. 2.Objective-C类声明和实现包括两个部分:接口部分和实现部分. 3.Objective-C中方法不是在“.”运算符,而是采用“[]”运算符. ...

  6. netty 解决TCP粘包与拆包问题(二)

    TCP以流的方式进行数据传输,上层应用协议为了对消息的区分,采用了以下几种方法. 1.消息固定长度 2.第一篇讲的回车换行符形式 3.以特殊字符作为消息结束符的形式 4.通过消息头中定义长度字段来标识 ...

  7. Live2d-cocos2dx教程(一)例子搭建及运行

    前言 这篇文章不讲代码,介绍live2d-cocos2dx-sdk 的下载.配置运行官网例子以及遇到的问题解决方案.第一次接触这个,有错的地方,希望大神指正.目前cocos2dx-live2d资料很少 ...

  8. sass心得

    1.sass的安装:(1)下载安装Ruby,记得安装的时候勾选第二项,(2)打开控制面板gem install sass(人品好的话,一下子就能安装成功)(3)如果(2)安装不成功进行一下步骤:gem ...

  9. JSP 实现◆菱形 三角形△ 的输出

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  10. tomcat7+jdk1.8一键安装脚本

    #!/bin/bash #--------------------------------------------------------------------- # # Author : 大象无形 ...