目錄
一、@Controller、@RequestMapping
1.1 示例程序
1.2 測試結(jié)果
二、@RequestParam
2.1 示例程序
2.2 測試結(jié)果
三、@RequestHeader、@CookieValue
3.1 示例程序
3.2 測試結(jié)果
四、@SessionAttributes
4.1 示例程序
4.2 測試結(jié)果
五、@ModelAttribute
5.1 示例程序
5.2 測試結(jié)果
往期專欄&文章相關(guān)導(dǎo)讀?
1. Maven系列專欄文章
2. Mybatis系列專欄文章
3. Spring系列專欄文章
4. Spring MVC系列專欄文章?
一、@Controller、@RequestMapping
@Controller:作用:標(biāo)記控制器,將控制器交給Spring容器管理。
????????????????????????位置:類上方
@RequestMapping:作用:給控制器方法設(shè)置請求路徑
位置:方法或類上方。用于類上,表示類中的所有控制器方法都是以該地址作為父路徑。
屬性:
- value/path:請求路徑
- method:指定請求方式
- params:規(guī)定必須發(fā)送的請求參數(shù)
- headers:規(guī)定請求必須包含的請求頭
1.1 示例程序
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/c3")
public class MyController3 {
/**
* 訪問路徑為 /c3/annotation1
* 支持post和get請求
* 請求時必須帶有age參數(shù)
* 請求時必須帶有User-agent請求頭
* @param username
* @return
*/
@RequestMapping(path = "/annotation1",method = {RequestMethod.GET,RequestMethod.POST},params = {"age"},headers = {"User-agent"})
public String annotation1(String username){
System.out.println("annotation1\t"+username);
return "lyl-HQX";
}
}
這里規(guī)定了請求參數(shù)必須帶有age,但是下方方法參數(shù)列表沒有age,那我們測試一下有age和無age。
1.2 測試結(jié)果
如果請求路徑為:http://localhost:8080/c3/annotation1?age=10
測試結(jié)果為:
但是如果請求路徑是:?http://localhost:8080/c3/annotation1?username=10
?可以看到就報錯,因此確實需要帶age參數(shù)
因此請求路徑應(yīng)該寫成這樣:http://localhost:8080/c3/annotation1?username=10&age=10
可以看到確實打印出了用戶名10。?
二、@RequestParam
作用:在控制器方法中獲取請求參數(shù)
位置:方法參數(shù)前
屬性:
- name:指定請求參數(shù)名稱
- defaultValue: 為參數(shù)設(shè)置默認(rèn)值
- required:設(shè)置是否是必須要傳入的參數(shù)
2.1 示例程序
// 在控制器方法中獲取請求參數(shù)
@RequestMapping("/annotation2")
public String annotation2(@RequestParam(name = "name",defaultValue = "HQX",required = false) String name){
System.out.println("annotation2\t"+name);
return "lyl-HQX";
}
這個注解是修飾請求參數(shù)的相關(guān)屬性,那我們有沒有這個name屬性應(yīng)該都是可以的。
2.2 測試結(jié)果
當(dāng)請求路徑為:http://localhost:8080/c3/annotation2
?請求路徑?jīng)]有該參數(shù)了,該參數(shù)的默認(rèn)值就是HQX,正常輸出
當(dāng)請求路徑為:http://localhost:8080/c3/annotation2?name=LYL
?OK,當(dāng)請求路徑有該參數(shù)時,就按照請求路徑的參數(shù)值來輸出,可以看得到確實是測試成功了。?
三、@RequestHeader、@CookieValue
@RequestHeader
- 作用:在控制器方法中獲取請求頭數(shù)據(jù)
- 位置:方法參數(shù)前
@CookieValue
- 作用:在控制器方法中獲取Cookie數(shù)據(jù)
- 位置:方法參數(shù)前
3.1 示例程序
/**
* @RequestHeader
* 作用:在控制器方法中獲取請求頭數(shù)據(jù)
* 位置:方法參數(shù)前
* @CookieValue
* 作用:在控制器方法中獲取Cookie數(shù)據(jù)
* 位置:方法參數(shù)前
*/
// 獲取User-Agent請求頭和JSESSIONID的Cookie值
@RequestMapping("/annotation3")
public String annotation3(@RequestHeader("User-Agent")String userAgent, @CookieValue("JSESSIONID") String jSessionId){
System.out.print("annotation3\t");
System.out.println("userAgent: "+userAgent);
System.out.print("jSessionId: " + jSessionId);
return "lyl-HQX";
}
3.2 測試結(jié)果
請求路徑:http://localhost:8080/c3/annotation3
?可以看得到確實打印了請求頭的相關(guān)數(shù)據(jù):比如說windows系統(tǒng),多少位,瀏覽器的版本等。sessionID也獲取出來了。
四、@SessionAttributes
作用:將Model模型中的數(shù)據(jù)存到session域中
位置:類上方
4.1 示例程序
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/c4")
// 將Model模型中name的數(shù)據(jù)存到session域中
@SessionAttributes("name")
public class MyController4 {
@RequestMapping("/t1")
public String t1(Model model){
// model1中保存name數(shù)據(jù)
model.addAttribute("name","LYL");
return "lyl-HQX";
}
@RequestMapping("/t2")
public String t2(HttpSession session){
// 從session中獲取name數(shù)據(jù)
System.out.println(session.getAttribute("name"));
return "lyl-HQX";
}
}
4.2 測試結(jié)果
OK,從上面程序我們可以知道,要先訪問/t1,再訪問/t2,才可以獲取name的值。直接訪問/t2是無法打印出name的屬性值的。接下來我們測試一下:
當(dāng)我們先訪問/t2:??????:http://localhost:8080/c4/t2
OK,可以看到確實是打印出null,
并且瀏覽器也沒有對應(yīng)的值。
接下來訪問/t1,http://localhost:8080/c4/t1
添加值之后
再訪問/t2,可以看得到控制臺確實打印出來了。?
?
五、@ModelAttribute
作用1:設(shè)置指定方法在控制器其他方法前執(zhí)行
位置:方法上方作用2:從Model模型中獲取數(shù)據(jù)給參數(shù)賦值
位置:方法參數(shù)前
5.1 示例程序
作用一示例程序:
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/c5")
public class MyController5 {
// @ModelAttribute作用1:設(shè)置指定方法在控制器其他方法前執(zhí)行
@ModelAttribute
public void before(){
System.out.println("前置方法");
}
@RequestMapping("/t1")
public String t1(){
System.out.println("t1");
return "lyl-HQX";
}
}
?作用二示例程序:
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/c5")
public class MyController5 {
// @ModelAttribute作用1:設(shè)置指定方法在控制器其他方法前執(zhí)行
@ModelAttribute
public void before(Model model){
System.out.println("前置方法");
model.addAttribute("name","LYL");
}
@RequestMapping("/t1")
public String t1(@ModelAttribute("name") String name){
System.out.println(name);
return "lyl-HQX";
}
}
5.2 測試結(jié)果
作用一測試結(jié)果:http://localhost:8080/c5/t1
OK,可以看得到前置方法確實生效了。?
?作用二測試結(jié)果:http://localhost:8080/c5/t1
?OK,可以看到確實兩個作用都成功執(zhí)行了。
往期專欄&文章相關(guān)導(dǎo)讀?
?????大家如果對于本期內(nèi)容有什么不了解的話也可以去看看往期的內(nèi)容,下面列出了博主往期精心制作的Maven,Mybatis等專欄系列文章,走過路過不要錯過哎!如果對您有所幫助的話就點點贊,收藏一下啪。其中Spring專欄有些正在更,所以無法查看,但是當(dāng)博主全部更完之后就可以看啦。文章來源:http://www.zghlxwxcb.cn/news/detail-512841.html
1. Maven系列專欄文章
Maven系列專欄 | Maven工程開發(fā) |
Maven聚合開發(fā)【實例詳解---5555字】 |
2. Mybatis系列專欄文章
Mybatis系列專欄 | MyBatis入門配置 |
Mybatis入門案例【超詳細】 | |
MyBatis配置文件 —— 相關(guān)標(biāo)簽詳解 | |
Mybatis模糊查詢——三種定義參數(shù)方法和聚合查詢、主鍵回填 | |
Mybatis動態(tài)SQL查詢 --(附實戰(zhàn)案例--8888個字--88質(zhì)量分) | |
Mybatis分頁查詢——四種傳參方式 | |
Mybatis一級緩存和二級緩存(帶測試方法) | |
Mybatis分解式查詢 | |
Mybatis關(guān)聯(lián)查詢【附實戰(zhàn)案例】 | |
MyBatis注解開發(fā)---實現(xiàn)增刪查改和動態(tài)SQL | |
MyBatis注解開發(fā)---實現(xiàn)自定義映射關(guān)系和關(guān)聯(lián)查詢 |
3. Spring系列專欄文章
Spring系列專欄 | Spring IOC 入門簡介【自定義容器實例】 |
IOC使用Spring實現(xiàn)附實例詳解 | |
Spring IOC之對象的創(chuàng)建方式、策略及銷毀時機和生命周期且獲取方式 | |
Spring DI簡介及依賴注入方式和依賴注入類型 | |
Spring IOC相關(guān)注解運用——上篇 | |
Spring IOC相關(guān)注解運用——下篇 | |
Spring AOP簡介及相關(guān)案例 | |
注解、原生Spring、SchemaBased三種方式實現(xiàn)AOP【附詳細案例】 | |
Spring事務(wù)簡介及相關(guān)案例 | |
Spring 事務(wù)管理方案和事務(wù)管理器及事務(wù)控制的API | |
Spring 事務(wù)的相關(guān)配置、傳播行為、隔離級別及注解配置聲明式事務(wù) |
4. Spring MVC系列專欄文章?
SpringMVC系列專欄 | Spring MVC簡介附入門案例 |
Spring MVC各種參數(shù)獲取及獲取方式自定義類型轉(zhuǎn)換器和編碼過濾器 | |
Spring MVC獲取參數(shù)和自定義參數(shù)類型轉(zhuǎn)換器及編碼過濾器 | |
Spring MVC處理響應(yīng)附案例詳解 | |
Spring MVC相關(guān)注解運用 —— 上篇 | |
Spring MVC相關(guān)注解運用 —— 中篇文章來源地址http://www.zghlxwxcb.cn/news/detail-512841.html | |
Spring MVC相關(guān)注解運用 —— 下篇 | |
Spring MVC多種情況下的文件上傳 | |
Spring MVC異步上傳、跨服務(wù)器上傳和文件下載 | |
Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】 | |
Spring MVC攔截器和跨域請求 | |
SSM整合案例【C站講解最詳細流程的案例】 |
到了這里,關(guān)于Spring MVC相關(guān)注解運用 —— 上篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!