`

WEB开发 16:Servlet Filter

 
阅读更多

 

 

doFilter方法中有一个FilterChain参数,用于表示过滤器链,下面这个草图就是过滤器链的简单表述。

 

将在第15课中的登录程序使用过滤器重写

LoginFilter.java     在这个过滤器中判断session中的user是否存在,如不存在就返回登录界面

package com.test.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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class LoginFilter implements Filter {

	public void destroy() {
		System.out.println("filter destroy invoed");
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest r = (HttpServletRequest)request;
		String requestURI = r.getRequestURI();
		//下面这两个页面,不能过滤,在MyLoginServlet中还是需要判断session中的user是否为空
		if(requestURI.endsWith("login.jsp") || requestURI.endsWith("MyLoginServlet")){
			chain.doFilter(request, response);
			return;
		}
		
		HttpSession session = r.getSession();
		//如果session中的user为空,则返回登录页面
		if(null == session.getAttribute("user")){
			request.getRequestDispatcher("/filter/login.jsp").forward(request, response);
			return;
		}else{
			chain.doFilter(request, response);
		}
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		System.out.println("filter init invoked");
	}

}

 

过滤器新建好后,需要配置web.xml文件

<filter>
  	<filter-name>loginfilter</filter-name>
  	<filter-class>com.test.filter.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
   	<filter-name>loginfilter</filter-name>
   	<url-pattern>/*</url-pattern>
  </filter-mapping>

 

过滤链

存在多个过滤链时,是以在web.xml文件中的序列来排队过滤。

如下图,两个url-pattern是一样的,表示都对note进行过滤,先进filter1再进filter2过滤器。

 

此外还可以为过滤器配置初始参数

<filter>
  	<filter-name>loginfilter</filter-name>
  	<filter-class>com.test.filter.LoginFilter</filter-class>
  	<init-param>
  		<param-name>hello</param-name>
  		<param-value>world</param-value> 	
  	</init-param>
  	<init-param>
  		<param-name>zhang</param-name>
  		<param-value>sang</param-value> 	
  	</init-param>
  </filter>

 然后在filter类的init方法中取出。

public void init(FilterConfig filterConfig) throws ServletException {
		String value1 = filterConfig.getInitParameter("hello");
		String value2 = filterConfig.getInitParameter("zhang"); 
	}

 

此外还可以在filter类中获取application对象,如下

filterConfig.getServletContext();

 

HttpServletRequest r = (HttpServletRequest)request;
r.getSession().getServletContext();

 

分享到:
评论

相关推荐

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    Java Web整合开发王者归来:Java Web.part3

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    servlet+filter+lisenter 例子

    servlet,lisenter ,filter 例子

    机票管理系统:JSP、servlet、filter等。.zip

    java web开发,jsp,servlet框架,mysql,适合个人研究学习,用于毕业设计,课程设计等 java web开发,jsp,servlet框架,mysql,适合个人研究学习,用于毕业设计,课程设计等 java web开发,jsp,servlet框架,...

    java web实验报告;开发环境及web基础, JSP、Servlet及JDBC、扩展JavaScript框架、Web应用综合设计

    实验1:Java Web开发环境及Web编程基础;实验2 JSP、Servlet及JDBC应用开发;实验3 扩展JavaScript框架应用;实验4 Web应用综合设计; 天津理工大学

    Java Web整合开发王者归来:Java Web.part1

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    Java Web整合开发王者归来:Java Web.part2

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    Java Web开发视频教程

    Java的Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向对象实现请求和响应的流程...

    Filter过滤器

    在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, FilterChain, FilterConfig。 Filter 程序是一个实现了 Filter 接口的 Java 类,与 Servlet 程序相似,它由 Servlet 容器进行调用和...

    解决cannot be cast to javax.servlet.Filter 报错的问题

    使用maven开发web应用程序, 启动的时候报错: jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 然后输出错误: 严重: Exception starting filter ...

    Java Web整合开发王者归来

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    Java.Web整合开发王者归来.part12.rar

     《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;...

    web开发课程笔记、源码和课程视频.zip

    web开发课程笔记、源码和课程视频,适合自学web、有编程基础的同学。内含:html、css、javascript、jQuery、XML、Tomcat、Servlet、jsp、EL表达式、JSTL标签库、cookie、session、Filter过滤器、json、Ajax请求、...

    Java Web整合开发王者归来2/16

    本书全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第 1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器...

    Java Web整合开发王者归来16/16

    本书全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第 1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器...

    Java Web整合开发王者归来6/16

    本书全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第 1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器...

Global site tag (gtag.js) - Google Analytics