玩命加载中 . . .

Spring-MVC ② [常见和只需要了解的注释]


Spring ① 【PLUS】

建议先食用前一个入门文档

@RequestMapping ()作用
  1. Spring MVC使用**@RequestMapping注解为控制器指定可以处理那些URL**请求

  2. 在控制器的类定义及方法定义处都可标注

    @RequestMapping

    • 类定义处 : 提供初步的请求映射信息。相对于WEB应用的根目录
    • 方法处 : 提供进一步的细分映射信息。相对于类定义处的URL。若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录

    3.DispatcherServlet截获请求后,就通过控制器@RequestMapping提供的映射信息确定请求所对应的处理

如题

package com.joker.handlers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@RequestMapping("/springmvc")
@Controller
public class SpringMvcTest {
    private  static final  String success="success";

@RequestMapping("/test")
    public String Test(){
        System.out.println("我跳了");
        return  success;
    }
}


在前端.jsp文件中 要想执行这个方法的格式为

<a href="${pageContext.request.contextPath}/springmvc/test">XX</a>

可以在不同的类 修饰一样名字的方法

springmvc/test

springmv/test

springm/test

都可!

修饰类就是找哪个旅馆

修饰方法就是找哪间房间

一个旅馆不能有相同的房间,但不同的旅馆可以有相同的房间

@RequestMapping 映射请求参数、请求方法或请求头

1.RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系

2.RequestMapping注解可以作用在方法和类上
1.作用在类上:第一级的访问目录
2.作用在方法上:第二级的访问路径
3.细节:路径可以不编写/表示应用的根目录开始

3.RequestMapping的属性
1.path 指定请求路径的URL
2.value value属性和path属性是一样的
3.method 指定该方法的请求方式
4.param 指定限制请求参数的条件

1.params和headers支持简单的表达式:

  •     param1:表示请求必须包含名为param1的请求参数
    
  •       !param1: 表示请求不能包含名为param1的请求参数
    
  •        param1 != value1:表示请求包含名为param1的请求参数,但其值不能为value1
    
  •           {"param1=value1", "param2"}:请求必须包含名为param1和param2的两个请                   求参数,且param1参数的值必须为value1
    

●@RequestMapping 的value、method、params 及heads
分别表示请求URL、请求方法、请求参数及请求头的映射条
件,他们之间是与的关系,联合使用多个条件可让请求映射
更加精确化。

@PathVariable映射URL绑定的占位符

通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中:
URL中的{xox}占位符可以通过@PathVariable(“xox”)绑定到操作方法的入参中。

 @RequestMapping("test4/{id}")
    public String testPathVarible(@PathVariable("id") Integer id){
        System.out.println("你看看我给你带什么来了?:"+id);
        return success;
    }

当index.jsp 中的这段代码点击后 上面就会接收到这个请求,自动把id赋值

<a href="/springmvc/test4/3">给我翻译翻译,什么叫惊喜?</a>

成功就会赋值 1

错误就会赋值 0

这也是前端常说的状态码

REST

REST 是一个规范;8个method 憋只按着GET 一个往死里薅!

Rest风格的URL:

以CRUD为例:
新增(POST): /order POST
修改(PUT): /order/1 PUT
获取(GET): /order/1 GET
删除(DELETE): /order/1 DELETE

如何发送PUT请求和DELETE请求呢?

1.需要配置HiddenHttpMethodFilter

在web.xml文件下

  <filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

​ 1.2 原理

2.需要发送POST请求


<a href="/springmvc/test5/1">Test Rest Get</a>

<br><br>

<form action="/springmvc/test5" method="post">
    <input type="submit" value="Test Rest POST">
</form>

<br><br>

<form action="/springmvc/test5/1" method="post">
    <input type="hidden" name="_method" value="DELETE">
    <input type="submit" value="Test Rest DELETE">
</form>

<br><br>

<form action="/springmvc/test5/1" method="post">
    <input type="hidden" name="_method" value="PUT">
    <input type="submit" value="Test Rest PUT">
</form>

3.需要在发送POST请求时携带一个name=”_ method”的隐藏域,值为DELETE 或PUT

    <input type="hidden" name="_method" value="(DELETE/PUT)">

这样子你的POST请求就可以转为 DELETE 或者PUT请求

3.5 测试

  @RequestMapping(value = "/test5/{id}",method = RequestMethod.GET)
    public  String testRest(@PathVariable Integer id){
        System.out.println("Test Rest GET:"+id);
        return success;
    }

    @RequestMapping(value = "/test5",method = RequestMethod.POST)
    public  String testRest(){
        System.out.println("Test Rest POST:");
        return success;
    }

    @RequestMapping(value = "/test5/{id}",method = RequestMethod.PUT)
    public  String testRestPUT(@PathVariable Integer id){
        System.out.println("Test Rest PUT:"+id);
        return success;
    }

    @RequestMapping(value = "/test5/{id}",method = RequestMethod.DELETE)
    public  String testRestDELETE(@PathVariable Integer id){
        System.out.println("Test Rest DELETE:"+id);
        return success;
    }

3.9 结果

@RequestParam 映射請求參數

@RequestParam 来映射请求参数。

index.jsp

Link

handler類

   @RequestMapping("/userTest1")
    public  String User1(@RequestParam(value = "uname")String un,@RequestParam(value = "age",required = false,defaultValue = "0") int age){
        System.out.println("userTest1:"+un+" : "+age);
        return  success;
    }

翻譯

当 点击 LINK 后 会执行上述方法 然后会解析上面?后面传来的 值 看 请求过来 的参数名 是否正确。

正确的话就赋值给定义的变量。

其中

value值即请求参数的参数名
required该参数是否必须。默认为true
defaultValue请求参数的默认值

required 为flase的话 就算没有传那个值过来 也会执行.


@RequestParam 相同格式的注释
@RequestHeader("Accept-Encoding")        // (绑定请求报头属性值)
@CookieValue("JSESSIONID")                // 映射一个Cookie值

文章作者: 青逝痕
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 青逝痕 !
  目录