spring mvc 引入静态资源

来源:互联网 发布:unity3d itween 编辑:程序博客网 时间:2024/04/30 05:47

做一个简单的实验:

web.xml配置servlet,拦截"/":

<servlet>      <servlet-name>spring</servlet-name>      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>      <init-param>          <param-name>contextConfigLocation</param-name>          <param-value>classpath:config/spring.xml</param-value>      </init-param>      <load-on-startup>1</load-on-startup></servlet><servlet-mapping><span style="white-space:pre"></span><servlet-name>spring</servlet-name><span style="white-space:pre"></span><url-pattern>/</url-pattern></servlet-mapping>
spring配置注解及扫描的包

<context:annotation-config /><context:component-scan base-package="com.sssunday" />
静态资源目录结构:


controller三个方法:

//jsp页面@RequestMapping(value="/index1")public String index1(){<span style="white-space:pre"></span>return "/view/index.jsp";}//html页面@RequestMapping("/index2")public String index2(){<span style="white-space:pre"></span>return "/view/index.html";}//直接返回字符串,检验请求是否到达controller@ResponseBody@RequestMapping("index3")public String check() {    return "11111";}



1.

index1  jsp页面测试,页面可以访问,静态资源加载404,

index2 html页面,404

index3 正常返回字符串


2

spring配置添加静态文件映射:

<mvc:resources location="/resources/" mapping="/resources/**" />  <mvc:resources location="/view/" mapping="/view/**" />
index1,index2,index3都是404,请求没有到达controller(在controller中debug,请求也没有到达断点)


直接访问静态页面index.html,页面加载正常,js,css也加载正常。(jsp页面也正常)



3.

spring配置添加注解驱动

<mvc:annotation-driven/>

index1,index2,index3全部访问成功



结论:

1. 理解这个过程首先需要知道spring mvc是怎么处理请求的:

DispatcherServlet拦截到达spring的请求(配置),当DispatcherServlet接到请求时,他先回查找适当的处理程序来处理请求。在注解配置和扫描完成,默认请求将会到达controller,交由controller处理。<context:annotation-config />和<context:component-scan base-package="" />是对注解配置和对包进行扫描,实现注释驱动Bean定义,同时将bean自动注入容器中使用。即解决了@Controller标识的类的bean的注入和使用。它们并不决定DispatcherServlet选择什么方式处理请求

参考文章:http://www.cnblogs.com/dreamworlds/p/5396112.html

2.<mvc:resources location="" mapping="" />   配置将DispatcherServlet处理方式改为以访问静态资源的方式处理,这也就是第2步中请求没有到达controller的原因

3.<mvc:annotation-driven/> 配置使DispatcherServlet的处理方式也能支持注解驱动处理,即支持请求交由controller处理。


0 0
原创粉丝点击