Springmvc---解读<url-pattern/>

        (1) *.do:

         在没有特殊要求的情况下,SpringMVC 的中央调度器 DispatcherServlet 的<url-pattern/>常使用后辍匹配方式,如写为*.do 或者 *.action, *.mvc等。

        (2) / :

        Tomcat本身能处理静态资源的访问, 像html, 图片, js文件都是静态资源,因为在你的Tomcat启动后,这个servlet就会被创建: 在tomcat的安装目录下有一个DefaultServlet:在你的Tomcat启动后,这个DefaultServlet就会被创建:

                ​​​​​​​        

        DefaultServlet的作用:

        1.处理静态资源
        2.处理未映射到其它servlet的请求。 
        The default servlet for all web applications, that serves static  resources.  It processes all requests that are not mapped to other  servlets with servlet mappings (defined either here or in your own web.xml file).

         可以写为/,当你的项目中使用了 / ,它会替代 tomcat中的DefaultServlet(DefaultServlet用来处理各种静态资源访问请求),DispatcherServlet 将会向静态资源获取请求,例如.css、.js、.jpg、.png 等资源的获取请求,当作是一个普通的Controller请求中央调度器会调用处理器映射器为其查找相应的处理器。当然也是找不到的,所以在这种情况下,所有的静态资源获取请求均会报404错误你用了/后,你的动态资源可以成功访问,你的静态资源是不行的。

例如:

        需求:在index.jsp页面中存在一个访问图片的链接。该项目用于演示将写为*.do 可以访问到该图片,而写为/,则无法访问:

                              

使用/的话,如何才能访问得到静态资源呢?有两种解决方式:
第一种解决方式:
        第一步:在springmvc的配置文件中声明:<mvc:default-servlet-handler/>

        声明了<mvc:default-servlet-handler/>后,springmvc 框 架 会 在 容 器 中 创 建DefaultServletHttpRequestHandler 处理器对象。它会像一个检查员,对进入DispatcherServlet 的 URL 进行筛查,如果发现是静态资源的请求,就将该请求转由 Web 应用服务器默认的 Servlet 处理。一般的服务器都有默认的Servlet。 在 Tomcat 中,有一个专门用于处理静态资源访问的 Servlet 名叫 DefaultServlet,可以处理各种静态资源访问请求

        第二步骤:加入注解驱动解决问题<mvc:annotation-driven />:

       <mvc:default-servlet-handler/>和 @RequestMapping注解 有冲突,需要加入<mvc:annotation-driven />解决问题

第二种解决方式:推荐!使用<mvc:resources/>标签
第一步:在springmvc配置文件中声明<mvc:resources/>标签

        在 Spring3.0 版本后,Spring 定义了专门用于处理静态资源访问请求的处理器 ResourceHttpRequestHandler。并且添加了标签<mvc:resources/>标签,专门用于解决静态资源无法访问问题。需要在springmvc配置文件中添加如下形式的配置:

                        表示以images开头的就去images目录下去找静态资源:

         加了之后我们的框架也会在内存中去创建对象:ResourceHttpRequestHandler,然后由这个类处理静态资源,不依赖于服务器了,框架自己处理静态资源的访问,这种方式在项目中用得多,因为不依赖服务器,不管啥服务器

第二步:加入注解驱动解决问题<mvc:annotation-driven />:

 <mvc:resources/>标签和 @RequestMapping注解 有冲突,加入注解驱动解决问题<mvc:annotation-driven />

        你可以把静态资源全部放到一个文件夹中:

以后你直接这样写,不需要再带有后缀了:

  @RequestMapping("/single")
    @ResponseBody
    public Student doJsonObject(){
        //创建java对象,转为json
        Student student = new Student("李四",22,"lisi@qq.com");
        return student;
    }

    @RequestMapping("/list")
    @ResponseBody
    public List<Student> doJsonArray(){
        //创建List对象,转为jsonArray
        List<Student> students = new ArrayList<>();
        students.add(new Student("李四",22,"lisi@qq.com"));
        students.add(new Student("王五",23,"wangwu@qq.com"));
        return students;
    }

相关推荐

  1. urllib.parse 用于解析 URL

    2024-03-25 10:08:01       36 阅读
  2. Backend - Django URL 路由 & 重定向 & url编码解码

    2024-03-25 10:08:01       33 阅读
  3. 前端解析URL的两种方式

    2024-03-25 10:08:01       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-25 10:08:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-25 10:08:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-25 10:08:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-25 10:08:01       18 阅读

热门阅读

  1. 手机IP地址如何更换

    2024-03-25 10:08:01       20 阅读
  2. 想注册滴滴司机驾龄不够怎么办?

    2024-03-25 10:08:01       14 阅读
  3. 测试缺陷定位的基本方法

    2024-03-25 10:08:01       19 阅读
  4. Spark—GraphX实战 ID Mapping

    2024-03-25 10:08:01       17 阅读
  5. 想注册滴滴司机驾龄不够怎么办?

    2024-03-25 10:08:01       16 阅读
  6. 10种常用排序算法简介

    2024-03-25 10:08:01       17 阅读
  7. 想注册滴滴司机驾龄不够怎么办?

    2024-03-25 10:08:01       17 阅读
  8. 【蓝桥杯3.23小白赛】(详解)

    2024-03-25 10:08:01       19 阅读
  9. 机器学习的步骤与方法

    2024-03-25 10:08:01       15 阅读
  10. 【ML】机器学习任务攻略 4

    2024-03-25 10:08:01       17 阅读
  11. Qt如何重写closeEvent

    2024-03-25 10:08:01       16 阅读