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. 关于虚拟机下centOS版linux系统ifconfig只显示inet6ip,不显示inet4ip的问题

    在linux命令窗口输入ifconfig会显示如下 [root@localhost Desktop]# ifconfig eth0   Link encap:Ethernet  HWaddr 00:0 ...

  2. Css学习(4)

    文档流(标准流) 元素自上而下,自左而右,块元素独占一行,行内元素在一行上显示,碰到父集元素的边框换行. 浮动布局 float:  left   |   right 特点: ★元素浮动之后不占据原来的 ...

  3. centos7 使用二进制安装mysql 5.7.23

    1.下载二进制安装包 mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz cd /usr/local/src wget https://cdn.mysql.com// ...

  4. C++连接mysql及遇到的相关问题

    最近接触了很多数据库的东西,本来是一直接触的是sql server,不过由于项目需要就开始对mysql进行了连接.下面就让我这个菜鸟浅谈下经验吧. 对于C++连接mysql,我不太喜欢多下载一个软件m ...

  5. jquery事件及插件

    jquery事件 方法 描述 bind() 向匹配元素附加一个或更多事件处理器 blur() 触发.或将函数绑定到指定元素的 blur 事件 change() 触发.或将函数绑定到指定元素的 chan ...

  6. JS+Ajax+Servlet:记录页面访问时间

    1.前端JS记录页面访问时间 1.1JQuery版本: <script type="text/javascript" src="js/jquery.min.js&q ...

  7. centos 7怎么通过图形界面来配置静态ip

    除了通过修改配置文件的方法来配置静态ip,我们还可以通过图形界面来配置,这样做其实更加方便一点 先进入设置页面 选择网络 我这里是通过有线上网的,我们之间修改配置就可以了 选择ipv4,和manual ...

  8. ubuntu 16.04 静态ip的配置

    nssa-sensor1@nssa-sensor1:~$ vim /etc/network/interfaces 以下是编辑文件的内容# interfaces(5) file used by ifup ...

  9. Java - 15 Java 正则表达式

    Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. Java正则表达式和Perl的是最为相似 ...

  10. The Kernel Boot Process.内核引导过程

    原文标题:The Kernel Boot Process 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下.一来自己 ...