1. 程式人生 > >[email protected]<

[email protected]<

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;
	}
}