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:指定请求中必须包含某些参数,否则无法调用该方法。
-
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";
}