过滤器是能够对目标资源的请求和响应进行截取的。
举个例子来说,比如现在有一个目标资源,这个目标资源正好是要被一个过滤器过滤的。那么当你访问这个目标资源的时候,这个过滤器将会截取你的这个请求并交给这个过滤器的实现类来做一些逻辑或业务的处理。
有过一点WEB开发的人员都知道,若在jsp上提交带中文参数的请求之后,这个参数到达服务端再直接取出来的时候就变成了乱码。好的,下面我写一个过滤器来解决这个中文乱码问题:
首先需要写一个类并实现javax.servlet.Filter接口:
package com.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 EncodeFilter implements Filter{
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("gb2312"); //业务,我在这里只是做了一个简单的转码工作
chain.doFilter(request, response); //放行
}
public void init(FilterConfig filterConfig) throws ServletException {
}
}
接下来需要在web.xml中注册一个过滤器:
<!-- 注册过滤器 -->
<filter>
<!-- 注册过滤器的名称 -->
<filter-name>CharacterEncodingFilter</filter-name>
<!-- 注册过滤器实现类所在的url -->
<filter-class>com.filter.EncodeFilter</filter-class>
</filter>
<!-- 配置过滤器监听路径 -->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!-- 监听拦截所有的url -->
<url-pattern>/*</url-pattern>
</filter-mapping>
好的,在这里为了测试简单,我就不添加struts框架了,我直接用servlet来接收从jsp页面上提交过来的参数:
package com.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public TServlet() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String parameter = request.getParameter("parameter");
System.out.println("The parameter is : " + parameter);
}
}
然后是jsp的编写了:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Filter Page</title>
</head>
<body>
<form action="/MyFilter/servlet/TServlet" method="post">
Please input parameter:
<input type="text" name="parameter"/>
<input type="submit" value=" Submit " />
</form>
</body>
</html>
OK,所有工作结束。这时候我并没有在上面的servlet代码中对接收过来的参数做转码工作,但是当你再传中文参数的时候也不会出现乱码的问题了,这说明这个过滤器已经成功了。
最后需要补充说明的一点是,通过转发形式的请求是不会被过滤器拦截到的
分享到:
相关推荐
【Java Filter过滤器详解】 Java Filter是Java Servlet技术的一部分,它允许开发者在Servlet容器中对HTTP请求和响应进行拦截处理,实现数据过滤、权限控制、日志记录等多种功能。Filter的生命周期包括三个主要方法...
【Java Filter过滤器在项目开发中的应用】 Java Filter(过滤器)是Java EE(现在称为Jakarta EE)规范的一部分,它允许开发者在请求被实际处理之前或之后进行拦截和处理。过滤器在Web应用程序中扮演着重要角色,...
本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter接口与生命周期 Filter是Servlet API中的一个接口,位于`javax.servlet`包下。它定义了三个关键方法: -...
为了实现在过滤器中获取请求体内容以及响应内容的功能,本方案主要采用了以下技术手段: 1. **对`HttpServletRequest`进行封装**:通过创建`HttpServletRequestWrapper`子类来包装原始请求对象,并重写`getReader()...
【Java Filter 过滤器详解】 Java Filter,也称为过滤器,是Servlet技术中的核心组件,主要用于在HTTP请求到达目标Servlet或资源之前以及响应返回给客户端之前进行拦截和处理。通过Filter,开发者能够实现诸如权限...
JavaFilter自定义编码过滤器知识点 一、Filter接口和 FilterChain接口 在 Java 中, Filter 接口和 FilterChain 接口是 Servlet 规范中的两个重要组件。 Filter 接口用于定义一个过滤器, FilterChain 接口用于将...
### JSP中Filter类实现过滤器功能 #### 概述 在Java Web开发中,`Filter`是一种常用的技术,它可以对请求和响应进行预处理或后处理,常用于执行一些通用的操作,例如权限验证、编码统一设置、敏感词过滤等。本文...
### Java中的Filter(过滤器)使用详解 #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后...
在Java Web中,过滤器是Servlet API的一部分,通过实现`javax.servlet.Filter`接口并覆盖`doFilter()`方法来完成特定的过滤任务。这个`SetCharacterEncodingFilter`通常会在请求到达Servlet之前设置请求的字符编码,...
在Java Servlet规范中,Filter接口定义了过滤器的行为。一个过滤器可以通过实现`doFilter()`方法来拦截请求和响应,并对其进行处理。通过在web.xml配置文件中定义过滤器,我们可以指定它应用到哪些Servlet或URL模式...
Java中的Filter过滤器是Servlet技术中的一个重要组成部分,它允许开发者对Web服务器管理的任何资源进行拦截,以便实现一些特定的功能。比如,通过Filter可以实现URL级别的权限控制,阻止非法访问;进行敏感词过滤,...
在Java Web开发中,过滤器(Filter)是一种用于拦截请求和响应的重要机制,可以实现对用户请求的预处理和后处理,以及对响应的处理。本文将深入解析“JAVA过滤器标准代码”,探讨其核心功能、实现原理以及应用场景。...
1. **过滤器接口**:`javax.servlet.Filter`是Java Web应用中的过滤器接口,所有自定义过滤器都必须实现该接口。 2. **生命周期方法**: - `init(FilterConfig config)`:过滤器初始化方法,仅执行一次,在容器启动...
Java的过滤器(Filter)是Java Web开发中的一个重要概念,主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许开发者在请求被实际处理之前或之后进行拦截,执行预处理或后处理操作,例如权限校验、数据转换、...
8. **使用现代框架**:现代Java Web框架如Spring MVC和Filter API一起使用,可以更方便地管理和配置过滤器,同时提供更多的功能和灵活性。 在提供的压缩包文件`src`中,可能包含了实现上述知识点的源代码。这些代码...
JAVA Web 过滤器 Filter 学习资料 JAVA Web 过滤器 Filter 是一种强大且灵活的工具,用于在服务器上过滤与 servlet 或 JSP 页面相关的请求信息。它提供了多种选择,包括以常规方式调用资源、利用修改后的请求信息...
在Java Web开发中,过滤器(Filter)是一种非常重要的技术组件,它可以在请求到达目标资源(如Servlet或JSP页面)之前或之后执行某些操作。过滤器可以用来实现各种功能,如用户认证、权限检查、编码转换、日志记录等。...
Java Servlet过滤器是Java Web应用程序中的重要组件,它在请求被Servlet处理之前和响应返回给客户端之后进行拦截,可以用于实现各种功能,如字符编码转换、URL重写、权限控制等。本篇将深入讲解Java Servlet过滤器的...
在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许开发者在请求被处理之前或之后执行一些额外的操作。下面将详细讲解Java中五种常用的过滤器及其应用场景。 1. **使浏览器不缓存页面的过滤器** ...
Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在数据处理前后插入自定义逻辑,对请求和响应进行拦截、修改或增强。本教程将深入讲解Java过滤...