• springmvc配置servlet的拦截形式/*和/的区别


        今天复制一个现有的spring-mvc的项目修改配置作为新的项目,结果悲剧了!遇到了一个小问题困扰了半天,找同事找总监都没有搞定,纠结了半天终于发现了问题所在,随笔记一下,所谓好记性不如烂博客嘛!

    问题描述:

       项目很简单,只是简单搭建一个spring-mvc框架,写一个测试的NewsController,关于问题的配置如下:

    web.xml

     1 <servlet>
     2     <servlet-name>spring-mvc</servlet-name>
     3     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     4     <init-param>
     5       <param-name>contextConfigLocation</param-name>
     6       <param-value>/WEB-INF/spring-mvc.xml</param-value>
     7     </init-param>
     8   </servlet>
     9   <servlet-mapping>
    10     <servlet-name>spring-mvc</servlet-name>
    11     <url-pattern>/*</url-pattern>
    12   </servlet-mapping>

    spring-mvc的视图解析器如下:

        <!-- 视图解释类 通过配置文件,把一个视图名交给到一个View来处理 InternalResourceViewResolver加入了JSTL的支持 -->
        <bean id="viewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/" />
            <property name="suffix" value=".jsp" />
        </bean>

    controller方法如下

        //首页
            @RequestMapping("/index")
            public String getnewsList(ModelMap model) {
                return "ttt";
            }

    ttt.jsp是/WEB-INF/views/目录下的一个新建的ttt.jsp,就这样启动项目后,访问项目http://localhost:8080/news/index,结果返回404,Problem accessing /news/WEB-INF/views/ttt.jsp。

    解决方案

      开始一直以为jsp页面没有编译,最后发现确实没有编译,tomcat的jsp是在第一次请求页面的时候编译的,但是为什么没有编译呢?说明没有请求到页面,查看控制台打印的信息发现

    日志打印没有找到/WEB-INF/views/ttt.jsp对应的handler,说明/WEB-INF/views/ttt.jsp请求又被spring-mvc的selvet拦截了两次,问题出现了,为什么会拦截两次呢?原因就出在web.xml里配置的拦截形式/*上面,修改成/就没问题了。

    总结一下

      /*是拦截所有请求,包括视图解析后跳转的.jsp页面,/则不会拦截视图解析后的.jsp页面!

  • 相关阅读:
    PHP 快递单号查询api接口源码指导
    电商平台适用基础快递查询api接口对接demo解决方案
    智能物流查询api接口demo(php示例)
    解决在TP5中无法使用快递鸟查询API接口方案
    解析快递鸟在线预约取件API接口对接编码
    快递鸟批量打印电子面单接口及控件安装
    「note」原根照抄
    「atcoder
    Solution -「NOI 2021」轻重边
    Solution Set -「ARC 124」
  • 原文地址:https://www.cnblogs.com/wz12406/p/5001354.html
Copyright © 2020-2023  润新知