前段时间被问到写过过滤器和监听器没有,甚囧....今天有空也写一个,其实很简单
字面上来看,过滤器嘛就是要 “过滤掉某些不想要东西” 的东东,过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上,一般可以用来设置字符的编码,登陆设置,权限的管理等等。
定义:
Servlet 过滤器是小型的 Web 组件,它们拦截请求和响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。过滤器是通常封装了一些功能的 Web 组件,这些功能虽然很重要,但是对于处理客户机请求或发送响应来说不是决定性的。典型的例子包括记录关于请求和响应的数据、处理安全协议、管理会话属性,等等。过滤器提供一种面向对象的模块化机制,用以将公共任务封装到可插入的组件中,这些组件通过一个配置文件来声明,并动态地处理。
一个简单的处理乱码的过滤器:
public class EncodingFilter implements Filter{
private FilterConfig config;
public void destroy() {
this.config=null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filteChain) throws IOException, ServletException {
HttpServletRequest hsr = (HttpServletRequest)request;
hsr.setCharacterEncoding("gbk");//将编码格式设为GBK,因为服务器的Servlet用的是GBK编码,前台Jsp为iso8859-1,如果不处理就会出现乱码
filteChain.doFilter(request, response);//激活下一个相关的过滤器,如果为设置则相应的Servlet或者jsp就不会被激活
}
public void init(FilterConfig config) throws ServletException {
this.config = config;//过滤器初始化的时候进行的操作
}
}
设置一个Servlet:
public class Servlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// super.doPost(req, resp);
String username =req.getParameter("username");
System.out.println(username);
}
}
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>filter</filter-name>
<filter-class>filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/adminLogin</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>adminLogin</servlet-name>
<servlet-class>filter.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>adminLogin</servlet-name>
<url-pattern>/adminLogin</url-pattern>
</servlet-mapping>
</web-app>
测试页面:
<%@ page language="java" import="java.util.*" pageEncoding="iso8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="adminLogin" method="post">
<input type="text" name="username" id="username">
<input type="submit" value="submit">
</form>
</body>
</html>
分享到:
相关推荐
**JSP过滤器详解与项目实例** 在Java Web开发中,JSP(JavaServer Pages)是用于创建动态网页的一种技术,而过滤器(Filter)则是Servlet API中的一部分,用于处理HTTP请求和响应,提供了一种预处理和后处理请求的...
在标题“jsp过滤器(编码)”中,我们关注的是如何使用过滤器来处理编码问题。在`web.xml`配置文件中,我们可以定义一个过滤器来设定请求和响应的编码格式。以下是一个示例配置: ```xml <filter-name>...
### jsp过滤器——解决中文乱码问题 #### 背景介绍 在Web应用开发过程中,特别是使用Java Server Pages (JSP)进行中文字符处理时,经常遇到的一个问题是中文字符显示为乱码。这主要是因为客户端与服务器端之间存在...
JSP过滤器是Servlet规范的一部分,它遵循`javax.servlet.Filter`接口。过滤器通过在请求到达目标资源(如Servlet、JSP页面)之前拦截请求,以及在响应返回给客户端之前拦截响应,实现了对HTTP请求和响应的透明处理。...
jsp过滤器与监听器,很好的讲课和学习的ppt
【jsp过滤器开发】 在JavaEE的Web应用中,过滤器(Filter)是Servlet2.3和JSP1.2规范引入的重要组件,它在处理HTTP请求和响应时扮演着关键角色。过滤器的主要功能是对请求和响应进行预处理和后处理,允许开发者在...
【JSP过滤器及乱码解决详解】 在Web开发中,字符编码问题一直是困扰开发者的重要问题,特别是当涉及到多语言环境时。JSP过滤器的使用可以帮助我们有效地处理字符编码,确保数据在不同组件之间的一致性和正确性。...
首先,我们需要了解JSP过滤器的基本概念。在Servlet规范中,过滤器是拦截请求和响应的组件,可以在请求到达目标资源之前或响应离开目标资源之后进行预处理和后处理。它们是基于Delegation模型工作的,通过`doFilter...
本篇文章将详细讲解如何处理JSP中的中文乱码以及如何通过过滤器(Filter)来解决这一问题。 首先,中文乱码的处理主要涉及到字符集(Charset)的概念。在JSP中,当请求参数包含中文字符时,如果不设定字符编码,...
**JSP过滤器详解** JSP(JavaServer Pages)过滤器是Servlet API的一部分,它允许开发者在请求到达目标资源(如JSP页面、Servlet等)之前或之后进行处理。过滤器是实现动态网页应用程序功能扩展的重要工具,尤其...
JSP过滤器是基于Servlet规范的Filter接口实现的,它可以拦截请求,对请求和响应进行预处理或后处理。在`web.xml`配置文件中,我们定义一个filter和filter-mapping,指定过滤器的类和需要拦截的URL模式。 ```xml ...
本篇将深入讲解`JSP`中的过滤器,并通过实例来帮助理解其工作原理和应用场景。 首先,我们需要了解`Filter`的基本概念。过滤器是一个实现了`javax.servlet.Filter`接口的类,它可以拦截HTTP请求并进行预处理,或者...
JSP过滤器提供了一种更为统一和高效的方式来解决这个问题。在上述例子中,我们创建了一个名为`XssFilter`的Servlet过滤器,它实现了`javax.servlet.Filter`接口。这个过滤器在请求到达业务层之前拦截它们,并使用`...
为了解决这个问题,我们可以使用jsp过滤器来实现编码设置。我今天要分享的就是使用jsp过滤器解决中文乱码问题的方法。 什么是jsp过滤器? jsp过滤器(Filter)是一种特殊的jsp组件,用于对jsp页面的请求和响应进行...
JSP过滤器是一种有效的防止XSS攻击的方法,通过在请求进入业务逻辑之前对输入数据进行处理,过滤掉可能包含恶意代码的字符。 首先,我们来理解Servlet过滤器的工作原理。Servlet过滤器是Java Servlet API的一部分,...
JSP过滤器(Filter)是Servlet技术中的一个组件,用于对进入目标资源(如Servlet、JSP页面)的请求和/或从目标资源发出的响应进行干预和处理。这篇文章汇总了在web.xml文件中配置JSP过滤器Filter的多种方法,介绍了...
本文将深入探讨如何在JSP中利用过滤器实现用户权限限制功能。 首先,我们需要了解过滤器的概念。在Servlet规范中,过滤器是Java Web应用中的一个组件,它可以在请求被Servlet处理之前和之后执行一些预处理或后处理...
### JSP Filter 过滤器判断用户是否登录 在Web应用开发中,权限验证是非常重要的一个环节。通过使用过滤器(Filter),可以在请求到达目标资源(如Servlet或JSP页面)之前进行处理,例如实现登录状态检查、权限验证...
过滤器在Servlet容器中扮演着拦截请求和响应的角色,可以在请求到达目标资源(如JSP页面)之前对其进行预处理,包括设置合适的字符编码,以确保中文字符正确解析。下面将详细介绍如何使用过滤器来解决这个问题。 ...