如何修改request的parameter

来源:互联网 发布:百度云加速 seo 编辑:程序博客网 时间:2024/06/06 04:05
@Componentpublic class UserBehaviorFilter  extends AbstractWebFilter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest)request;HttpServletResponse httpResponse = (HttpServletResponse)response;// 打印request真实调用的实例路径  D:/Users/.ivy2/cache/jetty/server/jars/jetty-server-8.1.16.v20140903-8.1.16.jar!/org/eclipse/jetty/server/System.out.println(request.getClass().getResource("").getPath());try {Class<?> clazz = Class.forName("org.eclipse.jetty.server.Request");// 调用getRequest(request)方法,获取Request对象Method method = clazz.getMethod("getRequest", HttpServletRequest.class);Object requestObj = method.invoke(null, request);// 调用getParameterMap()Method getParameterMapMethod = clazz.getMethod("getParameterMap");getParameterMapMethod.invoke(requestObj);// 获取MultiMap<String> _parameters值Field _parametersField = requestObj.getClass().getDeclaredField("_parameters");_parametersField.setAccessible(true);Object _parametersObj = _parametersField.get(requestObj);// 获取MultiMap._map的值Field _mapField = _parametersField.getType().getDeclaredField("_map");_mapField.setAccessible(true);Object _mapObj = _mapField.get(_parametersObj);@SuppressWarnings("unchecked")Map<String, Object> map = (Map<String, Object>) _mapObj;map.put("name", "zhangsan!");} catch (Exception e) {logger.error("doFilter error", e);}chain.doFilter(httpRequest, httpResponse);}}

@RequestMapping("/http/pss/demo")      @ResponseBody      public CommonVO demo(@RequestParam("code")String code, @RequestParam("name")String name,              HttpServletRequest request) {          logger.info("name="+ name);          logger.info("name="+ request.getParameter("name"));          return null;      }  


控制台打印:

[16:32:37] [INFO] [<T=R0LsNnbuo00yI0t2>]  AppropriateTransformationController:  name=zhangsan!
[16:32:40] [INFO] [<T=R0LsNnbuo00yI0t2>]  AppropriateTransformationController:  name=zhangsan!


jetty-server-8.1.16.v20140903-8.1.16源码下载地址:

https://github.com/eclipse/jetty.project/releases?after=jetty-9.0.0.M0


请求路径:

http://127.0.0.1:8088/http/pss/demo?code=A88888