下面是JavaWeb工程中的web.xml配置
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <filter>
- <filter-name>EncodingFilter</filter-name>
- <filter-class>com.jadyer.Filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>UTF-8</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>EncodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- </web-app>
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>com.jadyer.Filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
下面是用于设定表单传输参数编码的过滤器CharacterEncodingFilter.java
- package com.jadyer.Filter;
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- /**
- * 设定传输参数编码
- */
- public class CharacterEncodingFilter implements Filter {
- private String encoding = "ISO8859_1";
- /**
- * 当过滤器对象被销毁的时候,由Web容器调用该方法
- * @see 该方法主要用来释放过滤器对象所占用的资源
- */
- public void destroy() {}
- /**
- * 由Web容器在刚生成过滤器对象的时候进行调用,主要用来完成对过滤器的初始化工作
- * @see 该方法接收一个FilterConfig类型的参数,通过该参数以获得有关当前过滤器的信息
- * @see 例如:调用FilterConfig的getFilterName()方法可以获得过滤器的名字
- * @see 例如:调用getServletContext()方法可以获得当前的ServletContext对象
- * @see 这里主要是用来读取web.xml中设定的<param-name>encoding</param-name>的值
- */
- public void init(FilterConfig config) throws ServletException {
- encoding = config.getInitParameter("encoding");
- }
- /**
- * doFilter()方法是Filter接口中最核心的方法,完成过滤器的过滤功能
- * @see FilterChain类型的对象是保存多个过滤器执行顺序的对象
- * @see 一个Web应用中可以有多个过滤器,这些过滤器就像珠子被线串在了一起
- * @see 调用时,是一个接着一个进行调用的,调用顺序是按照过滤器在web.xml中声明的先后顺序
- * @see 通过调用FilterChain对象的doFilter()方法,可以调用下一个过滤器的doFilter()方法
- * @see 如果下一个过滤器是最后一个,则调用客户端所请求的Servlet、JSP或者其它文件
- */
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
- request.setCharacterEncoding(encoding); //设定表单参数编码方式
- chain.doFilter(request, response);
- }
- }
package com.jadyer.Filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * 设定传输参数编码 */ public class CharacterEncodingFilter implements Filter { private String encoding = "ISO8859_1"; /** * 当过滤器对象被销毁的时候,由Web容器调用该方法 * @see 该方法主要用来释放过滤器对象所占用的资源 */ public void destroy() {} /** * 由Web容器在刚生成过滤器对象的时候进行调用,主要用来完成对过滤器的初始化工作 * @see 该方法接收一个FilterConfig类型的参数,通过该参数以获得有关当前过滤器的信息 * @see 例如:调用FilterConfig的getFilterName()方法可以获得过滤器的名字 * @see 例如:调用getServletContext()方法可以获得当前的ServletContext对象 * @see 这里主要是用来读取web.xml中设定的<param-name>encoding</param-name>的值 */ public void init(FilterConfig config) throws ServletException { encoding = config.getInitParameter("encoding"); } /** * doFilter()方法是Filter接口中最核心的方法,完成过滤器的过滤功能 * @see FilterChain类型的对象是保存多个过滤器执行顺序的对象 * @see 一个Web应用中可以有多个过滤器,这些过滤器就像珠子被线串在了一起 * @see 调用时,是一个接着一个进行调用的,调用顺序是按照过滤器在web.xml中声明的先后顺序 * @see 通过调用FilterChain对象的doFilter()方法,可以调用下一个过滤器的doFilter()方法 * @see 如果下一个过滤器是最后一个,则调用客户端所请求的Servlet、JSP或者其它文件 */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(encoding); //设定表单参数编码方式 chain.doFilter(request, response); } }
字符过滤器:
CharFilter.java
- package servlet;
- import java.io.IOException;
- import java.util.Enumeration;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- public class CharFilter implements Filter {
- public void destroy() {
- System.out.println("aaaaaaaaaa");
- }
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- String content = request.getParameter("text");
- if (content != null) {
- if (content.indexOf("AAA") == -1) {
- chain.doFilter(request, response);
- } else {
- System.out.println("有非法文字");
- }
- } else {
- chain.doFilter(request, response);
- }
- }
- public void init(FilterConfig filterConfig) throws ServletException {
- String charset = filterConfig.getInitParameter("charset");
- System.out.println(charset);
- Enumeration<String> servletName = filterConfig.getInitParameterNames();
- while (servletName.hasMoreElements()) {
- String object = (String) servletName.nextElement();
- System.out.println(object + "="
- + filterConfig.getInitParameter(object));
- }
- }
- }
package servlet; import java.io.IOException; import java.util.Enumeration; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class CharFilter implements Filter { public void destroy() { System.out.println("aaaaaaaaaa"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String content = request.getParameter("text"); if (content != null) { if (content.indexOf("AAA") == -1) { chain.doFilter(request, response); } else { System.out.println("有非法文字"); } } else { chain.doFilter(request, response); } } public void init(FilterConfig filterConfig) throws ServletException { String charset = filterConfig.getInitParameter("charset"); System.out.println(charset); Enumeration<String> servletName = filterConfig.getInitParameterNames(); while (servletName.hasMoreElements()) { String object = (String) servletName.nextElement(); System.out.println(object + "=" + filterConfig.getInitParameter(object)); } } }
web.xml配置
- <filter>
- <filter-name>char</filter-name>
- <filter-class>servlet.CharFilter</filter-class>
- <init-param>
- <param-name>charset</param-name>
- <param-value>gbk</param-value>
- </init-param>
- <init-param>
- <param-name>it</param-name>
- <param-value>hope</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>char</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
相关推荐
接下来,我们将探讨五个经典的Servlet过滤器实例: 1. **字符集过滤器**:这个过滤器用于确保所有请求和响应都使用统一的字符编码,如UTF-8。在doFilter()方法中,我们可以通过设置HttpServletRequest和...
1. `init(FilterConfig config)`:在过滤器实例化后并首次被调用时,服务器会调用这个方法。在这里,可以初始化过滤器的配置参数,这些参数通常在`web.xml`文件中定义。 2. `doFilter(ServletRequest request, ...
### Servlet过滤器小实例 #### 实例背景与需求分析 在Web开发中,为了保障系统的安全性和稳定性,经常需要对接收到的HTTP请求进行预处理,比如验证用户身份、过滤恶意请求等。通常情况下,这些预处理操作可以在...
在这个实例代码中,我们将深入探讨Servlet过滤器的使用,以及如何通过它来增强应用程序的功能。 首先,我们需要了解Servlet过滤器的基本原理。在`web.xml`部署描述符中,我们可以通过`<filter>`和`<filter-mapping>...
在本实例中,我们将深入探讨Servlet过滤器(Filter)的使用和实现,以及它在实际应用中的重要性。 一、Servlet过滤器简介 Servlet过滤器遵循Java Servlet规范,通过实现`javax.servlet.Filter`接口来创建自定义过滤...
这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数。 b、doFilter(ServletRequest,ServletResponse,FilterChain)...
Servlet过滤器大全,各种详细使用的代码! 一、字符编码的过滤器 二、使浏览器不缓存页面的过滤器 三、检测用户是否登陆的过滤器 四、资源保护过滤器 五 利用Filter限制用户浏览权限
`init()`在过滤器实例被创建并准备服务时调用,`doFilter()`是核心方法,用于拦截请求并进行处理,而`destroy()`则在过滤器生命周期结束时调用,用于清理资源。 在描述的项目中,`doFilter()`方法会被用来计数。...
servlet过滤器配置及运行过程,servlet实例用法。
本篇文章将深入探讨在Tomcat容器中如何使用servlet过滤器,并通过实例进行讲解。 首先,了解过滤器的基本概念。Servlet过滤器遵循Servlet规范中的Filter接口,该接口定义了三个关键方法:`doFilter()`, `init()` 和...
### 二、四个有用的Servlet过滤器实例 #### 1. **中文转码过滤器** 虽然在给定的部分内容中没有直接提供中文转码过滤器的具体代码实现,但我们可以大致推断其功能。该过滤器主要用于处理中文字符的编码问题,确保...
在Web应用停止或重新部署时,容器调用destroy()方法来销毁过滤器实例,并将其标记为垃圾收集。 在过滤器的定义与实现方面,一个典型的过滤器类应该实现javax.servlet.Filter接口。该接口包含三个方法:init()、...
1. 容器创建过滤器实例。 2. 初始化过滤器,通过`init()`方法传递配置参数。 3. 请求到达时,容器调用`doFilter()`方法,过滤器有机会检查和修改请求。 4. 过滤器可以选择将请求传递给下一个过滤器或直接结束请求...
Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达Servlet之前或者响应离开Servlet之后进行拦截处理。本教程将深入讲解Servlet过滤器的工作原理、配置与实际应用,同时提供相关的代码示例。 一...
此外,destroy方法用于在过滤器实例被销毁之前执行一些必要的清理工作,而init方法则是初始化过滤器实例。在init方法中可以接收一个FilterConfig对象,通过它可以获取web应用中filter的初始化参数,但在本例中,init...
Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在请求被处理之前或之后进行预处理和后处理,以此来拦截、修改或者增强请求和响应。在这个简单...
在Servlet 3.0及以上版本,过滤器可以通过容器进行实例化,支持依赖注入。这使得过滤器可以方便地利用Spring等框架提供的服务。 ### 7. 拦截与放行 在`doFilter()`方法中,通常会调用`chain.doFilter(request, ...