java修改request的paramMap
来源:互联网 发布:谷歌chrome mac版 编辑:程序博客网 时间:2024/05/17 03:04
最近做项目,发现要修改request的参数内容。因为想要在request的paramMap里面默认注入,modifier和modifierName,这些内容。但是这个Map是不能修改的。所以采用了如下办法:下面的办法网上也有的这里只做备份。
1. 创建request转换器
package com.tmall.lafite.web.base;import java.util.Enumeration;import java.util.Map;import java.util.Vector;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;class ParameterRequestWrapper extends HttpServletRequestWrapper {private Map<String, String[]> params;public ParameterRequestWrapper(HttpServletRequest request,Map<String, String[]> newParams) {super(request);this.params = newParams;// RequestDispatcher.forward parameterrenewParameterMap(request);}@Overridepublic String getParameter(String name) {String result = "";Object v = params.get(name);if (v == null) {result = null;} else if (v instanceof String[]) {String[] strArr = (String[]) v;if (strArr.length > 0) {result = strArr[0];} else {result = null;}} else if (v instanceof String) {result = (String) v;} else {result = v.toString();}return result;}@Overridepublic Map<String, String[]> getParameterMap() {return params;}@Overridepublic Enumeration<String> getParameterNames() {return new Vector<String>(params.keySet()).elements();}@Overridepublic String[] getParameterValues(String name) {String[] result = null;Object v = params.get(name);if (v == null) {result = null;} else if (v instanceof String[]) {result = (String[]) v;} else if (v instanceof String) {result = new String[] { (String) v };} else {result = new String[] { v.toString() };}return result;}private void renewParameterMap(HttpServletRequest req) {String queryString = req.getQueryString();if (queryString != null && queryString.trim().length() > 0) {String[] params = queryString.split("&");for (int i = 0; i < params.length; i++) {int splitIndex = params[i].indexOf("=");if (splitIndex == -1) {continue;}String key = params[i].substring(0, splitIndex);if (!this.params.containsKey(key)) {if (splitIndex < params[i].length()) {String value = params[i].substring(splitIndex + 1);this.params.put(key, new String[] { value });}}}}}}
2. 转换filter
package com.tmall.lafite.web.base;import java.io.IOException;import java.util.HashMap;import java.util.Map;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 class ParamFilter implements Filter{@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {Map<String,String[]> m = new HashMap<String,String[]>(request.getParameterMap()); request = new ParameterRequestWrapper((HttpServletRequest)request, m); chain.doFilter(request, response); }@Overridepublic void destroy() {// TODO Auto-generated method stub}}
3. web.xml
<!-- request參數轉換器 --><filter><filter-name>ParameterFilter</filter-name><filter-class>com.tmall.lafite.web.base.ParamFilter</filter-class></filter><filter-mapping> <filter-name>ParameterFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
0 0
- java修改request的paramMap
- java修改request的paramMap
- java修改request的paramMap
- 如何修改request的parameter
- 修改Request的请求路径
- 修改iis的request限制值
- 修改request中header的值
- iBatis.Net中为什么Output的paramMap的class设置为int就获取不到值
- request.setAttribute的用法 - [JAVA]
- java的request作用域
- 【java】request.getParameter 和 request.getAttribute 的功能作用详解.
- Spark2.0机器学习系列之1:基于Pipeline、交叉验证、ParamMap的模型选择和超参数调优
- 如何修改request的parameter的几种方式
- 如何修改request的parameter的几种方式
- Fiddler的实践心得(四):修改request的body
- 如何修改request的parameter的几种方式
- 如何修改request的parameter的几种方式
- filter修改request参数
- C# 命名规范
- ios tableview 那些事(二十五)用故事板 自定义Tableview 不显示数据注意事项。
- Oracle oledb 打包并集成到程序安装包(VC ADO访问Oracle)
- 通过struts2的JSONResult返回json数据的配置
- UCM-001:Configuring Installer DisableNtfs8dot3 in window 7+
- java修改request的paramMap
- 依照测试用例分类(按功能)的结果生成对应的universe文件
- 我是如何跨专业走上IT之路的
- -bash: ./my_script: /bin/bash^M: bad interpreter: No such file or directory
- 5月,献给程序员们的经典巨著——APUE
- 用户无法保存SD报表ALV布局
- strol()详解
- 长方柱类
- sendfile()实现零拷贝详解