环境:apache-tomcat-7.0.57

利用Filter过去request请求参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.sea.lhsaq2009;
 
import java.io.IOException;
import java.util.Enumeration;
 
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;
 
public final class PostDataDumperFilter implements Filter {
 
    private FilterConfig filterConfig = null;
 
    @Override
    public void destroy() {
        this.filterConfig = null;
    }
 
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        if(!req.getMethod().equals("GET")){ // Just GET or POST
            if (filterConfig == null) {
                return;
            }
            Enumeration<String> names = request.getParameterNames();
            StringBuffer output = new StringBuffer();
            while (names.hasMoreElements()) {
                String name = (String) names.nextElement();
                output.append(name + "=");
                String values[] = request.getParameterValues(name);
                for (int i = 0; i < values.length; i++) {
                    if (i > 0) {
                        output.append(",");
                    }
                    output.append(values[i]);
                }
                if (names.hasMoreElements()) {
                    output.append("&");
                }
            }
            req.setAttribute("postdata", output);
        }
        chain.doFilter(request, response);
    }
 
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }
}

web.xml中配置该Filter

1
2
3
4
5
6
7
8
<filter>
    <filter-name>post-data-dumper-filter</filter-name>
    <filter-class>com.sea.lhsaq2009.PostDataDumperFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>post-data-dumper-filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
 

修改tomcat配置文件server.xml

修改 Host标签 下的 value标签
1
2
3
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
        prefix="localhost_access_log." suffix=".txt" 
        pattern='%h %p %H %l %u %t "%r" params={%{postdata}r} %s %bbytes %Dms' resolveHosts="false"/>

打印结果

1
2
127.0.0.1 8080 HTTP/1.1 - - [17/May/2017:23:27:46 +0800] "GET /sayHello/aaa?name=linghaisen&name=linghaisen2&age=18&sex=1&phone=13863683838 HTTP/1.1" params={-} 404 949bytes 2ms
127.0.0.1 8080 HTTP/1.1 - - [17/May/2017:23:19:27 +0800] "POST /sayHello/aaa HTTP/1.1" params={name=linghaisen,linghaisen2&age=18&sex=1&phone=13863683838} 404 949bytes 3ms
2017年5月17日 23:32:48

【整理】01. localhost_access_log 记录post请求参数的更多相关文章

  1. tomcat访问(access)日志配置、记录Post请求参数

    tomcat访问(access)日志配置.记录Post请求参数 一.配置与说明 tomcat访问日志格式配置,在config/server.xml里Host标签下加上 <Valve classN ...

  2. Servlet、Tomcat访问(access)日志配置、记录Post请求参数

    一.运行环境: Maven:3.5.2(点击下载) ,下载页 Tomcat:8.5.29(点击下载) ,下载页 JDK:jdk1.7.0_80(点击下载) ,下载页 MavenDependency: ...

  3. tomcat访问(access)日志配置、记录Post请求参数(转)

    一.配置与说明 tomcat访问日志格式配置,在config/server.xml里Host标签下加上 <Valve className="org.apache.catalina.va ...

  4. 在生产环境记录http请求参数

    StringBuilder strParam = new StringBuilder(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ...

  5. springboot springmvc拦截器 拦截POST、PUT、DELETE请求参数和响应数据,并记录操作日志

    1.操作日志实体类 @Document(collection = "operation_log") @Getter @Setter @ToString public class O ...

  6. springAOP实现操作日志记录,并记录请求参数与编辑前后字段的具体改变

    本文为博主原创,未经允许不得转载: 在项目开发已经完成多半的情况下,需要开发进行操作日志功能的开发,由于操作的重要性,需要记录下操作前的参数和请求时的参数, 在网上找了很多,没找到可行的方法.由于操作 ...

  7. SpringBoot16 MockMvc的使用、JsonPath的使用、请求参数问题、JsonView、分页查询参数、JsonProperty

    1 MockMvc的使用 利用MockMvc可以快速实现MVC测试 坑01:利用MockMvc进行测试时应用上下文路径是不包含在请求路径中的 1.1 创建一个SpringBoot项目 项目脚手架 1. ...

  8. Spring Boot 2.x基础教程:JSR-303实现请求参数校验

    请求参数的校验是很多新手开发非常容易犯错,或存在较多改进点的常见场景.比较常见的问题主要表现在以下几个方面: 仅依靠前端框架解决参数校验,缺失服务端的校验.这种情况常见于需要同时开发前后端的时候,虽然 ...

  9. SpringBoot系列教程web篇之Get请求参数解析姿势汇总

    一般在开发web应用的时候,如果提供http接口,最常见的http请求方式为GET/POST,我们知道这两种请求方式的一个显著区别是GET请求的参数在url中,而post请求可以不在url中:那么一个 ...

随机推荐

  1. java基础:简单实现线程池

    前段时间自己研究了下线程池的实现原理,通过一些源码对比,发现其实核心的东西不难,于是抽丝剥茧,决定自己实现一个简单线程池,当自已实现了出一个线程池后.发现原来那么高大上的东西也可以这么简单. 先上原理 ...

  2. while和do while循环的简要概述

    循环结构 1.while结构 在英文中"while"这个词的意思是"当",而在 Java 程序设计中,也可以将其理解为"当",其语法结构是: ...

  3. php下拉菜单选中值在选择之后保留并且显示

    <select id="select_platform" name="source" style="height:35px;"> ...

  4. 大数据 Hadoop,Spark和Storm

    大数据(Big Data)   大数据,官方定义是指那些数据量特别大.数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理.大数据的主要特点为数据量大(Volume),数据类别复 ...

  5. OpenCV学习2-----使用inpaint函数进行图像修复

    安装opencv时,在opencv的安装路径下, sources\samples\cpp\  路径里面提供了好多经典的例子,很值得学习. 这次的例子是利用inpaint函数进行图像修复. CV_EXP ...

  6. [leetcode-592-Fraction Addition and Subtraction]

    Given a string representing an expression of fraction addition and subtraction, you need to return t ...

  7. 在线SVN仓库实现:金山快盘+TortoiseSVN(Win)+SCPlugin(Mac)

    前段时间一直在研究SVN在线托管,也尝试了网上推荐的免费托管网站. 但毕竟是是免费的,还是要受到比如空间大小.私有性等这样那样的限制,感觉有些麻烦. 而且,比较心疼自己在本地开发的时候积累的更新日志, ...

  8. Linux用户管理-中

    添加用户组命令groupadd 提示:groupadd命令的使用非常简单,但在生产环境中使用的不多,因此,会简单应用即可. 与groupadd命令有关的文件有:/etc/group :用户组相关文件/ ...

  9. SDP

    SDP语法 一个SDP描述含有会话级信息和媒体级信息.会话级信息应用于整个会话.例如:它能成为会话始发者或者会话的名字.媒体级信息作用于特殊的媒体流.例如:它能作为一个编码器给音频流编码或者是给视频流 ...

  10. Day01_变量,数据类型_程序交互_流程控制

    python执行的两种方式: 1,交互的方式:  优点:可以及时调试程序,调试方法  缺点: 无法永久保存代码 2,保存在文件中执行  优点:可以永久保存代码,在执行的时候调用  缺点:不能即时调试代 ...