## RequestMapping
用于建立請求URL和處理請求方法之間的對應關系.以下
~~~
@Controller
@RequestMapping(path = "/user")
public class HelloController
{
@RequestMapping(path = "/hello", params = {"username"}, method = {RequestMethod.POST}, headers = {"Accept"})
public String hello()
{
System.out.println("hello springMVC");
return "success";
}
}
~~~
解釋:
訪問路徑:/user/hello
params:必須包含username參數.
method:請求方式為post.
headers:必須包含Accept請求頭.
## @RequestParam
作用:吧請求中置地你那個名稱的參數給控制器中的形參賦值.
屬性:value:請求參數中的名稱.required:請求參數中是否必須提供此參數,默認true,不提供將報錯.
~~~
@RequestMapping(path = "/annotation")
public String testRequestParam(@RequestParam(name = "name", required = true) String username) //將表單中name為"name"的賦值給username,并且必須傳遞
{
System.out.println(username);
return "success";
}
~~~
## @RequestBody
作用:用于獲取請求體內容,直接使用得到的是key&vakue結構的數據.
屬性:required:是必須有請求體,默認是true.當取值為true時,get請求方式會報錯.如果取值是false,get請求得到的是null.
~~~
@RequestMapping(path = "/annotation")
public String testRequestParam(@RequestBody String body)
{
System.out.println(body);
return "success";
}
~~~
結果:
```
name=jack&age=20
```
## @PathVariable
作用:用于綁定URL中的占位符.URL占位符是spring3.0之后加入的.是spring支持rest風格URL的一個重要標志.
屬性:value:用于指定URL中占位符名稱.required:是否必須提供占位符.
```
/annotation/10
```
~~~
@RequestMapping(path = "/annotation/{uid}")
public String testRequestParam(@PathVariable(name = "uid") Integer id) //PathVariable的值和占位符的值一致
{
System.out.println(id);
return "success";
}
~~~
## @RequestHeade
作用:用于獲取請求消息頭.
屬性:value:提供消息頭名稱.required:是否必須有此消息頭.
~~~
@RequestMapping(path = "/annotation")
public String testRequestParam(@RequestHeader(value = "Accept") String accept)
{
System.out.println(accept);
return "success";
}
~~~
## @CookieValue
作用:用于獲取cookie的值.
屬性:value:.. required:是否必須有此值.

