@Controller
@RequestMapping(value = {"user"})
public class UserController {
...
@RequestMapping(value = {"dashboard"})
public String index(HttpServletRequest req, ModelMap map) {
this.objSession = req.getSession(false);
try {
System.out.println(this.objSession.getAttribute("userid"));
我使用的是Spring 4.2。 假设我有这个类,我想检查具有userid = 1属性的会话对象。 我正在检查这个“/ user”请求下的每个方法。 我的疑问是,如果我能在执行任何方法的任何代码之前避免使用相同的编码。
是否有任何方法可以提高检查的代码恢复能力?
预先感谢您的时间。
答案 0 :(得分:0)
您可以通过匹配请求路径来使用interceptors
。
<mvc:interceptors path-matcher="/someRequest/*">
<bean class="className" autowire="constructor"/>
</mvc:interceptors>
在path-mathcer
中,您可以指定一种类型的网址,以便它可以执行您需要的任何内容。
控制器:
@Controller
@RequestMapping(value = {"someRequest/user"})
public class UserController {
拦截器:在处理someRequest/user
之前,您可以使用下面的拦截器,以3种方式使用 - &gt; afterCompletion ,preHandle,postHandle
。
在你的情况下,代码将用preHandle
方法
public class SomeRequestIntercept implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object,
Exception exception) throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView arg3)
throws Exception {
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
System.out.println("before processing someRequest/**");
return true;
}
}