一、@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