一、@RequestMapping的使用
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示访问类中所有方法的请求都以此注解中地址值为父路径。 用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法。
//RequestMapping处在类的上面,访问类中所有方法的请求有都已此路径(/springmvc)为父路径,
//此案例的访问路径为:/springmvc/testRequestMapping
@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {
@RequestMapping("/testRequestMapping")
public String testRequestMapping() {
System.out.println("testRequestMapping");
return SUCCESS;
}
}
测试页面:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<!-- 请求路径为:对应修饰类的@RequestMapping中属性值springmvc和修饰方法的@RequestMapping中属性值testRequestMapping-->
<a href="springmvc/testRequestMapping">Test RequestMapping</a>
</body>
</html>
运行jsp,点击超链接【Test RequestMapping】,能访问testRequestMapping()方法
二、@RequestBody和@ResponseBody使用
平时前后端进行交互时,数据格式通常采用json格式。
1.@RequestBody修饰类中方法某个形参,表示此参数接收请求中请求体,且请求体只能以json格式传输,并能将json数据转化为对应的java对象上
2.@ResponseBody注解通常修饰一个方法,将方法中返回的对象转化为json格式写入HTTP响应正文中,传递到前端。通常使用在 @RequestMapping 后,返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。
后端保存数据的bean类
package com.atguigu.springmvc.entities;
public class User {
private String username;
private String password;
private String email;
private int age;
//===================get、set方法省略=====================
}
后端的Controller层
1.方法中形参user被@RequestBody修饰作用:
表示方法只接受请求体为json格式的数据,并把json数据转换为User类型的实例
2.方法先后被@RequestMapping("/testRequestBody")、@ResponseBody修饰作用:
方法中返回的集合map不会被解析为跳转路径,转化成json格式存放于响应体中,传递到前端
。
@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {
//测试RequestBody
@RequestMapping("/testRequestBody")
@ResponseBody
public Map testRequestBody(@RequestBody User user){
Map<String, Object> map =new HashMap<String, Object>();
map.put("string", "string");
map.put("user", user);
return map;
}
}
前端进行请求,访问具体的方法
请求体的数据格式为json
后端响应的结果:将map集合转为json格式传递到前端
三、@RequestParam注解的使用
@RequestParam注解修饰方法中形参,获取请求中特定的请求参数值并赋值给形参,同时可以对特定的请求参数进行验证、设置默认值等等
本案例中请求url为 springmvc/testRequestParam?username=fangfei&age
@RequestParam(value=“username”) String un:表示形参un获取请求参数username值 fangfei
@RequestParam(value=“age”, required=false,defaultValue=“3000”) int age
请求体中请求参数age没有值,@RequestParam设置age的默认值为3000,并赋给形参age
@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {
@RequestMapping(value="/testRequestParam")
public String testRequestParam(@RequestParam(value="username") String un,@RequestParam(value="age", required=false,defaultValue="3000") int age){
System.out.println("testRequestparam,username:"+un+",age:"+age);
return SUCCESS;
}
}
编制测试jsp文件:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<p>注释@RequestParam映射的使用</p>
<!-- 请求参数username有值,age无值-->
<a href="springmvc/testRequestParam?username=fangfei&age">Test RequestParam</a>
</body>
</html>
运行此jsp文件,点击超链接,控制台运行结果为:
testRequestparam,username:fangfei,age:3000