SpringMVC_3.请求映射与静态资源处理

本文详细介绍了SpringMVC中请求映射的实现,包括@Controller和@RequestMapping注解的使用,以及静态资源处理的方法,如通过<mvc:resources>配置和配置Tomcat默认Servlet来解决静态资源404的问题。

1.请求映射

介绍:

        请求到 web.xml ,经过 SpringMVC的分发器对象 [ DispatcherServlet ]  ,将请求转到 SpringMVC 框架中,通过 @RequestMapping 注解实现了请求到控制器 [ 方法 ] 的映射.
 

@RequestMapping注解:

作用:

        用于将Web请求 映射到 特定的处理程序或处理程序的方法.
格式:

        @RequestMapping ( [ 参数.. ] )
说明:

        1. 该注解可以编写在类声明或方法声明的上面

        2. @RequestMapping编写在类声明上面,提供初步的请求映射信息,编写在方法声明上面,提供进一步的请求映射信息 , 示例代码 , 辅助理解 :

                (1).第一种写法和第二种写法效果是一样的,捕获的都是 /abc/index 的请求

                (2).@RequestMapping 编写在类声明上面一般用于这个Action类中的方法捕获的请求都有共同的开头(如: /abc/index1 , /abc/add1 , /abc/delete1),才在类上声明

                (3).@RequestMapping 编写在类声明上后,@RequestMapping 编写在方法上的声明的路径会和编写在类声明上的拼接,格式 : 类声明上的路径参数+方法上的声明路径参数

//第一种写法,编写在类声明上
@RequestMapping("/abc")
public class TestAction {
    @RequestMapping("/index")
    public String index(){
        System.out.println("index()!");
        return "index";//  /WEB-INF/jsp/index.jsp
    }
}

//第二种写法,普通写法
public class TestAction {
    @RequestMapping("/abc/index")
    public String index(){
        System.out.println("index()!");
        return "index";//  /WEB-INF/jsp/index.jsp
    }
}

        3. 含有6个参数,常用的有value [ 默认 ] ( 路径 ) , method ( 请求方式 ) ,params.

        4. 参数都为数组类型,格式: 参数名={值1,值2,..}.若参数只有1个值,可以省略"{}".

常用属性(参数):

        value: 设置当前方法映射的请求资源.若只有1个参数值,可以省略此参数名.@RequestMapping("映射路径")

        method: 设置当前方法映射请求资源时,对请求方式的要求 ( 即设置接收 GET 或 POST 请求,默认GET , method 的两个值 RequestMethod.POST , RequestMethod.GET ) .

提示 : 除设置默认参数不需要加属性名外,设置多个参数都需要加属性名=" ",多个参数设置逗号隔开

@PostMapping 和 @GetMapping注解:

介绍:
        SpringMVC提供了@GetMapping, @PostMapping,@PutMapping等一系列注解,用于简化@RequestMapping.这些注解相比RequestMapping,属于组合注解,即设置请求映射路径,又要求请求方式.

用法:
        (1). @GetMapping("/请求映射路径")等价于
               @RequestMapping(value="/请求映射路径" , method=RequestMethod.GET)


        (2). @PostMapping("/请求映射路径")等价于
               @RequestMapping(value="/请求映射路径" , method=RequestMethod.POST)

2.静态资源处理

为什么配置静态资源映射:
        DispatcherServlet 拦截所有非JSP的请求(当然也会拦截请求资源的URL请求) , 当请求资源URLSpring容器管理的处理程序的映射URL都不匹配时,默认不会到(ME是WebRoot,IDEA是Web) WebRoot下寻找资源,而是直接报400或者404错误.

目的 : 

        (我们要做到在容器管理的处理程序的映射URL都不匹配时,让他在Web文件下寻找资源)

要求:

        而大多数静态资源是没有请求映射配置 , 通过配置 " 默认Servlet请求处理器 " 实现静态资源的响应.
处理方式:
        SpringMVC静态资源的处理方式有很多种(只说两种,够用了):

  1.     <mvc:resouces>
  2.     配置tomcat默认servlet
  3.     注册SpringMVC时拦截带有后缀的请求
  4.     .......

<mvc:resouces> 处理方式 :

        要求:在springmvc配置文件中编写 标签及其相关内容

        机制: 在容器管理的处理程序(Action方法)的映射URL都不匹配时,回到web下的指定文件下去寻找符合URL需要的文件

        处理方式缺点: 所有静态资源都要放在web文件下的同一个文件中(一个自定义的文件夹下,如 static ),拥有局限性,所以再介绍第二种方式--配置tomcat默认servlet

<!--
mapping 设置映射的请求路径. http://localhost:8080/项目名/static/js/login.js
location 设置资源的位置
-->
<mvc:resources mapping="/static/**/" location="/static/" />

补充:

        localhost和mapping区别

  •         localhost是用来描述位置的,是描述在哪个文件下寻找文件
  •         mapping是用来描述请求的约束的,及规定什么开头的URL可以访问该文件下的文件

        localhost和mapping路径问题

  •         mapping写的是相对路径,即是从http://localhost:8080/项目名后开始算的
  •         localhost写的也是相对路径,是从Web文件下开始算的 ( 其实默认情况下Web程序找什么文件或者什么请求其实默认就是在Web文件下找的 ) 

说明 :

         *表示任意资源 , ** 表示任意资源下可以有多层任意资源 , 使用 ** 匹配资源路径要使用 / 闭合

配置tomcat默认servlet处理方式 : 

        要求: 在web.xml配置文件中编写 标签及其相关内容,固定格式, 中写要匹配的数据类型 *.数据类型(任意名字.数据格式)

        机制: 在容器管理的处理程序的映射URL都不匹配时,当请求路径的结尾是任意一个<url-pattern> 设置的格式时,让他在Web文件下寻找资源

    <!--注册Tomcat默认的Servlet-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.css</url-pattern>
        <url-pattern>*.js</url-pattern>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>

其他方法

百度搜索,这里推荐一篇优快云的,只是看了看,没有试过,点击这里里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾欲乘风归去,又恐琼楼玉宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值