使用AOP攔截Controller獲取@PathVariable注解傳入的參數(shù)
AOP攔截Controller獲取@PathVariable注解傳入?yún)?shù)
前言:
最近項目中需要對controller傳入的應(yīng)用標識(appMarkId)進行校驗,appMarkId@PathVariable傳入到url模版中的,這里用到了aop統(tǒng)一攔截處理,但是在攔截的過程中發(fā)現(xiàn)request獲取不到該參數(shù),隨后進行了研究。
示例代碼:

處理:
Map map = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
可以用這個方法獲取到所有uri模版中傳入的參數(shù)。

擴展: aop中獲取request和response
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); HttpServletRequest request = servletRequestAttributes.getRequest(); HttpServletResponse response = servletRequestAttributes.getResponse();
動態(tài)參數(shù)使用@PathVariable解析
現(xiàn)在有如下的一條超鏈接
<a href="<c:url value=" rel="external nofollow" /actions/article/readArticle/${article.id}"/> "
target="_blank">${article.title}</a>
這條超鏈接的特點就是在URL路徑中添加了EL表達式解析出來的id值。
因此,在SpringMVC的Controller層中,需要解析它,使用@PathVariable("articleId") Long articleId 來解析。
@PathVariable是專門用來解析URL請求中的動態(tài)參數(shù)。
在Controller層的代碼如下
public static final String URL_ARTICLE_READ = "article/readArticle/{articleId}";
/**
* 去文章詳情頁面
* 根據(jù)URL路徑中指定的文章ID號,去獲取制定文章的內(nèi)容
*
* @param articleId 指定的文章的ID號
* @return 獲取此文章的數(shù)據(jù),并去文章詳情頁面
*/
@RequestMapping(value = {URL_ARTICLE_READ} )
public ModelAndView readArticle(@PathVariable("articleId") Long articleId){
LOGGER.info("enter article detail page, articleId = {}",articleId);
final Article article = articleService.getArticleById(articleId);
...
}
這樣,頁面上的${article.id}的值,就最終映射到了Java中的Long articleId 上了。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot 數(shù)據(jù)校驗@Valid+統(tǒng)一異常處理的實現(xiàn)
這篇文章主要介紹了Spring Boot 數(shù)據(jù)校驗@Valid+統(tǒng)一異常處理的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04
Java直接內(nèi)存和堆內(nèi)存的關(guān)系
在Java編程中,內(nèi)存管理是一個重要的話題,本文介紹了Java中兩種主要內(nèi)存類型:堆內(nèi)存和直接內(nèi)存,堆內(nèi)存是JVM管理的主要內(nèi)存區(qū)域,感興趣的朋友跟隨小編一起看看吧2024-09-09
基于idea解決springweb項目的Java文件無法執(zhí)行問題
這篇文章給大家介紹了基于idea解決springweb項目的Java文件無法執(zhí)行問題,文中通過圖文結(jié)合的方式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-02-02
解決springboot整合cxf-jaxrs中json轉(zhuǎn)換的問題
這篇文章主要介紹了解決springboot整合cxf-jaxrs中json轉(zhuǎn)換的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07

