death05
death05
采纳率16.7%
2018-03-04 01:58 阅读 1.1k
已采纳

springmvc视图解析器自我实现

5

最近想自我实现一个spring+springmvc,自定义了一个DispatcherServlet,拦截所有请求(/*),这时候发现,如果我的自定义controller里返回String,则会再次被我的DispatcherServlet拦截。请问有什么解决方法,可以让我正常跳转到页面?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

8条回答 默认 最新

  • 已采纳
    death05 death05 2018-03-04 08:45

    我自己弄出来了,Tomcat服务器解析jsp的servlet名字是jsp,因此在的doGet或doPost方法种写上:

        RequestDispatcher rd = this.getServletContext().getNamedDispatcher("jsp");
            rd.forward(request, response);
    

    这样就可以将这个jsp请求发送给Tomcat的Servlet来解决

    点赞 评论 复制链接分享
  • death05 death05 2018-03-04 02:36

    我在controller里试了其他的跳转方法(如:request.getRequestDispatcher("/index.jsp").forward(request,response);),也会被我的DispatcherServlet拦截,也不成功

    点赞 评论 复制链接分享
  • qq_35040331 qq_35040331 2018-03-04 04:32

    关于页面跳转的建议用Struts2实现

    点赞 评论 复制链接分享
  • qq_41621503 可乐996 2018-03-04 04:47
    点赞 评论 复制链接分享
  • qq_41621503 可乐996 2018-03-04 04:49

    返回字符串时,视图解析器会根据你定义的视图名转换器转换成*.*的资源,你配置的是拦截所有,index.jsp也是服务器的资源也会被拦截,
    在配置文件中使用取消对静态资源的拦截

    点赞 评论 复制链接分享
  • yemaE307 yemaE307 2018-03-04 07:11

    1、要么设置拦截所有请求(/*)为*.do,只拦截.do请求
    2、要么
    mvc:interceptors
    mvc:interceptor
    //添加不拦截的


    /mvc:interceptor
    /mvc:interceptors
    可不可以你自己试试吧

    点赞 评论 复制链接分享
  • death05 death05 2018-03-04 08:51

    但我的这个解决方法依旧会显得很繁琐,感觉不是那么完美。假如我要请求的index.jsp页面在/WEB-INF/views下,那么我发送的请求就得是/WEB-INF/views/index.jsp,这样感觉好麻烦,请问大家还有什么其他的办法吗?

    点赞 评论 复制链接分享
  • trn1227923922 TARANAQ 2018-03-05 01:49

    如果你是springmvc的开发人员会怎么写?为了拦截访问路径和静态资源等,肯定需要写一个拦截类去拦截所有请求,然后自己定义拦截规则,
    读取指定名称的配置文件(要识别出类似mvc:interceptors这种标签),进而在controller中注解value实现跳转,没那么简单的

    点赞 评论 复制链接分享

相关推荐