SpringMVC相關常用註解
@Controller:
@Controller 用於標記在一個類上,使用它標記的類就是一個SpringMVC Controller 對象
@RequestMapping:
RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。
列子:@RequestMapping(value = "/testRestPut/{id}", method = RequestMethod.PUT)
RequestMapping註解有六個屬性:
1、 value
value:指定請求的實際地址;
2、method;
method: 指定請求的method類型, GET、POST、PUT、DELETE等
Rest 風格的 URL(以 CRUD 為例): * 新增:/order POST * 修改:/order/1 PUT * 獲取:/order/1 GET * 刪除:/order/1 DELETE
3、consumes
consumes: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/html;
4、produces
produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;
5、params
params: 指定request中必須包含某些參數值是,才讓該方法處理。
6、headers
headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。
<!-- xml配置視圖解析器:如何把 handler 方法返回值解析為實際的物理視圖 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> </bean>
@RequestMapping("/helloword/?/aa") 的 Ant 路徑,匹配符:
?:匹配文件名的一個字符
*:匹配文件名的所有字符
**:匹配多層路徑
@Resource和@Autowired
列子:
// 下面兩種@Autowired只要使用一種即可 @Autowired private UserDao userDao; // 用於字段上 @Autowired public void setUserDao(UserDao userDao) { // 用於屬性的方法上 this.userDao = userDao; }
// 下面兩種@Resource只要使用一種即可 @Resource(name="userDao") private UserDao userDao; // 用於字段上 @Resource(name="userDao") public void setUserDao(UserDao userDao) { // 用於屬性的setter方法上 this.userDao = userDao; }
1、共同點
兩者都可以寫在字段和setter方法上。兩者如果都寫在字段上,那麽就不需要再寫setter方法。
2、不同點
(1)@Autowired
@Autowired為Spring提供的註解,需要導入包org.springframework.beans.factory.annotation.Autowired;只按照byType註入。
(2)@Resource
@Resource默認按照ByName自動註入,由J2EE提供,需要導入包javax.annotation.Resource。@Resource有兩個重要的屬性:name和type,而Spring將@Resource註解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。
@PathVariable:
用於將請求URL中的模板變量映射到功能處理方法的參數上,即取出uri模板中的變量作為參數。
列子:
@RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET) public String getLogin(@PathVariable("userId") String userId
@CookieValue:
列子:
@RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET) public String getLogin(@PathVariable("userId") String userId
作用:用來獲取Cookie中的值;
參數: value:參數名稱 required:是否必須 defaultValue:默認值
@RequestParam:
列子:
@RequestMapping("/testRequestParam") public String testRequestParam(@RequestParam("id") int id)
@RequestParam用於將請求參數區數據映射到功能處理方法的參數上
@SessionAttributes:
列子:
@SessionAttributes(value = {"user"}, types = {String.class})
@SessionAttributes即將值放到session作用域中,寫在class上面。
@SessionAttributes 除了可以通過屬性名指定需要放到會話中的屬性外(value 屬性值)
@SessionAttributes 除了可以通過屬性名指定需要放到會話中的屬性外(value 屬性值), 還可以通過模型屬性的對象類型指定哪些模型屬性需要放到會話中(types 屬性值)。 註意: 該註解只能放在類的上面,不能放在方法上面
@ModelAttribute:
該Controller的所有方法在調用前,先執行此@ModelAttribute方法,可用於註解和方法參數中,可以把這個@ModelAttribute特性,應用在BaseController當中,所有的Controller繼承BaseController,即可實現在調用Controller時,先執行@ModelAttribute方法。
@ResponseBody
作用: 該註解用於將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式後,寫入到Response對象的body數據區。
使用時機:返回的數據不是html標簽的頁面,而是其他某種格式的數據時(如json、xml等)使用
SpringMVC相關常用註解