SpringMvc的常用註解介紹
SpringMvc的常用註解介紹
@RequestMapping 註解
作用:用於建立請求URL和處理請求的方法之間的對應關係(客戶端會傳送請求,伺服器端會有一個方法處理該請求,RequestMapping這個發給發就是建立這兩者之間的關係)
原始碼:
1.出現在類上:可以讓我們的URL按照模組化去管理
例如常見的電子商城網站:有使用者模組,訂單模組,這兩個模組都有對資料庫資料的增刪改查,如果我們只將RequestMapping這個註解寫在每個模組中的方法上,那麼我們就很難去辨認到底是哪個方法.
其中紅色的為寫在類上面的
(就拿兩個模組中的刪除方法來說,都是刪除資料庫資料 如果你用/user/delete 和/order/delete是不是很快的就找到要執行的方法,便於模組化管理,但是如果你寫的是/delete1 和/delete2誰能準確快速的找到請求要執行的方法)
@RequestMapping 註解的屬性
和請求引數繫結相關的註解
請求引數的繫結
作為一個web層框架,客戶端發請求都會攜帶引數,而我需要將引數(資料)拿到,這就是請求引數的繫結
在早期Servlet中如果需要獲取請求的引數或者說獲取表單的引數,需要用request.getParameter()獲取
基本資料型別和字串型別
name和引數的名稱必須一致
實體型別JavaBean
import java.io.Serializable;
public class Account implements Serializable {
String username;
String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Account{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
JavaBean型別有其他物件的引用
那麼表單的name如何寫才可以封裝成功
集合資料型別
配置解決中文亂碼的過濾器
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
自定義型別轉換
在mvc框架中從表單 傳過來的資料都是String ,那麼在JavaBean中的其他型別是如何接受表單的String的呢。在mvc有型別轉換器,將String 轉為 Integer 等其他型別的類,同時也包括了String轉為Date,但是當我們不按照固定的日期型別去書寫的時候呢。比如2020-11-10去寫,這個時候就需要自定義型別轉換器了。
第一步:自定義一個類並實現Conveter<S,T>泛型介面
StringToConveter.java
public class StringToConveter implements Converter<String, Date> {
@Override
public Date convert(String s) {
Date date=null;
if(s==null)
throw new RuntimeException("請輸入日期");
try {
DateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
date = dateFormat.parse(s);//將YYYY-MM-dd這個字串解析為Date
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
}
在配置檔案spring.mvc配置bean
@RequestParam
和從前臺過來的資料封裝有關。例如前臺傳一個屬性名為username的引數 ,那麼Controller層的方法必須提供一個帶引數名為username的引數,否則資料封裝不成功。
如果前臺的傳的資料和Controller方法的引數名稱不一致怎麼辦?
解決方法就是在引數的前面使用@RequestParam(value=" 前臺引數名稱") String name
<form action ="user/fail" method="post">
使用者名稱:<input type="text" name="name"><br>
密碼:<input type="password" name= "password">
<input type="submit" value="提交">
</form>
@Controller
@RequestMapping(path = {"/user"})
public class HelloController {
@RequestMapping(path = "/fail")
public String sayGood(@RequestParam(name ="name") String username, String password){
System.out.println("username"+username+"password"+password);
System.out.println("你很good");
return "fail";
}
}
@RequestBody
用於獲取請求體的內容,直接使用獲取得是key=value&key=value…結構得資料,但是他不適用於get請求,get請求沒有請求體
在方法引數中使用@RequestBody
System.out.println(body) 輸出得是前臺輸入得資料 例如 username=張&password=123456 key=value&key=value…
@PathVariable
SpringMVC支援restful風格:restful 程式設計風格
PathVariable 用於繫結URL中佔位符,例如請求URL中 delete/{id} ,這個{id}就是佔位符。url支援佔位符是springmvc支援restful風格的一個重要標誌
<a href="user/fail/10">good</a>
@RequestMapping(path = "/fail/{one}")
public String sayGood(@PathVariable(name = "one") String id){
System.out.println(id);
return "fail";
}
HiddentHttpMethodFilter
瀏覽器from表單只支援get和post請求,而delete 、put 等並不 支援,Spring 3.0新增了一個過濾器,可以將瀏覽器的 請求改為指定的請求方式,發給我們的控制器。使得瀏覽器支援get post delete put請求。
@RequestHeader 和@CookieValue
RequestHeader是獲取請求頭資訊的,CookieValue是獲取cookie的值的
(不常用)
@ModelAttribute
註解在方法上,有返回值
<form action ="user/fail" method="post">
使用者名稱:<input type="text" name="username"><br>
密碼:<input type="password" name= "password">
<input type="submit" value="提交">
</form>
註解在引數上,無返回值
註解在引數上實現的功能和註解在方法上實現的功能都是一樣的或者說兩種不同的寫法,但是最終目的都是一樣的
@SessionAttributes
@Sessionattributes註解應用到Controller上面,可以將Model中的屬性同步到session當中
如果不使用@SessionAttributes,預設情況下Spring MVC將模型中的資料儲存到request域中。當一個請求結束後,資料就失效了。如果要跨頁面使用。那麼需要使用到session。而@SessionAttributes註解就可以使得模型中的資料儲存一份到session域中。
-------------------------------------它有兩個屬性:
----------------------------------------------------value:用於指定存入的屬性名稱
----------------------------------------------------type:用於指定存入的資料型別
@SessionAttributes的使用
@Controller
@RequestMapping(path = {"/user"})
@SessionAttributes(value = "msg") //等於把msg=美美存入到session中
public class HelloController {
/*
* @RequestMapping:請求對映路徑,物件建立之後,怎麼呼叫這個方法,*/
@RequestMapping(path = "/hello",method = RequestMethod.POST)
public String sayHello(){
System.out.println("HelloWord");
return "success";//想要跳轉某個頁面就需要一個檢視解析器:xml配置檢視解析器
}
@RequestMapping(path = "/fail")
public String sayGood(Model model){
/*
* springmvc預設將模型中的資料儲存在request中*/
model.addAttribute("msg","美美");
return "fail";
}
}
下面是獲取和刪除session中的資料
相關文章
- SpringMvc的常用註解SpringMVC
- @TransientSink註解 的介紹
- SpringMVC常用註解@Controller,@Service,@repository,@ComponentSpringMVCController
- 註解的詳細介紹
- SpringMVC系列之SpringMVC快速入門 MVC設計模式介紹+什麼是SpringMVC+ SpringMVC的作用及其基本使用+元件解析+註解解析SpringMVC設計模式元件
- Java元註解介紹Java
- java註解的簡單介紹Java
- 安卓註解使用介紹安卓
- 【SpringMVC】@RequestMapping註解SpringMVCAPP
- 關於springmvc中常用的註解,自己也整理一下SpringMVC
- SpringMVC的@ResponseBody註解說明SpringMVC
- SpringMVC註解和非註解(xml)的方法的異同點SpringMVCXML
- SpringMVC 乾貨系列:從零搭建 SpringMVC+mybatis(二):springMVC 原理解析及常用註解 | 掘金技術徵文SpringMVCMyBatis
- Springmvc全註解開發SpringMVC
- SpringMVC 解析(三) Controller 註解SpringMVCController
- day01-SpringMVC基本介紹-01SpringMVC
- Java知識點總結(註解-介紹)Java
- Rust 註釋介紹Rust
- 常用鎖原理的介紹(上)
- etcd 常用操作介紹
- Flutter 常用 Widget 介紹Flutter
- JavaScript常用物件介紹JavaScript物件
- linux常用指令介紹Linux
- 常用註解
- SpringMVC:@ResponseBody註解與HttpServletResponse物件SpringMVCHTTPServlet物件
- Java常用的5大框架介紹!Java框架
- 簡單介紹如何通過註解獲取反射的值反射
- 【Java註解用法】@Autowired 與@Resource的區別以及@Qualifier的介紹Java
- oracle常用函式介紹Oracle函式
- logstash常用外掛介紹
- rematch常用外掛介紹REM
- Flutter 常用功能介紹Flutter
- DNS常用術語介紹DNS
- HTML常用標籤介紹HTML
- SpringCloud-常用元件介紹SpringGCCloud元件
- Springboot 常用註解Spring Boot
- Lombok常用註解Lombok
- Spring常用註解Spring