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与PHP、ASP、ASP.NET等语言类似,运行在服务端的语言。 JSP(全称Java Server Pages)是由Sun Microsystems公司倡导...
Swift教程 -Swift for语句 for 循环执行设置的次数。我们使用 for 关键字以及结束条件和for循环声明。例子以下循环语句向控制台...
Swift for-in 循环Swift 循环Swift for-in 循环用于遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中...
高效 Rust现在你已经学会了如何编写一些 Rust 代码。但是在编写出 Rust 代码和编写出良好的 Rust 代码,还是有一定区别的。这部...
不依赖 stdlib默认情况下,std 会链接到每一个 Rust 的封装对象。在一些场景下,这并不是很理想的,在需要的情境下使用 #![no_st...