1. 程式人生 > >系列三、SpringMVC常用註解

系列三、SpringMVC常用註解

請求和引數型註解

第一、@RequestParam

適用場景,封裝繫結資料的時候,當我們想給形參取其他名字的時候可以用這個註解,但是也可以不寫

jsp  中的程式碼:
<!-- requestParams 註解的使用 -->
<a href="springmvc/useRequestParam?name=test">requestParam 註解</a>
控制器中的程式碼:
/**
* requestParams 註解的使用
* @param username
* @return
**/
@RequestMapping("/useRequestParam")
public String  useRequestParam(@RequestParam("name")Stringusername,@RequestParam(value="age",required=false)Integer age){
System.out.println(username+","+age);
return "success";
}

這裡要特別說明一下,用map接收的時候,必須要新增該註解

    @RequestMapping("/request")
    public String testRequestParamo(@RequestParam Map<String,Object> map) {
        System.out.println("test is doing....");
        System.out.println(map);
        return "success";
    }

第二、@RequestBody

作用:用於獲取請求體內容。直接使用得到是 key=value&key=value...結構的資料,get 請求方式不適用。

屬性:required:是否必須有請求體。預設值是:true。當取值為 true 時,get 請求方式會報錯。如果取值為 false,get 請求得到是 null。

post  請求 jsp  程式碼:
<!-- request body 註解 -->
<form action="springmvc/useRequestBody" method="post">
使用者名稱稱:<input type="text" name="username" ><br/>
使用者密碼:<input type="password" name="password" ><br/>
使用者年齡:<input type="text" name="age" ><br/>
<input type="submit" value=" 儲存 ">
</form>

get  請求 jsp  程式碼:
<a href="springmvc/useRequestBody?body=test">requestBody 註解 get 請求</a>

控制器程式碼

/**
* RequestBody 註解
* @param user
* @return
*/
@RequestMapping("/useRequestBody")
public String  useRequestBody(@RequestBody(required=false) String body){
System.out.println(body);
return "success";
}

第三、@PathVaribale

作用:
用於繫結 url 中的佔位符。例如:請求 url 中 /delete/{id},這個{id}就是 url 佔位符。
url 支援佔位符是 spring3.0 之後加入的。是 springmvc 支援 rest 風格 URL 的一個重要標誌。

屬性:
value:用於指定 url 中佔位符名稱。
required:是否必須提供佔位符

jsp  程式碼:
<!-- PathVariable 註解 -->
<a href="springmvc/usePathVariable/100">pathVariable 註解</a>
控制器程式碼:
/**
* PathVariable 註解
* @param user
* @return
*/
@RequestMapping("/usePathVariable/{id}")
public String  usePathVariable(@PathVariable("id") Integer id){
   System.out.println(id);
   return "success";
}

第四、@RequestHeader

作用:
用於獲取請求訊息頭。
屬性:
value:提供訊息頭名稱
required:是否必須有此訊息頭
注:
在實際開發中一般不怎麼用

jsp  中程式碼:
<!-- RequestHeader 註解 -->
<a href="springmvc/useRequestHeader">獲取請求訊息頭</a>
控制器中代 碼:
/**
* RequestHeader 註解
* @param user
* @return
*/
@RequestMapping("/useRequestHeader")
public String  useRequestHeader(@RequestHeader(value="Accept-Language",
  required=false)String requestHeader){
  System.out.println(requestHeader);
  return "success";
}
執行結果:

 第五、@CookieValue

作用:
用於把指定 cookie 名稱的值傳入控制器方法引數。
屬性:
value:指定 cookie 的名稱。
required:是否必須有此 cookie

jsp  中的程式碼:
<!-- CookieValue 註解 -->
<a href="springmvc/useCookieValue">繫結 cookie 的值</a>

控制器中的程式碼:
/**
* Cookie 註解註解
* @param user
* @return
*/
@RequestMapping("/useCookieValue")
public String  useCookieValue(@CookieValue(value="JSESSIONID",required=false)String cookieValue){
  System.out.println(cookieValue);
  return "success";
}
執行結果:

 第六、@ModelAttribute

作用:
該註解是 SpringMVC4.3 版本以後新加入的。它可以用於修飾方法和引數。出現在方法上,表示當前方法會在控制器的方法執行之前,先執行。它可以修飾沒有返回值的方法,也可
以修飾有具體返回值的方法,出現在引數上,獲取指定的資料給引數賦值。
屬性:
value:用於獲取資料的 key。key 可以是 POJO 的屬性名稱,也可以是 map 結構的 key。
應用場景:
當表單提交資料不是完整的實體類資料時,保證沒有提交資料的欄位使用資料庫物件原來的資料。
例如:
我們在編輯一個使用者時,使用者有一個建立資訊欄位,該欄位的值是不允許被修改的。在提交表單數,據是肯定沒有此欄位的內容,一旦更新會把該欄位內容置為 null,此時就可以使用此註解解決問題。

一、基於 POJO  屬性的基本使用

