`

JavaWeb之HttpFilter

 
阅读更多

 

直接实现Filter的缺点:

1. 每次需要FilterConfig时需要在init方法中重复编写赋值代码this.filterConfig = filterConfig;

2. doFilter(ServletRequest req, ServletResponse resp,FilterChain chain)方法在开发中需要重复把ServletRequest 和ServletResponse 转换为HttpServletRequest 和HttpServletResponse 。

 

因此,仿照HttpServlet开发一个HttpFilter

 

package org.rabbitx.web.javaweb.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.HttpServletResponse;

/**
 * 自定义的 HttpFilter, 实现自 Filter 接口
 *
 */
public abstract class HttpFilter implements Filter {

	/**
	 * 用于保存 FilterConfig 对象.
	 */
	private FilterConfig filterConfig;

	/**
	 * 不建议子类直接覆盖. 若直接覆盖, 将可能会导致 filterConfig 成员变量初始化失败
	 */
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
		init();
	}

	/**
	 * 供子类继承的初始化方法. 可以通过 getFilterConfig() 获取 FilterConfig 对象.
	 */
	protected void init() {
	}

	/**
	 * 直接返回 init(ServletConfig) 的 FilterConfig 对象
	 */
	public FilterConfig getFilterConfig() {
		return filterConfig;
	}

	/**
	 * 原生的 doFilter 方法, 在方法内部把 ServletRequest 和 ServletResponse 转为了
	 * HttpServletRequest 和 HttpServletResponse, 并调用了
	 * doFilter(HttpServletRequest request, HttpServletResponse response,
	 * FilterChain filterChain)
	 * 
	 * 若编写 Filter 的过滤方法不建议直接继承该方法. 而建议继承 doFilter(HttpServletRequest request,
	 * HttpServletResponse response, FilterChain filterChain) 方法
	 */
	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) resp;

		doFilter(request, response, chain);
	}

	/**
	 * 抽象方法, 为 Http 请求定制. 必须实现的方法.
	 * 
	 * @param request
	 * @param response
	 * @param filterChain
	 * @throws IOException
	 * @throws ServletException
	 */
	public abstract void doFilter(HttpServletRequest request,
			HttpServletResponse response, FilterChain filterChain)
			throws IOException, ServletException;

	/**
	 * 空的 destroy 方法。
	 */
	@Override
	public void destroy() {
	}

}

 

 

分享到:
评论

相关推荐

    javaWEB 人力资源管理系统源码

    javaWEB 人力资源管理系统源码javaWEB 人力资源管理系统源码javaWEB 人力资源管理系统源码javaWEB 人力资源管理系统源码javaWEB 人力资源管理系统源码javaWEB 人力资源管理系统源码javaWEB 人力资源管理系统源码...

    李兴华javaweb之JSP基础语法(上)笔记

    李兴华javaweb之JSP基础语法(上)笔记

    教材源码_javaweb_黑马程序员Javaweb源码_

    JavaWeb是Java编程领域中的一个重要组成部分,主要涉及Web应用程序的开发和实现。黑马程序员是一家知名的IT教育机构,他们提供的Javaweb教材源码是为了帮助学员深入理解和实践Web开发技术。下面将详细介绍JavaWeb的...

    JavaWeb毕业设计之学生信息管理系统源码(源码+数据库)

    本项目“JavaWeb毕业设计之学生信息管理系统”提供了一个完整的源码实例,包括数据库设计与JavaPrj_17项目代码,旨在帮助学习者深入理解和实践JavaWeb开发。 首先,我们关注的是数据库部分。在JavaWeb应用中,...

    尚硅谷全新JavaWeb教程,企业主流javaweb技术栈 中代码

    【JavaWeb教程详解】 JavaWeb开发是Java编程领域的一个重要分支,主要涉及构建基于Web的交互式应用程序。尚硅谷推出的全新JavaWeb教程聚焦于企业主流技术栈,旨在帮助开发者掌握实际工作中所需的关键技能。本教程...

    javaweb期末作业大学活动管理系统源码.zip

    javaweb期末作业大学活动管理系统源码javaweb期末作业大学活动管理系统源码javaweb期末作业大学活动管理系统源码javaweb期末作业大学活动管理系统源码javaweb期末作业大学活动管理系统源码javaweb期末作业大学活动...

    JavaWeb讲义:JavaWeb应用简介

    JavaWeb技术是构建互联网应用程序的一种强大工具,它基于Java平台,为开发动态、交互式的Web应用提供了丰富的功能。本讲义将重点介绍JavaWeb的基本概念、核心组件以及常用框架。 一、JavaWeb应用概述 JavaWeb应用是...

    JavaWeb 开发之路经验总结

    JavaWeb 开发之路经验总结

    javaweb书籍

    JavaWeb技术是构建互联网应用程序的重要框架,它将Java语言与Web技术相结合,为开发者提供了强大的功能和灵活性。本文将深入探讨JavaWeb的核心概念、架构及其在实际开发中的应用。 一、JavaWeb概述 JavaWeb是一种...

    javaweb 程序填空题

    javaweb 程序填空题

    基于javaweb+flash的小游戏

    【JavaWeb + Flash小游戏开发详解】 在信息技术领域,JavaWeb和Flash是两种广泛应用于创建交互式应用程序的技术。本文将深入探讨如何结合这两种技术,构建一个基于JavaWeb的Flash小游戏。 一、JavaWeb基础 ...

    JavaWeb课程设计的毕业设计与代码管理系统源码.zip

    JavaWeb课程设计的毕业设计与代码管理系统源码,采用标准MVC模式开发 毕业设计与代码管理系统JavaWeb课程设计的毕业设计与代码管理系统源码,采用标准MVC模式开发 毕业设计与代码管理系统JavaWeb课程设计的毕业设计...

    Javaweb个人博客管理系统 源码

    【JavaWeb个人博客管理系统源码解析】 在信息技术领域,JavaWeb技术被广泛应用于构建各种复杂的互联网应用程序,包括但不限于企业级的后台管理系统、电子商务平台、社交网络等。本篇将深入探讨一个基于JavaWeb的...

    javaweb期末课程设计大作业自助售票系统源码+数据库.zip

    javaweb期末课程设计大作业自助售票系统源码+数据库javaweb期末课程设计大作业自助售票系统源码+数据库javaweb期末课程设计大作业自助售票系统源码+数据库javaweb期末课程设计大作业自助售票系统源码+数据库javaweb...

    JavaWeb12-文件上传.rar

    JSP+servlet+javabean学习 ...JavaWeb07-javaWeb模式.rar JavaWeb08-DBUtil.rar JavaWeb09-EL与JSTL.rar JavaWeb10-分页应用.rar JavaWeb11-图片验证码.rar JavaWeb12-文件上传.rar JavaWeb13-过滤器与监听器.rar

    javaweb蛋糕商城项目

    【JavaWeb蛋糕商城项目】是一个基于Java技术的Web应用程序,旨在提供一个在线购物平台,让用户可以方便地浏览、选购各种蛋糕商品。这个项目的核心技术涵盖了Java编程语言、Servlet、JSP、JavaScript、HTML、CSS以及...

    javaweb520-JavaWeb-master.zip

    8. **Spring框架**:Spring是JavaWeb开发中最常用的框架之一,它提供了依赖注入、AOP(面向切面编程)、事务管理等功能,简化了企业级应用的开发。 9. **MyBatis**:MyBatis是一个持久层框架,它简化了SQL操作,将...

    javaweb笔记+代码(狂神说java)

    JavaWeb是Java技术在Web应用开发中的核心领域,它涵盖了从服务器端编程到与客户端交互的各个层面。"javaweb笔记+代码(狂神说java)"可能是一份由知名讲师“狂神”编写的教程资料,包含了学习JavaWeb开发的知识点以及...

    软件工程JavaWeb课程设计音乐播放器网页项目源代码.zip

    软件工程JavaWeb课程设计音乐播放器网页项目源代码。软件工程JavaWeb课程设计音乐播放器网页项目源代码软件工程JavaWeb课程设计音乐播放器网页项目源代码。软件工程JavaWeb课程设计音乐播放器网页项目源代码软件工程...

    javaweb学生信息选课管理系统源代码.zip

    javaweb学生信息选课管理系统源代码。javaweb学生信息选课管理系统--老师学生双用户; 额外实现了成绩单页面转pdf与打印下载接口; oracle/mysql jsp servlet 有助于初学者学习深入 javaweb学生信息选课管理系统源...

Global site tag (gtag.js) - Google Analytics