SpringMVC学习笔记5——访问静态资源

url-pattern

本次项目的webapp结构

本次项目的webapp

本次项目的index.jsp 注意:我们加入了jQuery(在js目录下哦)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-3.5.1.js"></script>
 </head>
<body>
        <p>访问静态资源</p>

        <form action="some.do" method="post">
            姓名:<input type="text" name="name">
            年龄:<input type="text" name="age">
            <input type="submit" value="提交参数">
        </form>

        <br/>

        <img src="images/p3.jpg" alt="我是一个静态资源,不能显示">
</body>
</html>
本次项目的控制器
@RequestMapping(value = "/some.do" )
    public ModelAndView doSome(String name,Integer age){

        System.out.println("doSome():"+name+"=="+age);

        ModelAndView mv=new ModelAndView();
        mv.addObject("myname",name);
        mv.addObject("myage",age);
        mv.setViewName("show");
        return mv;
    }
其他(略)

在web.xml中有如下配置,代表指定后缀的请求都交给指定的中央调度器进行处理

在我们的web工程中,jsp是由DispatcherServlet(中央调度器)来处理,而静态资源(如html,js和图片等等)都是由tomcat来处理的。tomcat的安装目录下的conf的web.xml文件有一个叫default的servlet,这个servlet在服务器启动时创建

<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>

	  <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>  表示静态资源和未映射的请求都这个default处理
    </servlet-mapping>

这个DefaultServlet作用

  1. 处理静态资源
  2. 处理未映射到其它servlet的请求
上面DefaultServlet中的<url-pattern>的斜杠就是代表静态资源和未映射请求,我们可以在<url-pattern>改成 /,这样就会代替tomcat的DefaultServlet,这样不用很繁琐地写很多个<url-pattern>,比如<url-pattern>*.do</url-pattern>等等,但是这样无法访问静态资源了;那如何在这种情况下还能处理静态资源呢?下面有两个处理静态资源的方法
一、使用<mvc:default-servlet-handler/>

在spring的配置文件中加入这个标签后,框架回创建控制器对象DefaultServletHttpRequestHandler
(类似我们自己创建的MyControllerDefaultServletHttpRequestHandler这个对象可以把接收的请求转发给tomcat的defaultservlet

二、使用<mvc:resources/>(掌握)

在spring的配置文件中加入这个标签后,框架回创建控制器对象ResourceHttpRequestHandler,让这个对象来处理目标静态资源,这种方法不依赖于服务器,相对来说更常用

<mvc:resources mapping="/images/**" location="/images/"/>
    <mvc:resources mapping="/html/**" location="/html/"/>
    <mvc:resources mapping="/js/**" location="/js/"/>
访问效果

访问图片和js成功 访问html成功访问动态资源成功

当然,还有个一次性配置完的方法,先早webapp下创建一个叫static的文件夹,然后把静态资源都放在里面,再加上<mvc:resources mapping="/static/**" location="/static/"/>即可;用这种方式别忘了调用静态资源时要在前面加上static/

需要特别注意,不管是使用<mvc:default-servlet-handler/> 还是<mvc:resources/>,都会和RequestMapping发生冲突,所以我们要在配置文件中加入注解驱动<mvc:annotation-driven/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值