如何在Servlet

时间:2015-06-11 07:27:28

标签: servlets spring-aop

我必须将一些公共代码注入到任何servlet的service方法中。

因此,我构建了一个母servlet SuperController

public class SuperController extends HttpServlet{
     private HttpServletRequest lastRequest ; 
     //........
     public void service(HttpServletRequest req,HttpServletResponse res){
          setLastRequest(req); // example of common code
     }
}

然后,所有其他servlet都从此servlet扩展。

public GalleryServlet extends SuperController{

      public void service(HttpServletRequest req,HttpServletResponse res){
           //instead of running here the common code , use AOP. 
           // Then , the other code
      }

}

我想使用AOP执行公共代码(即:setLastRequest(req)),因为super.service(req,res)引发了ERROR 405

com.ControllerAspect.java

@Before("* com.SuperController+.service(..)")
public void doStuffBeforeService(JoinPoint joinPoint) {
    // do stuff here
}

如何使用Spring AOP:

  • 此切入点* com.SuperController+.service(..)是否包含从service继承的所有类中的com.SuperController个方法。

  • 如何访问doStuffBeforeService内的服务方法的参数(req& res)?

1 个答案:

答案 0 :(得分:1)

HTTP 405 表示不支持HTTP请求方法,例如GET用于POST等。检查您的配置/日志以获取支持的方法和实际使用的方法。

回答你的其他问题 -

  • 是切入点* com.SuperController+.service(..)应包含service类层次结构中的com.SuperController方法。见here
  • 使用joinPoint.getArgs()访问method arguments