SpringMVC注解

SpringMVC注解

  • @RequestMapping

    Spring MVC通过@RequestMapping注解将URL请求与业务方法进行映射,在Handler的类定义处以及方法定义处都可以添加@RequestMapping,在类定义处添加,相当于客户端多了一层访问路径。

  • @Controller

​ @Controller在类定义处添加,将该类交给Ioc容器管理(结合spring.xml的自动扫描配置使用),同时可以使其成为一个控制器,可以接受客户端请求。

package com.soutwind;

import org.springframework.aop.scope.ScopedProxyUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @Controller,和@Component类似,将类交给Ioc管理,并多了控制器的功能
 */

@Controller

public class HelloHandler {
    @RequestMapping("/index")//当在浏览器中输入/index时可直接调用index方法。
    public  String index(){
        System.out.println("执行了index..");
        return "index";//return一个视图解析器,调用webapp下的Index.jsp
    }

}

  • @RequestMapping相关参数

    1.value:指定URL请求的实际地址,是@RequestMapping的默认值。

public class HelloHandler {
    @RequestMapping("/index")//当在浏览器中输入/index时可直接调用index方法。
    public  String index(){
        System.out.println("执行了index..");
        return "index";//return一个视图解析器,调用webapp下的Index.jsp
    }

等于

public class HelloHandler {
    @RequestMapping(value = "/index")//当在浏览器中输入/index时可直接调用index方法。
    public  String index(){
        System.out.println("执行了index..");
        return "index";//return一个视图解析器,调用webapp下的Index.jsp
    }

​ 2.method:指定请求的method类型,GET,POST,PUT,DELET.

package com.soutwind;

import org.springframework.aop.scope.ScopedProxyUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * @Controller,和@Component类似,将类交给Ioc管理,并多了控制器的功能
 */

@Controller

public class HelloHandler {
    //method = RequestMethod.GET,设置index方法只能被get请求。
    //浏览器通过地址访问就属于get请求。
    @RequestMapping(value = "/index",method = RequestMethod.GET)//当在浏览器中输入/index时可直接调用index方法。
    public  String index(){
        System.out.println("执行了index..");
        return "index";//return一个视图解析器,调用webapp下的Index.jsp
    }

}

上述代码表示index方法只能接受GET请求。

​ 3.params:指定请求中必须包含某些参数,否则无法调用该方法。

  1. public class HelloHandler {
        //method = RequestMethod.GET,设置index方法只能被get请求。
        //浏览器通过地址访问就属于get请求。
        @RequestMapping(value = "/index",method = RequestMethod.GET,params={"name","id=10"})//当在浏览器中输入/index时可直接调用index方法。
        public  String index(){
            System.out.println("执行了index..");
            return "index";//return一个视图解析器,调用webapp下的Index.jsp
        }
    

​ 上述请求中必须包含name和id两个参数,同时id的值必须是10

​ 浏览器请求:localhost:8080/index?name&id=10

参数绑定

​ 关于参数绑定,一般情况下,index方法要想获得 http请求的参数name和id,必须有有和name,id属性名一样的形参。同时HandlerAdapter会帮助我们完成数据类型转换,id在请求端是string类型,但是传回来时handlerdapter会将其转换成index方法能接受的类型。

@RequestMapping(value = "/index",method = RequestMethod.GET ,params = {"name", "id=10"})//当在浏览器中输入/index时可直接调用index方法。
public  String index(String name,int id){
    System.out.println(name);
    System.out.println(id);
    System.out.println("执行了index..");
    return "index";//return一个视图解析器,调用webapp下的Index.jsp
}

​ 在有@RequestParam映射的情况下,index方法可以自护定义形参属性名,只要映射的参数和http请求的参数一致即可。

handleradapter工作:将请求的参数name和id分别赋给str和age,同时进行数据类型转换。

@RequestMapping(value = "/index",method = RequestMethod.GET ,params = {"name", "id=10"})//当在浏览器中输入/index时可直接调用index方法。
public  String index(@RequestParam("name") String str,@RequestParam("id") int age){
    System.out.println(str);
    System.out.println(age);
    System.out.println("执行了index..");
    return "index";//return一个视图解析器,调用webapp下的Index.jsp
}

SpringMVC同时支持RESTful风格的URL

restful风格

@RequestMapping(value = "/rest/{name}/{id}")
public String rest(@PathVariable("name") String name,@PathVariable("id") int id){
    System.out.println(name);
    System.out.println(id);
    System.out.println("执行了index..");
    return "index";//return一个视图解析器,调用webapp下的Index.jsp
}

传参时必须要@PathVariable注解完成请求参数与形参的映射。

  • 映射Cookie
  • SpringMVC通过映射可以直接在业务方法中获取Cookie的值。
@RequestMapping("/cookie")
    public  String cookie(@CookieValue(value = "JSESSIONID") String sessionId){
    System.out.println(sessionId);
    return "index";
}

posted on 2023-02-10 14:30  张铁蛋666  阅读(13)  评论(0编辑  收藏  举报

导航