javassist,获取doGet方法的第二个参数

时间:2015-03-26 15:12:01

标签: java spring javassist

我将我的代码注入doGet方法

val replace = "" +
  "  System.out.println(\"[before] " + className + "\");" +
  "  $proceed($$);" +
  "  try{System.out.println(\"$args[2] = \" + $args[1].toString());}catch(Exception ex){System.out.println(\"ERROR\");}"
  "  System.out.println(\"[after] " + className  + "\");".stripMargin

这里我得到第二个参数,我希望param将是HttpServletResponse类的实例,但我看到下面的类

org.springframework.security.web.context
.HttpSessionSecurityContextRepository$SaveToSessionResponseWrapper@398ce9f7 

后面的操作是在DefaultServlet,FrameworkServlet

我的现实有什么问题?

1 个答案:

答案 0 :(得分:1)

HttpServletResponsean interface,因此可以有任何正确实现给定界面的内容。正如您在Spring中一样,框架正在使用自己的实现,正如您在.toString mehotd中看到的那样,它是一个SaveToSessionResponseWrapper类。

在第二个链接上,您可以找到替换的确切位置:

SaveToSessionResponseWrapper wrappedResponse =
  new SaveToSessionResponseWrapper(response, request, httpSession != null, context);
requestResponseHolder.setResponse(wrappedResponse);

您可以在此处找到有关此课程的更多信息:

HttpSessionSecurityContextRepository implementation