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. 1122 Hamiltonian Cycle (25 分)

    1122 Hamiltonian Cycle (25 分) The "Hamilton cycle problem" is to find a simple cycle that ...

  2. arduino mega 避障报距小车

    流程图 硬件 mega2560 // Pin 13 has an LED connected on most Arduino boards. // give it a name: #include&l ...

  3. IDEA15使用maven编译scala和java

    机器安装maven,在IDEA中配置maven的home 创建项目:new-maven–> scala-archetype-simple project structure–>创建src. ...

  4. Windows安装部署Tensorflow过程中的问题处理

    1 在配置Tensorflow过程中有一行命令是 python object_detection/builders/model_builder_test.py 过程中出现了 NameError: na ...

  5. Intorduction To Computer Vision

    本文将主要介绍图像分类问题,即给定一张图片,我们来给这张图片打一个标签,标签来自于预先设定的集合,比如{people,cat,dog...}等,这是CV的核心问题,图像分类在实际应用中也有许多变形,而 ...

  6. java 模拟浏览器发送post请求

    java使用URLConnection发送post请求 /** * 向指定 URL 发送POST方法的请求 * * @param url * 发送请求的 URL * @param param * 请求 ...

  7. python学习之----lxml库和HTML parser

    lxml 这个库(http://lxml.de/)可以用来解析HTML 和XML 文档,以非常底层的实现而闻名 于世,大部分源代码是用C 语言写的.虽然学习它需要花一些时间(其实学习曲线越 陡峭,表明 ...

  8. MySQL关于sql_mode的修改(timestamp的默认值不正确)

    timestamp的默认值不正确原因: MySQL5.7版本中有了一个STRICT mode(严格模式),而在此模式下默认是不允许设置日期的值为全0值的,所以想要解决这个问题,就需要修改sql_mod ...

  9. 关于QT_Creator不能在线调试问题

    电脑:W7+64位,QT:5_7_0(vs2015版本) 用QTcreator进行在线调试时出现找不到“engine...”,原因是没有在线调试软件 CDB下载地址:http://msdn.micro ...

  10. 写了一个bug----使用已经被删除的内存

    #include <iostream> #include <stdio.h> #include <memory.h> using namespace std; ; ...