@Component
public class UserBehaviorFilter extends AbstractWebFilter {
@Override
public 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