<a href="springmvc/testModelAttribute?username=test">測試 modelattribute</a>
控制器程式碼:
/**
* 被 ModelAttribute 修飾的方法
* @param user
*/
@ModelAttribute
public void showModel(User user) {
System.out.println("執行了 showModel 方法"+user.getUsername());
}
/**
* 接收請求的方法
* @param user
* @return
*/
@RequestMapping("/testModelAttribute")
  public String testModelAttribute(User user) {
  System.out.println("執行了控制器的方法"+user.getUsername());
  return "success";
}

二、基於 Map  的應用場景示例 1 :ModelAttribute  修飾方法帶返回值

需求:
修改使用者資訊,要求使用者的密碼不能修改
jsp  的程式碼:
<!-- 修改使用者資訊 -->
<form action="springmvc/updateUser" method="post">
使用者名稱稱:<input type="text" name="username" ><br/>
使用者年齡:<input type="text" name="age" ><br/>
<input type="submit" value=" 儲存 ">
</form>
控制的程式碼:
/**
* 查詢資料庫中使用者資訊
* @param user
*/
@ModelAttribute
public User showModel(String username) {
//模擬去資料庫查詢
 User abc = findUserByName(username);
 System.out.println("執行了 showModel 方法"+abc);
 return abc;
}
/**
* 模擬修改使用者方法
* @param user
* @return
*/
@RequestMapping("/updateUser")
public String testModelAttribute(User user) {
 System.out.println("控制器中處理請求的方法:修改使用者:"+user);
 return "success";
}
/**
* 模擬去資料庫查詢
* @param username
* @return
*/
private User findUserByName(String username) {
 User user = new User();
 user.setUsername(username);
 user.setAge(19);
 user.setPassword("123456");
 return user;
}

三、基於 Map  的應用場景示例 :ModelAttribute  修飾方法不帶返回值

jsp  中的程式碼:
<!-- 修改使用者資訊 -->
<form action="springmvc/updateUser" method="post">
使用者名稱稱:<input type="text" name="username" ><br/>
使用者年齡:<input type="text" name="age" ><br/>
<input type="submit" value=" 儲存 ">
</form>
控制器中的程式碼:
/**
* 查詢資料庫中使用者資訊
* @param user
*/
@ModelAttribute
public void showModel(String username,Map<String,User> map) {
//模擬去資料庫查詢
 User user = findUserByName(username);
 System.out.println("執行了 showModel 方法"+user);
 map.put("abc",user);
}
/**
* 模擬修改使用者方法
* @param user
* @return
*/
@RequestMapping("/updateUser")
public String testModelAttribute(@ModelAttribute("abc")User user) {
 System.out.println("控制器中處理請求的方法:修改使用者:"+user);
 return "success";
}
/**
* 模擬去資料庫查詢
* @param username
* @return
*/
private User findUserByName(String username) {
 User user = new User();
 user.setUsername(username);
 user.setAge(19);
 user.setPassword("123456");
 return user;
}

第七、@SessionAttribute

作用:
用於多次執行控制器方法間的引數共享。
屬性:
value:用於指定存入的屬性名稱
type:用於指定存入的資料型別。

jsp  中的程式碼 :
<!-- SessionAttribute 註解的使用 -->
<a href="springmvc/testPut">存入 SessionAttribute</a>
<hr/>
<a href="springmvc/testGet">取出 SessionAttribute</a>
<hr/>
<a href="springmvc/testClean">清除 SessionAttribute</a>
控制器中的程式碼 :
/**
* SessionAttribute 註解的使用
* @author 黑馬程式設計師
* @Company http://www.ithiema.com
* @Version 1.0
*/
@Controller("sessionAttributeController")
@RequestMapping("/springmvc")
@SessionAttributes(value ={"username","password"},types={Integer.class})
public class SessionAttributeController {
/**
* 把資料存入 SessionAttribute
* @param model
* @return
* Model 是 spring 提供的一個介面,該介面有一個實現類 ExtendedModelMap
* 該類繼承了 ModelMap,而 ModelMap 就是 LinkedHashMap 子類
*/
@RequestMapping("/testPut")
public String testPut(Model model){
 model.addAttribute("username", "泰斯特");
 model.addAttribute("password","123456");
 model.addAttribute("age", 31);
//跳轉之前將資料儲存到 username、password 和 age 中,因為註解@SessionAttribute 中有這幾個引數
 return "success";
}
@RequestMapping("/testGet")
public String testGet(ModelMap model){
 System.out.println(model.get("username")+";"+model.get("password")+";"+model.get("age"));
 return "success";
}
@RequestMapping("/testClean")
public String complete(SessionStatus sessionStatus){
 sessionStatus.setComplete();
 return "success";
 }
}

相關推薦

系列SpringMVC常用註解

請求和引數型註解 第一、@RequestParam 適用場景,封裝繫結資料的時候,當我們想給形參取其他名字的時候可以用這個

SpringMVC常用註解@RequestMapping

@Controller 標註在類上,作用同@service等。將一個類宣告為處理器。 @RequestMapping 請求URL到處理器功能處理方法的對映 此註解可以放在類上也可以放在方法上 value根據請求地址限定 value:

