[email protected]<
阿新 • • 發佈:2018-11-09
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;
}
}