过滤器入门
过滤器的概念及执行基本流程
过滤器的使用场景
过滤器的实现及基本配置 过滤器链
过滤器链的配置
使用注解的方式无法保证过滤器链的执行顺序,所以只能使用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");
}
}

servlet_4的更多相关文章

  1. NSDictionary writeToFile:atomically: 时失败

    一.现象:如下图,当NSDictionary调用 writeToFile:atomically: 时,如果容器里面包含的对象(即通过 objectForKey: 拿到的对象),为非property l ...

  2. SpringBoot拦截器中Bean无法注入(转)

    问题 这两天遇到SpringBoot拦截器中Bean无法注入问题.下面介绍我的思考过程和解决过程: 1.由于其他bean在service,controller层注入一点问题也没有,开始根本没意识到Be ...

  3. JaveWeb学习之Servlet(一):Servlet生命周期和加载机制

    原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2018-07-22/19.html 作者:夜月归途 出处:http://www.guitu ...

  4. JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用

    JavaWeb中监听器+过滤器+拦截器区别.配置和实际应用 1.前沿上一篇文章提到在web.xml中各个元素的执行顺序是这样的,context-param-->listener-->fil ...

随机推荐

  1. Exploit-Exercises nebule 旅行日志(六)

    接着上次的路程继续在ubuntu下对漏洞的探索练习,这次是level05了 先看下level05的问题描述: 从level05的描述上看,是/home/flag05目录的权限有漏洞,看来多半是又跟fl ...

  2. Flutter错误集合

    一.Waiting for another flutter command to release the startup lock... 运行flutter命令 flutter upgrade 运行 ...

  3. python+appium 自动化2--元素定位uiautomatorviewer

    出处:https://www.cnblogs.com/yoyoketang/p/6128741.html 前言: 可以打开手机上的app了,下一步元素定位uiautomatorviewer,通过定位到 ...

  4. 自学python之路(day2)

    1. 格式化输出 %表示占位符 ,s表示字符串 ,d表示数字,%s就是代表字符串占位符,%d,是数字占位符 示例1:输入用户的姓名.性别.年龄.爱好的通用模板 name = input("请 ...

  5. protel项目创建

    File->New->Project->PCB Project//新建PCB项目 Save Project As... Project->Add New to Project- ...

  6. CSS效果:简单的登录框

    HTML: <html lang="en"> <head> <meta charset="UTF-8"> <meta ...

  7. javaEE练习(商城练习)

    今天写一个商城的练习,综合之前学习过的servlet和el表达式,来一个综合的练习: 需要用到的数据库有: /* Navicat MySQL Data Transfer Source Server : ...

  8. [转载]Fiddler为所欲为第四篇 直播源抓取与接口分析 [四]

    今天的教程,主要是教大家如何进行“封包逆向”,关键词跳转,接口分析.(怎么样,是不是感觉和OD很像~~~)今天的教程我们以[麻花影视]为例,当然,其他APP的逻辑也是一样,通用的哦~ 首先需要做好准备 ...

  9. Knowledge From Practice(rf,fiddler)

     1.较精准定位 2.关于Appium+RF的轴表达式 child:选取当前节点的所有子元素 parent:选取当前节点的直接父元素 descendant:选取当前节点的所有后代元素 ancestor ...

  10. ios 视图既显示阴影又有圆角实现

    //- (UIView *)createTimeBG //{ //    UIView *view = [[UIView alloc]init]; //    view.backgroundColor ...