zoukankan      html  css  js  c++  java
  • 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>
     
  • 相关阅读:
    css3新特性总结
    ES6常用特性总览
    前端第一次面试
    将一个行数在主线程执行的4中方法
    判断邮箱格式和图片压缩
    上传图片的实现
    导航右侧添加按钮、隐藏导航条和状态栏
    从相册选取图片展示并实现自定义事件
    cell添加选中时的背景图片、显示图片和图片自适应框的大小
    设置键盘无色和状态栏风火轮、屏幕截图
  • 原文地址:https://www.cnblogs.com/ranger2016/p/3758674.html
Copyright © 2011-2022 走看看