servlet_4

过滤器入门
	过滤器的概念及执行基本流程
	过滤器的使用场景
	过滤器的实现及基本配置


过滤器链
	过滤器链的配置
		使用注解的方式无法保证过滤器链的执行顺序,所以只能使用web.xml的配置
		按照出现在web.xml的filter-mapping顺序依次经过过滤器
		
异步过滤器
	与异步servlet类似
	
	异步过滤器的配置
	注解方式:设置@webfilter的属性asyncsupport属性为true
	web.xml方式:

与请求分派协作
	dispatcherTypes=DispatcherType.INCLUDE
	
包装器
	包装器的概念
	包装器类的使用
	
	在servlet api中提供了4个包装器类
	与装饰器的设计模式相类似
	允许将任何方法都包装到servletrequest...之中
	
	javax.servlet.ServletRequestWrapper,在其后加wrapper


一、servlet
package com.fgy; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/servlet6") public class Servlet6 extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(request.getParameter("content")); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } =============================================== 二、过滤器 package com.fgy; import java.io.IOException; import javax.servlet.DispatcherType; 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.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; @WebFilter(urlPatterns="*") public class Filter2 implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(new MyWrapper((HttpServletRequest) request), response); } public void init(FilterConfig fConfig) throws ServletException { } } ============================================= 三、包装器 进行修改,实现将请求参数的值1替换为one package com.fgy; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; public class MyWrapper extends HttpServletRequestWrapper { private HttpServletRequest request; public MyWrapper(HttpServletRequest request) { super(request); this.request = request; } @Override public String getParameter(String name) { String value = request.getParameter(name); return value.replaceAll("1", "one"); } }
原文地址:https://www.cnblogs.com/createyuan/p/9096877.html