2015-03-26 2 views
1

я впрыснуть свой код в doGet метод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 

Здесь я получаю вторые из параметров, и я ожидаю, что пары будут экземпляром класса HttpServletResponse, но я вижу следующий класс

org.springframework.security.web.context 
.Ht[email protected]398ce9f7 

За действия в DefaultServlet, FrameworkServlet

Что не так с моей реальности?

+0

То есть экземпляр ' HttpServletResponse - очень специфический подкласс, но тем не менее он является экземпляром. –

ответ

1

HttpServletResponsean interface, так что там может быть что-то там, что правильно вводит данный интерфейс. Поскольку вы весной, структура использует свою собственную реализацию, как вы можете видеть от .toString mehotd, это класс SaveToSessionResponseWrapper.

На второй ссылке вы можете найти именно место есть замена идет:

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

Вы можете найти более подробную информацию об этом классе здесь:

HttpSessionSecurityContextRepository implementation

Смежные вопросы