JSP教程 - JSP过滤器

JSP过滤器是可用于拦截来自客户端的请求或处理来自服务器的响应的Java类。

过滤器可用于执行验证,加密,日志记录,审核。

我们可以将过滤器映射到应用程序部署描述符文件web.xml中的JSP名称或URL模式。

过滤器按照在部署描述符中声明的顺序执行。

过滤器是实现javax.servlet.Filter接口的Java类。

javax.servlet.Filter接口定义了三个方法:

方法 描述
doFilter(ServletRequest,ServletResponse,FilterChain) 当请求/响应对通过链时由容器调用。
init(FilterConfig filterConfig) 指示正在投入使用的过滤器。
void destroy() 向过滤器指示其正在被停止服务。
 

例子

以下代码显示如何创建打印IP地址的JSP过滤器。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*; public class LogFilter implements Filter {
public void init(FilterConfig config)
throws ServletException{
String testParam = config.getInitParameter("test-param");
System.out.println("init");
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws java.io.IOException, ServletException { String ipAddress = request.getRemoteAddr();
System.out.println("IP "+ ipAddress); chain.doFilter(request,response);
}
public void destroy( ){
System.out.println("destroy");
}
}

编译LogFilter.java并将LogFilter.class类文件放在<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes 中。

在部署描述符文件web.xml中为过滤器标记创建以下条目:

<filter>
<filter-name>LogFilter</filter-name>
<filter-class>LogFilter</filter-class>
<init-param>
<param-name>your-param</param-name>
<param-value>Initialization Parameter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LogFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping

上面的过滤器将应用于所有的JSP,因为我们在我们的配置中指定了/*

多个过滤器

web.xml中的过滤器映射元素的顺序确定Web容器将过滤器应用于servlet或JSP的顺序。

以下代码显示如何在web.xml文件中使用两个过滤器。

<filter>
<filter-name>LogFilter</filter-name>
<filter-class>LogFilter</filter-class>
<init-param>
<param-name>test-param</param-name>
<param-value>Initialization Parameter</param-value>
</init-param>
</filter> <filter>
<filter-name>MyFilter</filter-name>
<filter-class>MyFilter</filter-class>
<init-param>
<param-name>test-param</param-name>
<param-value>Initialization Parameter</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>LogFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

要从上面的web.xml中反转过滤器顺序,请使用以下命令:

<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter-mapping>
<filter-name>LogFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

JSP 过滤器的更多相关文章

  1. JSP-Runoob:JSP 过滤器

    ylbtech-JSP-Runoob:JSP 过滤器 1.返回顶部 1. JSP 过滤器 JSP 和 Servlet 中的过滤器都是 Java 类. 过滤器可以动态地拦截请求和响应,以变换或使用包含在 ...

  2. jsp过滤器

    1.ip过滤 IpFilter: package com.cn.filter; import java.io.IOException; import javax.servlet.Filter; imp ...

  3. springboot jsp,过滤器,拦截器

    springboot使用jsp,过滤器,拦截器(拦截器与过滤器区别重点) jsp使用配置 一 创建springboot项目在maven中暂时只添加两个Dependencies :devtools(热部 ...

  4. jsp 过滤器 Filter 配置

    .如果要映射过滤应用程序中所有资源: <filter>    <filter-name>loggerfilter</filter-name>    <filt ...

  5. JSP过滤器Filter配置过滤类型汇总

    一.配置方法1 映射过滤应用程序中所有资源<filter>    <filter-name>loggerfilter</filter-name>    <fi ...

  6. JSP介绍(4)--- JSP 过滤器

    过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的: 在客户端的请求访问后端资源之前,拦截这些请求. 在服务器的响应发送回客户端之前,处理这些响应. 过滤器通过 Web 部署描述符 ...

  7. [jsp学习笔记] jsp过滤器

  8. jsp提交表单数据乱码,内置对象,以及过滤器

    jsp提交表单数据乱码解决方案 通过form表单给服务器提交数据的时候,如果提交的是中文数据,那么可能会出现乱码,如果表单的请求方式是post请求,那么可以使用如下方案解决乱码: 在调用getPara ...

  9. Servlet和JSP中的过滤器都是Java类

    JSP 过滤器 Servlet和JSP中的过滤器都是Java类,它们存在的目的如下: 在请求访问后端资源时拦截它 管理从服务器返回给客户端的响应 下面列出了多种常用的过滤器类型: 认证过滤器 数据压缩 ...

随机推荐

  1. IdentityServer-Protecting an API using Client Credentials

    使用客户凭证保护API 这篇快速开始将展示使用IdentityServer保护APIs的最基本使用场景. 在此场景中我们将定义一个API和一个要访问此API的客户端. 客户端将向IdentitySer ...

  2. StreamSets学习系列之StreamSets支持多种安装方式【Core Tarball、Cloudera Parcel 、Full Tarball 、Full RPM 、Docker Image和Source Code 】(图文详解)

    不多说,直接上干货! Streamsets的官网 https://streamsets.com/ 得到 https://streamsets.com/opensource/ StreamSets支持多 ...

  3. 全网最详细的Windows系统里Oracle 11g R2 Database(64bit)的完全卸载(图文详解)

    不多说,直接上干货! 前期博客 全网最详细的Windows系统里Oracle 11g R2 Database(64bit)的下载与安装(图文详解) 若你不想用了,则可安全卸载. 完全卸载Oracle ...

  4. vue导出excel数据表格功能

    前端工作量最多的就是需求,需求就是一直在变,比如当前端数据写完之后,需要用Excel把数据下载出来. 第一步安装依赖包,需要把代码下载你的项目当中 cnpm install  file-saver c ...

  5. js便签笔记(14)——用nodejs搭建最简单、轻量化的http server

    1. 引言 前端程序猿主要关注的是页面,你可能根本就用不到.net,java,php等后台语言. 但是你制作出来的网页总要运行.总要测试吧?——那就免不了用到http server.我先前都是用vis ...

  6. Solidity的delete操作

    Solidity中有个特殊的操作符delete用于释放空间,因为区块链技术做为一种公用资源,为避免大家滥用.且鼓励主动对空间的回收,释放空间将会返还一些gas. delete关键字的作用是对某个类型值 ...

  7. Ice简介+Qt代码示例

    1.ICE是什么? ICE是ZEROC的开源通信协议产品,它的全称是:The Internet Communications Engine,翻译为中文是互联网通信引擎,是一个面向对象的中间件,它封装并 ...

  8. SQL Server 笔记

    第一章数据库的基本操作: >创建数据库: create database my_db(逻辑名称) on primary ( name='my_db.mdf',(物理名称) filename='F ...

  9. 常见的加密解密算法-MD5

    一.MD5加密概述 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 13 ...

  10. 使用Unicode字符实现换行

    要让inline元素换行可以使用Unicode字符实现: <!DOCTYPE html> <html lang="en"> <head> < ...