Java学习之Filter

在学习jsp和java的过程中,总是出现乱码的情况。所以我们不得不经常添加这样的信息:

    <%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>

后来就加入Filter。我们来看一张图片:

这是在web客户端,服务器和JSP页面中间加入Filter的应用。

 Filter生命周期:

1、启动服务器时加载Filter的实例,并调用Init()方法来初始化实例;(Filter的实例先于Servlet)

2、每次请求时都只调用方法doFilter()进行处理

3、停止服务器时调用destroy()方法,销毁实例;(销毁实例晚于Servlet)

我们再来看一段关于后台封装的filter代码:

package com.bjpowernode.drp.util.filter;

import java.io.IOException;
//这些jar包都是关于filter的一些功能。
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
 * 采用统一处理字符集
 * @author XZP
 *
 */
public class CharsetEncodingFilter implements Filter {
	private String endcoding;
	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		System.out.println("CharsetEncodingFilter--->>>begin");
		//设置字符集
		request.setCharacterEncoding(endcoding);

		//继续执行
		chain.doFilter(request,response);

		System.out.println("CharsetEncodingFilter--->>>end");
	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {

		this.endcoding= filterConfig.getInitParameter("encoding");

	}

}

最后需要xml配置一下啊:

<?xml version="1.0" encoding="UTF-8"?>

<filter>
	<filter-name>CharsetEncodingFilter</filter-name>
	<filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>GBK</param-value>
	</init-param>
<filter-mapping>
     <filter-name>CharsetEncodingFilter</filter-name>
     <url-pattern>*.jsp</url-pattern>
 </filter-mapping>

</filter>

总结:

1.Filter可以看做是一种横切性的技术。

2.Filter体现在设计模式上面:“责任链模式”,“模版方法模式”。

3.Filter提供了一种声明式服务,对Request和Response请求进行了拦截。并且只对Post请求起作用。

时间: 2024-07-29 07:34:43

Java学习之Filter的相关文章

JAVA学习篇--javaweb之Filter详解

在DRP项目中,多次提到了Filter,它解决了字符集的统一设置以及统一控制简单WebCache,从中我们可以体会到,它给我们带来的好处不仅仅是减少代码量这么简单,它的出现避免了我们每个页面重复的编写相同的代码,减少了我们的工作量,而且给维护带来了极大的便利,那么它是如何实现统一管理的呢?既然它能统一管理某些重复的操作,那么它和AOP有什么关系呢? Filter简介 ServletAPI中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过

JAVA学习之 浅析Filter

上一篇博客了解了Servlet,这次就来了解一下Filter,简单来说Filter是Servlet规范的一种技术,并不是一个Servlet.它也称为一个过滤器,用来改变一个request和修改一个response,能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response. 一.生命周期 上一篇也写到的Servlet的生命周期,Filter与Servlet类似: 1.启动服务器时加载Filter的实例,并调用Init()方

2016最新Java学习计划

一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码        第一阶段 Java基础 入门 学习周期: 35天 学完后目标: 1.可进行小型应用程序开发 2.对数据库进行基本的增删改查管理 市场价值:¥5000 计算机基础知识 计算机基础.DOS常用命令.Java概述.JDK环境安装配置.环境变量配置.Java程序入门 1.2015年Java基础视频-深入浅出精华版(强烈推荐) 2.历经5年锤炼(适合初学者入

&lt;Java&gt;&lt;学习路线图&gt;

Java是一个通用的编程语言,其实可以干很多事,怎么学Java就看怎么用了. 但有一些一般的步骤: 1.熟悉一种文本编辑器,比如Vim, Emacs, Notepad++, TextMate等.知道哪些是开源的,哪些是闭源的,哪些要收费.养成不用盗版软件的习惯.2. 安装JDK(建议用你的Linux发行版自带的软件包管理器安装openjdk,过程中可能需要读发行版特定的文档)3. 写一个Java的Hello world程序,并用命令行工具javac编译,再用java命令运行这个程序.过程中熟悉源

转:Java学习路线图

作者: nuanyangyang 标  题: Java学习路线图(整理中,欢迎纠正) 发信站: 北邮人论坛 (Mon Aug 11 19:28:16 2014), 站内   [以下肯定是不完整的列表,欢迎补充]   Java是一个通用的编程语言,其实可以干很多事,怎么学Java就看怎么用了.   但有一些一般的步骤:   1. 熟悉一种文本编辑器,比如Vim, Emacs, Notepad++, TextMate等.知道哪些是开源的,哪些是闭源的,哪些要收费.养成不用盗版软件的习惯. 2. 安装

Java学习-007-Log4J 日志记录配置文件详解及实例源代码

此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:2015-1-30 13:54:02,请知悉. 所需的 jar 包下载链接为:http://yunpan.cn/cKE56sxqtQCfP  访问密码 63d8 有关 Log4J 日志文件中日志级别及文件配置的详细情况,在 Log4J 的配置文件(xml.properties)中有详细的介绍,敬请参阅!

java学习笔记—EL表达式(38)

EL表达式 EL即Expression Language,主要的任务是帮助开发者简化获取域属性. 但是一般情况下需要使用EL和JSTL结合使用. 语法: ${ // 隐含对象|直接写域中的属性 } ? 算术运算 <!-- 算术运算 --> 20+10 = ${ 20+10 } <br/> 20-10 = ${ 20-10 } <br/> 20*10 = ${ 20*10 } <br/> 20/10 = ${ 20/10 } <br/> 20%10

Servlet的学习之Filter过滤器技术(1)

本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器,非常简单,只要实现Servlet  API中的Filter接口即可,同时在该web应用[WEB-INF]目录下的web.xml文件中配置<filter>和<filter-mapping>两个标签.其中可以根据配置指定过滤的页面或者Servlet. 也就是说我们在web工程中光光写Fil

从.Net到Java学习第十一篇——SpringBoot登录实现

通过前面10篇文章的学习,相信我们对SpringBoot已经有了一些了解,那么如何来验证我们的学习成果呢?当然是通过做项目来证明啦!所以从这一篇开始我将会对之前自己做的.net项目用java来重写.这一篇,我们来现实登录模块. 一提到登录,我们首先想到的基本的功能点就有如下: 输入:用户名.密码.验证码. 登录成功后,跳转到后台.如果未登录直接访问后台,将会跳转到登录页面. 这里暂不考虑复杂的登录实现. 技术选型,沿用前面用到的知识点.那么这里较之于之前的文章,新用到的一个就是图片验证码,一个就