@RequestMapping、@RequestBody、@ResponseBody、@RequestParam註解用法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章