• Spring3 MVC DispatcherServlet 配置问题


    1. Spring MVC 是通过servlet来进行转发的,一般在web.xml中配置如下:

    <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>/*</url-pattern>
        </servlet-mapping>

    如果url-pattern配置的是/* 则默认是会拦截所有的资源,包括html、css、jpg等静态资源,也包括jsp页面等。

    由于这些资源在后台都没有给其配置相应的Controller去处理,所有会报错404. 

    有两种方式解决:

    1. url-pattern不直接连接所有资源,而是

    <url-pattern>*.action</url-pattern>
    这样就只拦截action结尾的请求,所以所有请求都要加上.action

    2. 在spring的mvc配置文件中加上:

    <mvc:default-servlet-handler/>

    这样就将没有找到对应的控制器的请求(如一些静态资源等)交给默认的servlet去处理。

    但如果采用第二种方式<mvc:default-servlet-handler/>,不处理的话,访问jsp等页面的时候,

    会直接把其当作txt来处理,会把jsp的源码直接返回给浏览器。

    所以在配置的时候可以把 /* 修改为 /

    <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
     
  • 相关阅读:
    [导入]流失
    [导入]喜欢与爱
    [导入]毕业的大学生的100条忠告
    sql 实现从右边查询制定字符出现的位置
    [导入]毕业了
    gridview 实现多字段综合查询
    Java实现图片添加水印文字(左右下角)
    python安装win32api pywin32 后出现 ImportError: DLL load failed
    Asp.net mvc 速度优化 关注Yslow(1)
    WPF 3D中如何选择模型的一部分并维护模型
  • 原文地址:https://www.cnblogs.com/ranger2016/p/3758674.html
Copyright © 2020-2023  润新知