springmvc常用註解標簽詳解

單單 tps 完成 移除 找不到 live amp thead man 1、@Controller 在SpringMVC 中,控制器Controller 負責處理由DispatcherServlet 分發的請求,它把用戶請求的數據經過業務處理層處理之後封裝成一個Model

采用Opserver來監控你的ASP.NET項目系列(監控你的服務器狀態)

lis 容器 等待 保留 指正 默認 ins dock eight 前言 之前有過2篇關於如何監控ASP.NET core項目的文章,有興趣的也可以看看. 今天我們主要來介紹一下,如何使用Opserver監控我們的服務器狀態. Opserver的功能其實很強大,他可以用

springMVC常用註解

osi com 容器 需要 VC .com nbsp springmvc autowired 1.@Controller 用於標記在一個類上,使用它標記的類就是一個SpringMVC Controller 對象。分發處理器將會掃描使用了該註解的類的方法 2.@Request

SpringMvc常用註解了解

batis 註解 not 響應 依賴 返回 ppi 默認 寫入 1.@RequestMapping  RequestMapping是一個用來處理請求地址映射的註解(將請求映射到對應的控制器方法中),可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作為父路

dubbo系列架構介紹及調用過程解析

使用 wid mes info 註冊中心 response sources zh-cn 組裝 一、整體設計 圖例說明: 圖中左邊淡藍背景的為服務消費方使用的接口,右邊淡綠色背景的為服務提供方使用的接口,位於中軸線上的為雙方都用到的接口。 圖中從下至上分為十層,

Springmvc之Controller層方法返回值

ItemController @Controller public class ItemController { @Autowired private ItemService itemService; /** * 1.ModelAndView 無敵的,帶著資料,返回檢視路徑 * 2

SpringMVC原理

學習內容 1、Web環境下spring配置 2、根IoC容器的啟動 3、DispatcherServlet的啟動和初始化 4、MVC元件 5、MVC處理請求流程   一、web環境下spring配置 在web.xml中配置DispatcherServle

細說springMVC常用註解

@Controller 在SpringMVC 中,控制器Controller 負責處理由DispatcherServlet 分發的請求,它把使用者請求的資料經過業務處理層處理之後封裝成一個Model ,然後再把該Model 返回給對應的View 進行展示。在SpringMVC 中提供了一個非

linux指令(壓縮常用指令)

gzip [-cdtv#]檔名 :在預設的狀態下原本的檔案會被壓縮成為.gz的檔名,原始檔案就不再存在了 選項與引數: -c :將壓縮的資料輸出到螢幕上,可透過資料流重導向來處理; -d :解壓縮的引數; -t :可以用來檢驗一個壓縮檔的一致性~看看檔案有無錯誤; -v :可以顯示出原檔案/壓縮檔案

kafka系列Kafka款監控工具比較

轉載原文:http://top.jobbole.com/31084/ 通過研究,發現主流的三種kafka監控程式分別為: Kafka Web Conslole  Kafka Manager KafkaOffsetMonitor 現在依次介紹以上三種工具: 一、Kafka W

Hibernate常用介面和類

Configuration類和作用 Configuration物件用於配置並且啟動Hibernate。 Hibernate應用通過該物件來獲得物件-關係對映檔案中的元資料,以及動態配置Hibernate的屬性,然後建立SessionFactory物件。 簡單一句話:載入Hiberna

kafka系列kafka常用java API

引入maven包 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <

springmvc常用註解標籤詳解

1、@Controller 在SpringMVC 中,控制器Controller 負責處理由DispatcherServlet 分發的請求,它把使用者請求的資料經過業務處理層處理之後封裝成一個Model ,然後再把該Model 返回給對應的View 進行展示。在Spring

kafka系列kafka常用管理命令

一、Topic管理 1、建立topic kafka-topics.sh --zookeeper 47.52.199.52:2181 --create --topic test-15 --replication-factor 1 --partitions 3 2、新增partition

springboot系列SpringBoot 單元測試配置訪問配置專案打包釋出

一、單元測試 生成的demo裡面包含spring-boot-starter-test :測試模組,包括JUnit、Hamcrest、Mockito,沒有的手動加上。 <dependency> <groupId>org.springframework.boo

SpringMVCSpringMVC常用註解

【[email protected]】        引用包:org.springframework.stereotype.Controller,使用Controller標識他是一個控制器 【2.@RequestMapping】 ①實

springMVC常用註解簡單解釋

@ReuestMapping("xxxxx")表示方法在url中的對映,是最常用的註解。jsp頁面中的url請求路徑對應該註解的XXX @ResponseBody 表示返回是json/xml資料。使用該註解不會再走檢視處理器,頁面不會跳轉。物件作為json/XML資料

SpringMVC常用註解@Controller,@Service,@repository,@Component

這兩天公司在做一個網站專案,框架使用的是springMVC框架,在這裡對這幾個註解做一個歸納整理 專案中的controller層使用@controller註解 @Controller 用於標記在一