JSP 过滤器
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 过滤器的更多相关文章
- JSP-Runoob:JSP 过滤器
ylbtech-JSP-Runoob:JSP 过滤器 1.返回顶部 1. JSP 过滤器 JSP 和 Servlet 中的过滤器都是 Java 类. 过滤器可以动态地拦截请求和响应,以变换或使用包含在 ...
- jsp过滤器
1.ip过滤 IpFilter: package com.cn.filter; import java.io.IOException; import javax.servlet.Filter; imp ...
- springboot jsp,过滤器,拦截器
springboot使用jsp,过滤器,拦截器(拦截器与过滤器区别重点) jsp使用配置 一 创建springboot项目在maven中暂时只添加两个Dependencies :devtools(热部 ...
- jsp 过滤器 Filter 配置
.如果要映射过滤应用程序中所有资源: <filter> <filter-name>loggerfilter</filter-name> <filt ...
- JSP过滤器Filter配置过滤类型汇总
一.配置方法1 映射过滤应用程序中所有资源<filter> <filter-name>loggerfilter</filter-name> <fi ...
- JSP介绍(4)--- JSP 过滤器
过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的: 在客户端的请求访问后端资源之前,拦截这些请求. 在服务器的响应发送回客户端之前,处理这些响应. 过滤器通过 Web 部署描述符 ...
- [jsp学习笔记] jsp过滤器
- jsp提交表单数据乱码,内置对象,以及过滤器
jsp提交表单数据乱码解决方案 通过form表单给服务器提交数据的时候,如果提交的是中文数据,那么可能会出现乱码,如果表单的请求方式是post请求,那么可以使用如下方案解决乱码: 在调用getPara ...
- Servlet和JSP中的过滤器都是Java类
JSP 过滤器 Servlet和JSP中的过滤器都是Java类,它们存在的目的如下: 在请求访问后端资源时拦截它 管理从服务器返回给客户端的响应 下面列出了多种常用的过滤器类型: 认证过滤器 数据压缩 ...
随机推荐
- linux buff/cache释放
手动释放cache # > /proc/sys/vm/drop_caches
- tensorflow 优化图
当我们把训练好的tensorflow训练图拿来进行预测时,会有多个训练时生成的节点,这些节点是不必要的,我们需要在预测的时候进行删除. 下面以bert的图为例,进行优化 def optimize_gr ...
- sshd服务防止暴力破解
sshd防止暴力破解几种方式: 1.密码足够复杂 2.修改默认端口号 3.不适用root用户名登录. #是否可以禁止root身份登录?不行,因为有些程序需要使用root什么登录,另外判断一个用户是不是 ...
- JDBC中链接数据库前为什么要用Class.forName(驱动类)加载驱动类?
使用JDBC链接数据库时,为什么要先使用Class.forName(String name)来加载类? 答: 实际上就是为了加载类时,调用静态初始化块中的注册函数. 可以看一下MySql的Driber ...
- 逆向工程-对native层的一次简单逆向实践
关注一款app很久了,这款app为了防止别人逆向破解拉取数据做了很多工作: 防止别人修改apk包,执行关键动作时对dex文件进行md5验证: 防止用户调用接口批量拉数据,对返回的web网页里个人信息进 ...
- JVM学习记录-线程安全与锁优化(二)
前言 高效并发是程序员们写代码时一直所追求的,HotSpot虚拟机开发团队也为此付出了很多努力,为了在线程之间更高效地共享数据,以及解决竞争问题,HotSpot开发团队做出了各种锁的优化技术常见的有: ...
- linux 安装 nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash 或者 wget -qO- htt ...
- es6学习笔记3--解构和对象
1.解构 在接收数据的地方(比如赋值的左边),解构使你使用模式去获取部分数据. 下面的代码是解构的一个例子: let obj = { first: 'Jane', last: 'Doe' }; let ...
- Netty 核心组件 Pipeline 源码分析(二)一个请求的 pipeline 之旅
目录大纲: 前言 针对 Netty 例子源码做了哪些修改? 看 pipeline 是如何将数据送到自定义 handler 的 看 pipeline 是如何将数据从自定义 handler 送出的 总结 ...
- echart 数据视图 样式重写
来源http://blog.csdn.net/u010705091/article/details/75212724 echarts折线图的数据视图样式重写 在echarts.js中,点击折线图的数据 ...