SpringMVC05
这里是学习SpringMVC的第5天,欢迎小伙伴们打卡一起学习。
SpringMVC01
SpringMVC02
SpringMVC03
SpringMVC04
SpringMVC05
SpringMVC06(SSM的整合)
什么是静态资源
静态资源:可以理解为前端的固定页面,这里面包含HTML、CSS、JS、图片等等,不需要查数据库也不需要程序处理,直接就能够显示的页面,如果想修改内容则必须修改页面,但是访问效率相当高。
动态资源:需要程序处理或者从数据库中读数据,能够根据不同的条件在页面显示不同的数据,内容更新不需要修改页面但是访问速度不及静态页面。
那,是谁在处理静态资源?
例子:http: //localhost:8080/SpingMVC04/index.jsp : tomcat ( jsp会转为servlet )
http: //localhost:8080/SpingMVC04/js/iquery-3.4.1.jis : tomcat
http: //localhost: 8080/SpingMVC04/images/ p1. jpg : tomcat
http: //localhost: 8080/SpingMVC04/html/test.html: tomcat
http://localhost:8080/SpingMVC04/some.do : Di spatcherServlet ( springmvc框架处理的)
tomcat本身能处理静态资源的访问,像html,图片, js文件都是静态资源
tomcat的web . xml文件有- -个servlet名称是default,在服务器启动时创建的。
访问tomcat的配置文件,我们不难发现,tomcat实际上也是通过servlet进行请求的处理的
原先tomcat中的配置
<servlet>
<servlet-name>default</servlet-name >
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value> false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
为了处理静态资源,我们应该做什么?
在springmvc文件中,我们进行如下配置,至于为何配置,在注解中均有解释
<!--加入注解驱动,注意是包名后缀是mvc的-->
<!--注解驱动的功能是完成java对象到二进制、json、xml、text等数据格式的转换,主要用于ajax-->
<!--default-servlet-handler和@RequestMapping有冲突,需要加入annotation-driven解决问题(不加入会导致动态资源404)-->
<mvc:annotation-driven/>
<!--注解驱动的功能是完成java对象到二进制、json、xml、text等数据格式的转换-->
<!--第一种处理静态资源的方式:
需要在springmvc配置文件加入<mvc:default-servlet-handler>
原理是:加入这个标签后,框架会创建控制器对象DefaultServletHttpRequestHandler(类似我们自己创建的myController)
DefaultServletHttpRequestHandler这个对象可以把接收请求转发给tomcat的default这个servlet
-->
<!-- <mvc:default-servlet-handler/>-->
<!--第二种处理静态资源的方式(推荐)
mvc:resources加入后框架会创建ResourcesHttpRequestHandler这个处理器对象。
让该对象处理静态资源的访问,不依赖tomcat服务器
mapping:访问静态资源的url访问静态资源的uri地址,使用通配符**
location:静态资源自理的项目中的目录位置。
eg:images/**,表示images文件夹下的所有文件
-->
<!--mvc:resources和@RequestMapping有冲突,需要加入annotation-driven解决问题(不加入会导致动态资源404)-->
<!-- <mvc:resources mapping="/image/**" location="/image/"/>-->
<!-- <mvc:resources mapping="/html/**" location="/html/"/>-->
<!-- <mvc:resources mapping="/js/**" location="/js/"/>-->
<!--不过建议是建立一个目录用于存放静态资源 -->
<mvc:resources mapping="/static/**" location="/static/"/>
我们可以看到,在都dosome方法中原先无法访问的图片数据变得可以访问了。