• Spring MVC框架:第五章:静态资源访问与mvc:view-controller


    静态资源访问
    1.提出静态资源问题

    Web项目的开发不可避免的要使用静态资源。在我们的项目中图片文件、音视频文件、CSS文件、JavaScript文件、HTML文件等等凡是浏览器直接可以使用且不需要Tomcat解析的资源都是静态资源。

    那么静态资源在SpringMVC中有什么问题呢?

    如果在web.xml中我们配置ulr-pattern为“/”,那么访问静态资源时会返回404。

    在这里插入图片描述

    原因是参照<url-pattern>/</url-pattern>这个配置SpringMVC对所有“/”下的资源都进行匹配,而a.jpg我们又没有任何一个@RequestMapping和它对应,所以SpringMVC认为并不存在这个资源。
    在这里插入图片描述

    2.解决办法
    ①解决办法1
    url-pattern映射*.扩展名
    在ulr-pattern配置扩展名,例如:<url-pattern>*.mvc</url-pattern>

    <!-- Map all requests to the DispatcherServlet for handling -->
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>*.mvc</url-pattern>
    </servlet-mapping>
    

    这样配置之后会有一个重要的、严格的限制:所有希望由SpringMVC来处理的请求,末尾都必须加上指定的扩展名,比如我们这个例子中的*.mvc。反之没有以*.mvc结尾的请求都和SpringMVC无关,还是由Tomcat处理。
    ②解决办法2

    还是保持/的配置,然后在Spring配置文件中加入如下配置:

    <mvc:default-servlet-handler/>
    <mvc:annotation-driven/>
    

    单独使用mvc:default-servlet-handler是不行的,必须配合mvc:annotation-driven。原因我们在SpringMVC原理中介绍。

    小结:
    前提web.xml中url-pattern还是映射“/”
    SpringMVC配置文件中配置:<mvc:default-servlet-handler/>保证静态资源可以访问
    SpringMVC配置文件中配置:<mvc:annotation-driven/> 常规请求可以访问
    介绍<mvc:default-servlet-handler/>作用
    SpringMVC处理请求的步骤概括来说就是SpringMVC能处理就处理,处理不了交给Tomcat。
    介绍<mvc:annotation-driven/>作用
    SpringMVC的标配,在实际开发时建议每次都把这个配置加上。因为加上这个配置后,SpringMVC会在IOC容器中加入很多用得到的bean。例如:@ResponseBody、文件上传、类型转换等等功能都需要用到。

    在这里插入图片描述

    第八节 mvc:view-controller

    假设有下面这样一个handler方法:

    @RequestMapping("/direct")
    public String direct() {
        return "result";
    }
    

    这个方法内部没有做任何处理,仅仅是把一个URL地址"/direct"映射到视图"result"。那么有没有办法简化一下呢?使用mvc:view-controller配置即可。

    <mvc:view-controller path="/direct" view-name="result"/>
    <mvc:annotation-driven/>
    

    mvc:view-controller也必须搭配mvc:annotation-driven。

    <a href="${pageContext.request.contextPath }/direct">测试ViewController</a>
    

    解决多个Web工程contextPath名重复问题,我们复制之前的项目Context root没有改
    在这里插入图片描述
    解决导入工程后目标运行时环境错误

    在这里插入图片描述

  • 相关阅读:
    Java中的final关键字解析
    twaver html5 如何设置节点不可拖动
    Redis Cluster 强制kill某一个节点和shutdown某一个节点后修复过程
    Redis Cluster 4.0.9 集群安装搭建
    Redis Cluster 获取主从关系
    Linux 只复制目录,不复制目录下数据文件
    安装redis cluster时:undefined method `invoke_with_build_args' for nil:NilClass
    redis : Can't save in background: fork: Cannot allocate memory
    MySQL 5.6 GTID 原理以及使用
    pt-query-digest使用详解
  • 原文地址:https://www.cnblogs.com/javawxid/p/12812071.html
Copyright © 2020-2023  润新知