1. RequestMapping修饰方法
package handlers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Hello {
@RequestMapping("/hello")
public String hello(){
System.out.println("哈哈哈");
return "success";
}
}
访问url如下:
<a href="hello">@RequestMapping修饰方法</a><br/>
2. RequestMapping修饰类
package handlers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/springmvc")
public class SpringMVCTest {
private static final String SUCCESS = "success";
@RequestMapping("/testRequestMapping")
public String testRequestMapping(){
System.out.println("testRequestMapping");
return SUCCESS;
}
}
访问url如下:
<a href="springmvc/testRequestMapping">@RequestMapping修饰类</a>
3. RequestMapping:使用Method属性来指定请求方式
package handlers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/springmvc")
public class SpringMVCTest {
private static final String SUCCESS = "success";
//使用Method属性来指定请求方式
@RequestMapping(value="/testMethod",method=RequestMethod.GET)
public String testMethod(){
System.out.println("testMethod()");
return SUCCESS;
}
}
访问url如下:
<a href="springmvc/testMethod">使用Method属性来指定请求方式</a><br/>
4. RequestMapping:指定请求参数、请求头
- 可以使用params和headers来更精确映射请求。params和headers支持简单的表达式。
@RequestMapping(value="/SetParamAndHeader",params={"username","age!=10"},headers={"Accept-Language=zh-CN,zh;q=0.9"})
public String SetParamAndHeader(){
System.out.println("SetParamAndHeader()");
return SUCCESS;
}
访问url如下(能顺利访问):
<a href="springmvc/SetParamAndHeader?username=wang&age=110">指定请求参数</a><br/>
访问url如下(不能顺利访问):
<a href="springmvc/SetParamAndHeader?username=wang&age=10">指定请求参数</a><br/>
?? 31, 2018 12:49:28 ?? org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleNoSuchRequestHandlingMethod
??: No matching handler method found for servlet request: path ‘/springmvc/SetParamAndHeader’, method ‘GET’, parameters map[‘username’ -> array[‘wang’], ‘age’ -> array[‘10’]]
5. RequestMapping:映射请求支持Ant风格的3种通配符
- “ ? ” 匹配文件名中一个字符
@RequestMapping("/?/TestAntMapping1")
public String TestAntMapping1(){
System.out.println("TestAntMapping()?");
return SUCCESS;
}
<a href="springmvc/a/TestAntMapping1">?通配符</a><br/>
- “ * ” 匹配文件名中任意字符
@RequestMapping("/*/TestAntMapping")
public String TestAntMapping(){
System.out.println("TestAntMapping()*");
return SUCCESS;
}
<a href="springmvc/aa/TestAntMapping">*通配符</a><br/>
- “ ** ” 匹配多层路径
@RequestMapping("/**/TestAntMapping2")
public String TestAntMapping2(){
System.out.println("TestAntMapping()**");
return SUCCESS;
}
<a href="springmvc/aa/aa/aa/aa/aa/TestAntMapping2">**通配符</a><br/>
6. RequestMapping:@PathVariable用法
@PathVariable可以将URL中占位符绑定到控制器中,也就是引入到方法形参中
@RequestMapping("TestPathVariable/{id}")
public String TestVariable(@PathVariable("id") Integer id){
System.out.println("TestVariable:"+id);
return SUCCESS;
}
<a href="springmvc/TestPathVariable/2">PathVariable</a><br/>
7. RequestMapping:@RequestParam用法
常用参数
- value:请求参数的参数名
- required:该参数是否必须,默认为true
- defaultValue:该参数的默认值
@RequestMapping(value="/TestRequestParam")
public String TestRequestParam(@RequestParam(value="username") String username,
@RequestParam(value="age",required=false,defaultValue="0") int age){
System.out.println("TestRequestParam:username="+username+",age="+age);
return SUCCESS;
}
访问url
<a href="springmvc/TestRequestParam?username=wang&&age=55">@RequestParam</a><br/>
7. RequestMapping:使用POJO对象绑定请求参数
SpringMVC会按请求参数名和POJO属性名自动匹配,并支持级联属性
<form action="springmvc/TestPojo" method="post">
用户名<input type="text" name="username"/><br/>
密码<input type="password" name="password"/><br/>
年龄<input type="text" name="age"/><br/>
省<input type="text" name="address.province"/><br/>
市<input type="text" name="address.city"/><br/>
<input type="submit" value="提交">
</form>
package pojo;
/**
* User类
* @author jiantao.wang
*/
public class User {
String username;
String password;
int age;
Address address;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
package pojo;
/**
* Address类
* @author jiantao.wang
*
*/
public class Address {
String province;
String city;
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
@Controller
@RequestMapping("/springmvc")
public class SpringMVCTest {
private static final String SUCCESS = "success";
@RequestMapping("/TestPojo")
public String TestPojo(User user){
System.out.println("username"+user.getUsername());
System.out.println("password"+user.getPassword());
System.out.println("age"+user.getAge());
System.out.println("province"+user.getAddress().getProvince());
System.out.println("city"+user.getAddress().getCity());
return SUCCESS;
}
}