直接实现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之JSP基础语法(上)笔记
JavaWeb是Java编程领域中的一个重要组成部分,主要涉及Web应用程序的开发和实现。黑马程序员是一家知名的IT教育机构,他们提供的Javaweb教材源码是为了帮助学员深入理解和实践Web开发技术。下面将详细介绍JavaWeb的...
本项目“JavaWeb毕业设计之学生信息管理系统”提供了一个完整的源码实例,包括数据库设计与JavaPrj_17项目代码,旨在帮助学习者深入理解和实践JavaWeb开发。 首先,我们关注的是数据库部分。在JavaWeb应用中,...
【JavaWeb教程详解】 JavaWeb开发是Java编程领域的一个重要分支,主要涉及构建基于Web的交互式应用程序。尚硅谷推出的全新JavaWeb教程聚焦于企业主流技术栈,旨在帮助开发者掌握实际工作中所需的关键技能。本教程...
javaweb期末作业大学活动管理系统源码javaweb期末作业大学活动管理系统源码javaweb期末作业大学活动管理系统源码javaweb期末作业大学活动管理系统源码javaweb期末作业大学活动管理系统源码javaweb期末作业大学活动...
JavaWeb技术是构建互联网应用程序的一种强大工具,它基于Java平台,为开发动态、交互式的Web应用提供了丰富的功能。本讲义将重点介绍JavaWeb的基本概念、核心组件以及常用框架。 一、JavaWeb应用概述 JavaWeb应用是...
JavaWeb 开发之路经验总结
JavaWeb技术是构建互联网应用程序的重要框架,它将Java语言与Web技术相结合,为开发者提供了强大的功能和灵活性。本文将深入探讨JavaWeb的核心概念、架构及其在实际开发中的应用。 一、JavaWeb概述 JavaWeb是一种...
javaweb 程序填空题
【JavaWeb + Flash小游戏开发详解】 在信息技术领域,JavaWeb和Flash是两种广泛应用于创建交互式应用程序的技术。本文将深入探讨如何结合这两种技术,构建一个基于JavaWeb的Flash小游戏。 一、JavaWeb基础 ...
JavaWeb课程设计的毕业设计与代码管理系统源码,采用标准MVC模式开发 毕业设计与代码管理系统JavaWeb课程设计的毕业设计与代码管理系统源码,采用标准MVC模式开发 毕业设计与代码管理系统JavaWeb课程设计的毕业设计...
【JavaWeb个人博客管理系统源码解析】 在信息技术领域,JavaWeb技术被广泛应用于构建各种复杂的互联网应用程序,包括但不限于企业级的后台管理系统、电子商务平台、社交网络等。本篇将深入探讨一个基于JavaWeb的...
javaweb期末课程设计大作业自助售票系统源码+数据库javaweb期末课程设计大作业自助售票系统源码+数据库javaweb期末课程设计大作业自助售票系统源码+数据库javaweb期末课程设计大作业自助售票系统源码+数据库javaweb...
JSP+servlet+javabean学习 ...JavaWeb07-javaWeb模式.rar JavaWeb08-DBUtil.rar JavaWeb09-EL与JSTL.rar JavaWeb10-分页应用.rar JavaWeb11-图片验证码.rar JavaWeb12-文件上传.rar JavaWeb13-过滤器与监听器.rar
【JavaWeb蛋糕商城项目】是一个基于Java技术的Web应用程序,旨在提供一个在线购物平台,让用户可以方便地浏览、选购各种蛋糕商品。这个项目的核心技术涵盖了Java编程语言、Servlet、JSP、JavaScript、HTML、CSS以及...
8. **Spring框架**:Spring是JavaWeb开发中最常用的框架之一,它提供了依赖注入、AOP(面向切面编程)、事务管理等功能,简化了企业级应用的开发。 9. **MyBatis**:MyBatis是一个持久层框架,它简化了SQL操作,将...
JavaWeb是Java技术在Web应用开发中的核心领域,它涵盖了从服务器端编程到与客户端交互的各个层面。"javaweb笔记+代码(狂神说java)"可能是一份由知名讲师“狂神”编写的教程资料,包含了学习JavaWeb开发的知识点以及...
软件工程JavaWeb课程设计音乐播放器网页项目源代码。软件工程JavaWeb课程设计音乐播放器网页项目源代码软件工程JavaWeb课程设计音乐播放器网页项目源代码。软件工程JavaWeb课程设计音乐播放器网页项目源代码软件工程...
javaweb学生信息选课管理系统源代码。javaweb学生信息选课管理系统--老师学生双用户; 额外实现了成绩单页面转pdf与打印下载接口; oracle/mysql jsp servlet 有助于初学者学习深入 javaweb学生信息选课管理系统源...