SpringMVC_@RequestMapping

版权声明:非允许不得转载! https://blog.csdn.net/wangwjtt/article/details/83573983

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

猜你喜欢

转载自blog.csdn.net/wangwjtt/article/details/83573983
今日推荐