1、概念
・サーブレットフィルタとは、サーブレットやJSPの「共通の前後処理」を記述するための仕組みです。
・フィルタはサーブレットやJSPの前に位置し、実行前と後に、リクエスト、レスポンスに対して任意の処理を行うことができます。
・フィルタの処理対象は任意のURLパターンが指定可能です。フィルタ対象はサーブレットとJSPだけではなく、
 Html、画像などWebアプリケーション内のリソースであれば何にでもフィルタをかけることができます。

2、フィルタの作成
・javax.servlet.Filter インターフェイス を実装したフィルタクラスを作成する。
・web.xmlにフィルタを登録する。

3、フィルタインタフェース
【javax.servlet.Filter】
フィルタクラスは、このインタフェースを実装して作成します。
3つのメソッドが定義されており、処理のある・なしにかかわらず3つとも実装必要です。
・void init(FilterConfig filterConfig): 初期化
・void doFilter(ServletRequest request, ServletResponse response, FilterChain chain):フィルタ処理
・void destroy() :終了処理

【javax.servlet.FilterConfig】
Filter.init()メソッドの引数に指定されるインタフェースです。

【javax.servlet.FilterChain】
Filter.doFilter()メソッドの引数に指定されるインタフェースです。
Filter は、チェーン内の次のフィルタを呼び出す時あるいは、呼び出している Filter がチェーン内の最後の Filter なら、
チェーンの終わりのリソースを呼び出す時に FilterChain を利用します。

4、web.xmlへの登録
    <filter>
        <filter-name>フィルタ名</filter-name>
        <filter-class>クラスファイル</filter-class>        
        <init-param>
            <param-name>初期化パラメータ名</param-name>
            <param-value初期化>値</param-value>
        </init-param>
    </filter>

<filter-mapping>
        <filter-name>フィルタ名</filter-name>
        <url-pattern>フィルタをかけるURL対象</url-pattern>
    </filter-mapping>

「url-pattern」は、
・「/*」は、全てのURLリソースに対してフィルタを適用します。
・「/admin/*」は、adminディレクトリ以下への呼び出しにフィルタ適用。
・「*.do」は、.doというURLに適用

5、フィルタのオン/オフ
フィルタへweb.xmlを編集することで付けたりはずしたりできます。
例えば、<filter-mapping>要素のコメントアウトでフィルタをオフします。

6、フィルタの順序
<filter-mapping>要素を記述した順番でフィルタが呼ばれます。

7、初期化パラメータ
フィルタは実行時に設定情報をweb.xmlから読み込むことができます。
初期化パラメータは<filter>の<init-param>要素で指定できます。
web.xmlに指定した初期化パラメータをフィルタクラスで読み込むためには、
Filter.init()メソッド内でjavax.servlet.FilterConfig.getInitParameter()メソッドを使用します。

Servlet基本_Filter的更多相关文章

  1. 深入Jetty源码之Servlet框架及实现(Servlet、Filter、Registration)

    概述 Servlet是Server Applet的缩写,即在服务器端运行的小程序,而Servlet框架则是对HTTP服务器(Servlet Container)和用户小程序中间层的标准化和抽象.这一层 ...

  2. servlet文件下载

    创建web工程servlet,新建DownloadServlet.java package com.xmyself.servlet; import java.io.File; import java. ...

  3. java中servlet的各种路径

    1. web.xml中<url-pattern>路径,(叫它Servlet路径!) > 要么以“*”开关,要么为“/”开头 2. 转发和包含路径 > *****以“/”开头:相 ...

  4. Servlet监听器笔记总结

    监听器Listener的概念 监听器的概念很好理解,顾名思义,就是监视目标动作或状态的变化,目标一旦状态发生变化或者有动作,则立马做出反应. Servlet中的也有实现监听器的机制,就是Listene ...

  5. JavaWeb——Servlet

    一.基本概念 Servlet是运行在Web服务器上的小程序,通过http协议和客户端进行交互. 这里的客户端一般为浏览器,发送http请求(request)给服务器(如Tomcat).服务器接收到请求 ...

  6. servlet 简介,待完善

    什么是Servlet?① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 Servlet相关包的介绍--javax. ...

  7. java web学习总结(五) -------------------servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  8. servlet使用入门

    创建web工程servlet,然后新建TestServlet.java package com.xmyself.servlet; import java.io.IOException; import ...

  9. 基于jsp+servlet图书管理系统之后台万能模板

    前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...

随机推荐

  1. 【架构师之路】集群/分布式环境下5种session处理策略

    [架构师之路]集群/分布式环境下5种session处理策略   转自:http://www.cnblogs.com/jhli/p/6557929.html 在搭建完集群环境后,不得不考虑的一个问题就是 ...

  2. 知识点:Mysql 基本用法之触发器

    触发器 使用触发器可以定制用户对表进行[增.删.改]操作时前后的行为 注意:没有查询 一 .创建触发器 触发器基础语法: # 插入前 CREATE TRIGGER tri_before_insert_ ...

  3. UE4里的自定义深度功能

    转自:http://www.52vr.com/article-1866-1.html 随着物理渲染系统的发布,虚幻引擎4同时引进了一个新的深度缓存功能,它叫作“自定义深度”,可以用于诸如编辑器里的选择 ...

  4. 使用FPM打包工具打rpm包

    使用FPM打包工具打rpm包 一:安装ruby环境和gem命令 fpm 是 ruby写的,因此系统环境需要ruby且版本必须大于1.8.5 # yum -y install ruby rubygems ...

  5. SQL Server 导入超大脚本

    另外使用window server 版操作系统,执行脚本文件比普通版操作系统大大提升大小限制. 在执行SQL脚本的时候要是出现了这些情况我咋办呢? 步入正轨 应用场景:服务器升级,比如原来是2003的 ...

  6. asp.net 中日期的格式化显示的方法

    在Asp.net 中经常使用日期,在不同的场合,对日期的显示方式有不同的要求,为此,自己总结了一些日期格式化的方式,仅供学习参考使用: C#格式化日期时间 DateTime dt = DateTime ...

  7. JVM总结-java基本类型

    为什么要引进基本类型? Java 引进了八个基本类型,来支持数值计算.Java 这么做的原因主要是工程上的考虑,因为使用基本类型能够在执行效率以及内存使用两方面提升软件性能. Java 虚拟机的 bo ...

  8. ios的input的输入框,readonly的时候,会弹出一小块ios的软键盘

    找了半天方法,结果input直接加个方法就好了 onfocus="this.blur()"

  9. Python下的opencv小问题大智慧

    1.今晚日了狗了,图像显示不按照预期出现,然后突然就好了...... 2.根据第一个问题举一个例子,另一个我没保存... 是不是分不清楚????   plt.imshow(wjy2, cmap='gr ...

  10. Java多线程例子

    package rom; import java.awt.image.AreaAveragingScaleFilter; public class Xamle_2 { private static T ...