Spring MVC 3.05拦截器怎么获得运行action类的方法名
public void postHandle(HttpServletRequest request, 
    HttpServletResponse response, Object handler, ModelAndView view) 
    throws Exception { 
//这里怎么获取调用的action类的方法名????
}

解决方案 »

  1.   

    根据request.getRequestURI()得到uri,然后用uri在spring bean里面查找这个uri相应的处理方法
      

  2.   

     楼上的,我用的是注解,bean里没有配置
      

  3.   

    第三个参数是Handler,也就是目标Controller。
    但是如果楼主要细到方法级别,那比较好的思路应该是用AOP,切到目标方法中去。
      

  4.   


    好像说的有点问题哎。 
    handler应该下一个拦截器或者目标contrller。
    但是说的思路我很同意。@Component
    @Aspect
    public class Interceptor {
      @Pointcut("些切点表达式")
      public void pc(){}  @Around
      public Object around(ProceedingJoinPoint jp) throws Throwable {
         // 从jp里就可以拿到方法签名了
      }
    }
      

  5.   


    拦截器 无法满足你的需求需要使用spring AOP
      

  6.   

    如果又要得到servlet环境的数据(HttpServletRequest, HttpSession之类的)又要得到方法签名。我也不知道怎么办才好了。 等高手!
      

  7.   

    试试这个。
    MethodNameResolver methodNameResolver = new InternalPathMethodNameResolver();
    System.out.println("methodName="+methodNameResolver.getHandlerMethodName(request));ps:N年没有来了这里了,看看现在的状态。
      

  8.   

    你既然知道用注解了,那你为什么不想用自动装配对象哪?@Autowired
      

  9.   

    谢谢大侠!问题得到解决!
    我也遇到了楼主的困惑:既需要servlet环境获取request里的数据(若采用aop与servlet不关联,无法获取),又要取得方法签名(拦截器不支持)。追问:如果需要获取所拦截action的类路径该怎么解决呢?
    求大神帮忙!
      

  10.   

    @Controller
    public myclass { @RequestMapping(value = "/xxx/{iii}", method = RequestMethod.GET)
    public List<myBean> getBeans(@PathVariable Integer iii,
    @RequestParam("par") String par) {
                .....
            }
    }
      

  11.   

    谢谢大侠!问题得到解决!
    我也遇到了楼主的困惑:既需要servlet环境获取request里的数据(若采用aop与servlet不关联,无法获取),又要取得方法签名(拦截器不支持)。追问:如果需要获取所拦截action的类路径该怎么解决呢?
    求大神帮忙!用request对象getRequestURI()方法就可以获取了~
      

  12.   

    谢谢大侠!问题得到解决!
    我也遇到了楼主的困惑:既需要servlet环境获取request里的数据(若采用aop与servlet不关联,无法获取),又要取得方法签名(拦截器不支持)。追问:如果需要获取所拦截action的类路径该怎么解决呢?
    求大神帮忙!用request对象getRequestURI()方法就可以获取了~看错问题了~-_-