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

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.    
  2.     配置tomcat默认servlet
  3.     注册SpringMVC时拦截带有后缀的请求
  4.     .......

 处理方式 :

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

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

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


补充:

        localhost和mapping区别

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

        localhost和mapping路径问题

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

说明 :

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

配置tomcat默认servlet处理方式 : 

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

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

    
    
        default
        *.html
        *.css
        *.js
        *.png
    

其他方法

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

你可能感兴趣的:(Java,spring,idea,java,spring,servlet,springmvc)