HttpFilter模仿HttpServlet设计,能显著提升开发效率吗?

更新于
2026-10-04 10:57:09
1阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计371个文字,预计阅读时间需要2分钟。

javapackage xin.sun.controller.filter;

import javax.servlet.*;import javax.servlet.FilterConfig;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;

/** * 自定义过滤器,用于模拟HttpFilter */public class HttpFilter implements Filter {

@Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化过滤器配置 }

@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req=(HttpServletRequest) request; HttpServletResponse res=(HttpServletResponse) response;

// 模拟过滤逻辑 System.out.println(Filtering request: + req.getRequestURI());

chain.doFilter(request, response); // 继续执行下一个过滤器或目标资源 }

@Override public void destroy() { // 清理过滤器资源 }}

HttpFilter

package xin.sun.controller.filter; import javax.servlet.*; import javax.servlet.FilterConfig; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * * 仿照HttpServlert,自定义HttpFilter,简化开发, */ public abstract class HttpFilter implements Filter { private FilterConfig filterConfig; @Override public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.init(); } /** * 获取过滤器配置对象 * @return */ public FilterConfig getFilterConfig(){ return this.filterConfig; } /** * 获取初始化参数 * @param key * @return */ public String getInitParameter(String key){ return getFilterConfig().getInitParameter(key); } /** * 获取应用上下文 * @return */ public ServletContext getServletContext() { return this.getFilterConfig().getServletContext(); } /** * 提供用户初始化方法 * @throws ServletException */ public void init() throws ServletException { } /** * 重写doFilter(),把Servlert***转换为HttpServlert*** * @param servletRequest * @param servletResponse * @param filterChain * @throws IOException * @throws ServletException */ @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request; HttpServletResponse response; try { request = (HttpServletRequest)servletRequest; response = (HttpServletResponse)servletResponse; } catch (ClassCastException var6) { throw new ServletException("non-HTTP request or response"); } this.doFilter(request,response,filterChain); } /** * 提供一个doFilter()方法,用户必须实现 * @param servletRequest * @param servletResponse * @param filterChain * @throws IOException * @throws ServletException */ protect abstract void doFilter(HttpServletRequest servletRequest, HttpServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException ; @Override public void destroy() { } }

标签:可

本文共计371个文字,预计阅读时间需要2分钟。

javapackage xin.sun.controller.filter;

import javax.servlet.*;import javax.servlet.FilterConfig;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;

/** * 自定义过滤器,用于模拟HttpFilter */public class HttpFilter implements Filter {

@Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化过滤器配置 }

@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req=(HttpServletRequest) request; HttpServletResponse res=(HttpServletResponse) response;

// 模拟过滤逻辑 System.out.println(Filtering request: + req.getRequestURI());

chain.doFilter(request, response); // 继续执行下一个过滤器或目标资源 }

@Override public void destroy() { // 清理过滤器资源 }}

HttpFilter

package xin.sun.controller.filter; import javax.servlet.*; import javax.servlet.FilterConfig; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * * 仿照HttpServlert,自定义HttpFilter,简化开发, */ public abstract class HttpFilter implements Filter { private FilterConfig filterConfig; @Override public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.init(); } /** * 获取过滤器配置对象 * @return */ public FilterConfig getFilterConfig(){ return this.filterConfig; } /** * 获取初始化参数 * @param key * @return */ public String getInitParameter(String key){ return getFilterConfig().getInitParameter(key); } /** * 获取应用上下文 * @return */ public ServletContext getServletContext() { return this.getFilterConfig().getServletContext(); } /** * 提供用户初始化方法 * @throws ServletException */ public void init() throws ServletException { } /** * 重写doFilter(),把Servlert***转换为HttpServlert*** * @param servletRequest * @param servletResponse * @param filterChain * @throws IOException * @throws ServletException */ @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request; HttpServletResponse response; try { request = (HttpServletRequest)servletRequest; response = (HttpServletResponse)servletResponse; } catch (ClassCastException var6) { throw new ServletException("non-HTTP request or response"); } this.doFilter(request,response,filterChain); } /** * 提供一个doFilter()方法,用户必须实现 * @param servletRequest * @param servletResponse * @param filterChain * @throws IOException * @throws ServletException */ protect abstract void doFilter(HttpServletRequest servletRequest, HttpServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException ; @Override public void destroy() { } }

标签:可