本帖最后由 sidan8 于 2015-01-21 09:09:38 编辑

解决方案 »

  1.   

    SpringMVC 拦截器有个doFilter方法,该方法有个参数ServletRequest request,然后request.getParameter 就能获得你想要的参数呀
      

  2.   

    恩,楼上说的对,直接用request去获取就是
      

  3.   

    汗......还楼上说得对呢?SpringMVC 拦截器有doFilter方法吗?SpringMVC 拦截器是实现HandlerInterceptor接口的pojo类,里面有三个实现方法,分别是://拦截前处理
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {}//拦截后处理
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}//全部完成后处理
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}楼主的需求,应该有个法则可以找到。那就是uri里的可变值必定有对应的方法参数,因此可通过preHandle方法里的handler取到各参数值。这不就解决了吗?
      

  4.   


    通过Handler 可以拿到uri但是无法拿到参数,难道要自己解析
      

  5.   


    if(handler instanceof HandlerMethod){
        HandlerMethod handlerMethod = (HandlerMethod)handler;
        MethodParameter[] methodParameters = handlerMethod.getMethodParameters();
        for(MethodParameter methodParameter : methodParameters){
    System.out.println(methodParameter.getParameterName());
        }
    }
      

  6.   

    我的一直进不到条件里边 不加条件 就一直报错 com.sinosoft.login.web.LoginController cannot be cast to org.springframework.web.method.HandlerMethod
      

  7.   

    那个,写在拦截器里的话就是3#所说的,我是继承这个类org.springframework.web.servlet.handler.HandlerInterceptorAdapter。重写preHandle()的方法,也就是你要处理的业务逻辑,然后xml里面配好要拦截的地址(property name="includeUrls")。