~~~
@RequestMapping(path = "/annotation")
public String testRequestParam(@CookieValue(value = "name") String name)
{
System.out.println(name);
return "success";
}
~~~
## @ModelAttribute
作用:該注解是springMVC4.3版本以后加入的.它可以用于修飾方法和參數.
出現在方法上,表示當前方法會在控制器執行之前,先執行.它可以修飾沒有返回值的方法,也可以修飾有具體翻番至的方法.
出現在參數上,獲取指定的數據給參數賦值.
屬性:value:用于獲取數據的key.key可以是POJO的屬性名稱,也可以是map結構的key.
### 作用于方法
~~~
@RequestMapping(path = "/annotation")
public String testRequestParam(User user) //這里獲取到了經過@ModelAttribute方法的user
{
System.out.println(user);
return "success";
}
/**
* 該方法會先執行
*/
@ModelAttribute
public User test(String username)
{
User user = new User();
user.setUsername(username);
user.setAge(20);
user.setDate(new Date());
return user;
}
~~~
### 作用于參數
~~~
@RequestMapping(path = "/annotation")
public String testRequestParam(@ModelAttribute("abc") User user) //這里通過"abc"這個key獲取到參數
{
System.out.println(user);
return "success";
}
/**
* 該方法會先執行
*/
@ModelAttribute
public void test(String username, Map<String, User> map)
{
User user = new User();
user.setUsername(username);
user.setAge(20);
user.setDate(new Date());
map.put("abc", user);
}
~~~
## SessionAttributes
作用:用于多次執行控制器方法間的參數共享.
屬性:value:用于指定存入的屬性名稱.type:用于指定存入的數據類型.
~~~
@Controller
@SessionAttributes(value = {"msg"}) //把msg存入到session域中
public class HelloController
{
@RequestMapping(path = "/annotation")
public String testRequestParam(Model model)
{
//將鍵值對存入到model中,底層幫我們存入到request域中了
model.addAttribute("msg", "hello world");
return "success";
}
@RequestMapping(path = "/get")
public String get(ModelMap modelMap)
{
System.out.println(modelMap.get("msg"));
return null;
}
@RequestMapping(path = "/delete")
public String delete(SessionStatus status)
{
status.setComplete(); //刪除session
return null;
}
}
~~~
jsp:
~~~
${requestScope.msg}
${sessionScope.msg}
~~~
- Maven
- 概述
- 常用命令
- 生命周期
- scope詳解
- maven概念模型圖
- IDEA創建maven工程
- 創建maven web項目
- 沖突解決
- pom文件標簽詳解
- maven工程拆分與聚合的思想
- 父子工程的創建
- 工程和模塊的關系以及集成和依賴的概念
- 父子工程添加依賴
- 父子工程的三種啟動方式
- Struts2
- 執行流程
- 配置
- action的使用
- 獲取Servlet的API
- result標簽的視圖配置
- struts2屬性封裝
- struts2模型封裝
- OGNL
- 值棧(ValueStack)
- 值棧context區存數據
- 值棧root區
- struts2對el的增強
- #,%,$符號使用
- 值棧擴展
- 攔截器
- 自定義攔截器
- 方法攔截器
- 注解方式
- Hibernate
- 配置
- 簡單crud
- 持久化類編寫規范
- OID
- 持久化類三種狀態
- 一級緩存
- 查詢
- session與當前線程綁定
- hibernate一對多配置
- 冗余SQL語句的原因
- hibernate多對多配置
- 級聯操作
- 對象導航查詢
- JPA
- JPA單表CRUD
- JPA多種查詢
- JPA一對多關系映射
- JPA一對多操作
- JPA多對多關系映射
- JPA多對多操作
- QBC查詢
- 離線條件查詢(DetachedCriteria)
- SpringMVC
- 環境搭建
- 常用注解
- 請求參數綁定
- 綁定基本類型和字符串
- 綁定實體類型
- 解決中文亂碼
- 綁定集合類型
- 自定義類型轉換器
- 獲取Servlet的API
- 響應字符串
- 響應void
- 響應ModelAndView
- 響應forward和redirect
- 響應過濾靜態資源
- 響應json
- 文件上傳基礎
- SpringMVC上傳文件
- 跨服務器文件上傳
- 攔截器
- SpringMVC異常
- ControllerAdvice
- SpringMVC默認處理方式
- 概述
- @ExceptionHandler
- 消息轉換器
- SpringMVC跨域
- Spring
- 概述
- IoC快速入門
- ApplicationContext三個常用實現類
- beanFactory和ApplicationContext區別
- bean創建三種方式
- POJO和Javabean的區別
- bean作用范圍
- bean對象生命周期
- spring的依賴注入
- DI的屬性注入方式
- 常用注解
- Spring新注解
- Spring整合連接池
- Spring的IOC注解配置
- Spring完全使用注解
- Spring整合junit
- AOP
- AOP配置
- JDBCTemplate
- JDBCTemplate在IOC中使用
- JDBCTemplate的CRUD
- JDBCTemplate在dao中使用
- 聲明式事務
- spring事務API
- 事務XML配置
- 事務注解配置
- 全注解事務
- Spring編程式事務
- 整合SSH(XML版本)
- 整合SSH(半XML半注解)
- Spring5新特性
- MyBatis
- 概述
- 用maven創建MyBatis
- 將數據庫配置單獨文件
- typeAliases標簽
- MyBatis的CRUD
- MyBatis實現Dao層開發
- 使用dao和代理類的區別
- MyBatis連接池
- MyBatis事務
- MyBatis動態SQL
- 多表操作
- 多表一對一
- 多表一對多
- 多表多對多
- JNDI
- 延遲加載和立即加載
- 延遲加載
- 一級緩存
- 二級緩存
- MyBatis注解
- MyBatis注解CRUD
- 注解實體類屬性和字段對應關系
- MyBatis注解一對一和一對多
- MyBatis注解二級緩存
- SSM整合
- 搭建環境
- SpringBoot
- SpringBoot核心功能
- 快速入門
- SpringBoot配置文件
- yml配置文件語法
- 配置文件與配置類的屬性映射方式
- 端口和映射路徑
- 日志級別
- 訪問靜態資源
- SpringBoot注入方式一
- SpringBoot注入方式二
- 攔截器
- HikariCP連接池
- SpringBoot集成MyBatis
- 通用mapper
- SpringBoot事務
- SpringBoot集成Junit
- SpringBoot集成DataJPA
- SpringBoot集成Redis
- 使用SpringBoot提供的測試啟動類
- 使用MockMvc
- SpringCloud
- RestTemplate
- Eureka概述
- Eureka快速入門
- Eureka集群
- Eureka客戶端
- Eureka失效剔除和自我保護
- 負載均衡Ribbon
- Hystrix
- Hystrix服務降級
- Hystrix服務熔斷
- Feign
- Feign的熔斷機制
- Feign的請求壓縮和日志級別
- Zuul網關
- Zuul快速入門
- Zuul路由規則
- Zuul過濾器
- Zuul自定義過濾器
- Zuul負載均衡和熔斷
- Zuul高可用
- Zuul網關緩存
- SpringSecurity
- 快速入門
- SpringSecurity使用數據庫認證