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