- 浏览: 502723 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (437)
- Windows设置 (2)
- oracle数据库 (39)
- bug--jsp (4)
- j2se (13)
- js (40)
- bug-tomcat不能启动程序 (1)
- Hibernate (29)
- eclipse (20)
- java (65)
- 设计模式 (6)
- bug (18)
- PL/SQL (11)
- 前台 (5)
- 杂谈 (25)
- UML (1)
- jdbc编程 (2)
- 技术调研 (1)
- 数据通信 (2)
- ios (1)
- servlet自学笔记 (10)
- tomcat (9)
- SQL学习笔记 (6)
- java工具 (1)
- 数据库设计 (4)
- javascript (10)
- jsp (11)
- struts (17)
- ajax (7)
- linix/Unix (6)
- 资源 (3)
- spring (14)
- 算法 (5)
- 计算机网络 (2)
- http (5)
- c++ (2)
- web应用 (3)
- jvm (5)
- java中的字符编码 (14)
- java代码库 (2)
- classloader (1)
- 读书笔记 (1)
- c (1)
- 开源软件 (1)
- svn (1)
- AOP (1)
- java序列化 (1)
- 多线程 (4)
- The legendary programmers (1)
- Apache http Server (1)
- html tag (3)
- struts1.X学习笔记 (5)
- buffalo (1)
- 自己收藏 (0)
- TOEFL(IBT) (1)
- 网络翻墙 (0)
- 编译原理 (1)
- 书籍推荐 (1)
- css (10)
- javaee环境搭建资料 (1)
- 开源工具 (1)
- 美国生活 (1)
- spring自学 (3)
- log4j (3)
- 算法与数据结构 (5)
- 病毒,插件处理大全 (1)
- flex (2)
- webservice (1)
- git (7)
- cs (1)
- html (4)
- javaee (6)
- 开车 (0)
- springmvc (3)
- 互联网架构 (2)
- intellij idea (18)
- maven (15)
- mongodb (2)
- nginx (1)
- react (3)
- java基础例子 (2)
- springboot (2)
- 培训 (5)
- mysql (3)
- 数据库 (3)
- 生活 (2)
- intellij (3)
- linux (2)
- os (3)
最新评论
-
潇洒天涯:
[color=blue][color=cyan] ...
oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 -
hekai1990:
受教了..
oracle中的varchar2
一、Filter的介绍 Filter也称之为过滤器,它是Servlet2.3以上新增加的一个功能,其技术也是非常强大的。通过Filter技术可以对WEB服务器的文件进行拦截,从而实现一些特殊的功能。在JSP开发应用中也是必备的技能之一。 Filter可以改变一个request(请求)和修改一个response(响应)。Filter不是一个Servlet,它不能产生一个response,它能够在一个requsst到达Servlet之前预处理request,也可以在离开Servlet时处理response。 一个Filter包括: 1、在Servlet被调用之前截获。 2、在Servlet被调用之前检查Servlet Reqest。3 3、根据需要修改request头和request数据。 4、根据需要修改response头和response数据。 5、在Servlet被调用之后截获。 File和用户及WEB资源关系如果所示: 二、Filter开发基础介绍 1、 一个Filter必须实现javax.servlet.Filter接口并定义三个方法: ● public void init(FilterConfig config):Filter实例化后进行初始化的回调方法。 ● public void doFilter(ServletRequest req,ServletResponse res, FilterChain chain):处理过滤器的方法。 ● public void destory():Filter在释放时回调的方法。 2、FilterConfig接口 在配置filter时,可以使用<init-param>为filter配置一些初始化参数,当web容器实例化Filter对象,调用其init方法时,会把封装了filter初始化参数的filterConfig对象传递进来。因此在编写filter时,通过filterConfig对象的方法,就可获得: •String getFilterName():得到filter的名称。 •String getInitParameter(String name): 返回在部署描述中指定名称的初始化参数的值。如果不存在返回null. •Enumeration getInitParameterNames():返回过滤器的所有初始化参数的名字的枚举集合。 •public ServletContext getServletContext():返回Servlet上下文对象的引用。 3、Filter链 在一个Web应用中可以有多个过滤器,这些些过滤器组成起来形成了一个过滤器链,每当发出的请求到达目标资源之前,浏览器压缩后数据,可以提高数据的传输效率。WEB服务器根据Filter在web.xml文件中的注册顺序决定先调用哪一个Filter,当地一个Filter的doFilter方法被调用时,WEB服务器会创建一个Filter链的FilterChain对象传递给该方法。 三、Filter常见的应用。 1、过滤器解决中文乱码的问题,统一全站字符编码的过滤器。 首先定义一个EncodingFiler的实现类,实现Filter接口,代码如下: public class EncodingFilter implements Filter { // Filter被释放时的回调方法 public void destroy() { } // FilterConfig接口实例中封装了这个Filter的初始化参数 // 过滤方法 public void doFilter(ServletRequest request, ServletResponse response, //有时候response不用设置编码,因为servlet一般不做输出, } 在 web.xml 文件中实现Filter实现类,并配置初始化。代码如下: <?xml version="1.0" encoding="UTF-8"?> <filter> 2、禁止浏览器缓存所有动态页面的过滤器 有 3 个 HTTP 响应头字段都可以禁止浏览器缓存当前页面,它们在 Servlet 中的示例代码如下: response.setDateHeader("Expires",-1); response.setHeader("Cache-Control","no-cache"); response.setHeader("Pragma","no-cache"); 并不是所有的浏览器都能完全支持上面的三个响应头,因此最好是同时使用上面的三个响应头。 ● Expires数据头:值为GMT时间值,为-1指浏览器不要缓存页面 ● Cache-Control响应头有两个常用值: ● no-cache指浏览器不要缓存当前页面。 ● max-age:xxx指浏览器缓存页面xxx秒。 首先定义一个NoCacheFilter的实现类,实现Filter接口,代码如下: public class NoCacheFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { public void doFilter(ServletRequest req, ServletResponse res, } public void destroy() { } 3、控制浏览器缓存页面中的静态资源的过滤器 有些动态页面中引用了一些图片或css文件以修饰页面效果,这些图片和css文件经常是不变化的,所以为减轻服务器的压力,可以使用filter控制浏览器缓存这些文件,以提升服务器的性能。 这一个举个简单的例子说明一下: 就是你登陆一个***系统或者是***网站时,登陆了账号密码以后,进去以后,再点返回,返回到登陆窗口,你发现你之前登陆过的账号密码就不在现实,被浏览器中的过滤器清除了。
private FilterConfig config = null;
private String defaultCharset = "utf-8";
public void init(FilterConfig filterConfig) throws ServletException {
this.config = filterConfig;
}
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String charset = config.getInitParameter("charset");
if(charset==null){
charset = defaultCharset;
}
request.setCharacterEncoding(charset);
//输出交由jsp来做,所以只要jsp页面设定编码即可
resp.setCharacterEncoding(charset);
resp.setContentType("text/html;charset="+charset);
chain.doFilter(req, resp);
}
<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">
<display-name></display-name>
<filter-name>EncodingFilter</filter-name>
<filter-class>cn.class3g.web.filter.EncodingFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>
</init-param>
<web-app>
}
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse) res;
response.setDateHeader("expires",-1);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
chain.doFilter(request, response);
}
发表评论
-
【转】Servlet 和filter 执行顺序
2015-06-10 17:55 1028一,servlet容器对url的匹配过程:当一个请求发送到 ... -
【转】session在何时被创建
2012-08-24 19:20 693一个常见的误解是以为session在有客户端访问时就被创建 ... -
【转】web.xml 中的listener、 filter、servlet 加载顺序及其详解
2012-08-23 11:09 789在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过 ... -
【转】web.xml中listener的作用及使用(转)
2012-08-23 11:07 850概述: Servlet监听器用于监听一些重要事件的发生, ... -
【转】servlet-api源码的获取以及打包
2012-08-22 10:15 1993servlet-api源码的获取打包 使用Ant打包 ... -
【转】解决get方法传递参数的中文乱码问题
2012-08-15 17:25 1174在tomcat下,我们通常这样来解决中文乱码问题: 过滤 ... -
【转】servlet filter初探
2012-08-15 17:24 847参考文章 [http://www ... -
javax.servlet.Servlet和javax.servlet.ServletConfig接口
2012-01-09 21:06 18271.Servlet不是独立的应用程序,没有main()方法。而 ... -
tomcat中自带的例子
2012-01-08 19:36 983//Source Code for RequestHeader ...
相关推荐
Web服务器中的三大组件,即Servlet、Filter和Listener,是构建动态Web应用程序的关键元素。这些组件都是基于Java的,主要用于增强和扩展Web服务器的功能。 Servlet是Java中用于处理HTTP请求的核心组件,它是动态...
Servlet是一种基于Java的技术,用于创建动态网页内容。Servlet被广泛应用于Web应用程序中,特别是那些需要处理客户端请求并生成响应的应用程序。Servlet技术由Sun Microsystems开发,并随着Java平台的发展而不断进步...
- 过滤器:Servlet容器还支持过滤器(Filter),它们可以拦截请求和响应,进行预处理或后处理,如登录验证、字符编码转换等。 总之,"简单的web开发——servlet案例"为初学者提供了一个很好的起点,通过学习和实践...
《学生信息管理系统——基于JSP、JUnit、Servlet、Filter与SQL的实现》 学生信息管理系统是信息化教育领域中常见的应用,它旨在通过计算机技术管理大量的学生数据,提高工作效率,减少人为错误。本系统采用JavaWeb...
3. `javax.servlet.annotation`:包含Servlet、Filter和Listener的注解,用于元数据定义。 4. `javax.servlet.descriptor`:提供Web应用程序配置信息的编程访问。 在实现Servlet时,开发者可以选择直接实现Servlet...
这里的关键技术包括Java Server Pages (JSP)、Apache Tomcat服务器、Servlet以及Filter。下面将详细阐述这些技术及其在系统中的作用。 【JSP(Java Server Pages)】 JSP是一种动态网页技术,允许开发者在HTML页面...
Servlet技术始于1995年,由Sun Microsystems推出,现在已经成为Java EE规范的一部分。本篇将深入探讨Servlet的基础知识及其运行环境——Servlet容器模型。 首先,让我们了解Servlet的基础。Servlet是一个Java类,...
在本节课"Lesson_servlet增删改查_理解filter"中,我们将深入探讨Java Web开发中的核心组件——Servlet以及过滤器(Filter)的概念和应用。Servlet是Java平台上的一个标准接口,用于扩展服务器的功能,特别是在Web...
【基于jsp+servlet 的论坛管理系统】是一个典型的Web应用程序开发实例,它利用了Java技术栈中的核心组件——JavaServer Pages(JSP)和Servlet,来构建一个功能完整的在线讨论平台。这个论坛系统允许用户进行发帖、...
5. **Servlet容器**:讨论Servlet运行的环境——Servlet容器(如Tomcat、Jetty等),它们如何加载和管理Servlet,以及如何配置容器以满足特定需求。 6. **会话管理**:涵盖如何在Servlet中管理用户的会话,使用`...
而在Servlet3.0中,我们可以通过`@WebFilter`注解来直接定义过滤器,指定其过滤的URL模式、DispatcherType等。这样,过滤器的配置就更加灵活和直观。 下面是一个使用注解声明的过滤器示例: ```java @WebFilter...
【Java Servlet技术详解】 Java Servlet是一种Java编程语言的规范,用于扩展服务器的功能,尤其是在Web开发领域。它允许程序员创建动态响应的HTTP服务,为客户端提供交互式的网页内容。Servlet是Java EE...
博客开发是许多初学者和专业开发者接触Web应用的起点,这个源码集合涵盖了"jsp+javabean+servlet"的核心技术,是理解Web后端开发流程的重要资源。下面,我们将详细探讨这些技术及其在博客系统中的应用。 首先,JSP...
【标题】"jsp servlet项目"涉及的是Web开发中的核心组件——Java Server Pages (JSP) 和Servlet技术。这两个技术是构建动态、数据驱动的Web应用的基础。 【Servlet】Servlet是Java编程语言中的一种服务器端的Java...
在这个主题中,我们将深入探讨Servlet 3.0的主要特性和功能,以及提供的两个jar包——`javax.servlet-3.0-sources.jar`和`javax.servlet.jar`的作用。 首先,Servlet 3.0作为Servlet API的一个版本,引入了许多新...
9. **过滤器**:Servlet API还包括Filter接口,允许开发者在请求到达Servlet之前和离开Servlet之后进行拦截和处理。过滤器可用于数据校验、日志记录、性能监控等。 10. **监听器**:Servlet容器支持监听器...
《Servlet&JSP核心编程第二版》是一本深入探讨Java Web开发的重要书籍,主要关注Servlet和JSP(JavaServer Pages)这两个核心技术。Servlet是Java平台上的一个标准接口,用于扩展服务器的功能,处理HTTP请求,而JSP...
5. `web.xml`的作用:作为Web应用程序的核心配置文件,`web.xml`定义了Servlet、过滤器(Filter)、监听器(Listener)的配置信息,以及Web应用的上下文参数和欢迎文件列表等,是Web容器启动和管理Web应用的重要依据。...
《Servlet与JSP核心编程(第二版)》是由Marty Hall和Larry Brown共同撰写的经典教程,这本书深入浅出地讲解了Java服务器端编程的重要技术——Servlet和JavaServer Pages(JSP)。在Web开发领域,Servlet和JSP是构建...