springmvc基础学习3---注解简单理解
1:@Controller
用來注解這個bean是MVC模型中的一個C 會被spring的auto-scan掃到納入管理。Spring mvc框架中的action層注入,也就是控制層。控制器Controller?負責處理由DispatcherServlet?分發(fā)的請求,它把用戶請求的數(shù)據(jù)經(jīng)過業(yè)務處理層處理之后封裝成一個Model?,然后再把該Model?返回給對應的View?進行展示。
2:@Resource
@resource注解就是把一個bean注入到當前的類中,可以不必通過配置文件或者導包的方式注入就可以使用該bean,默認是ByName的方式注入
例如可以省去創(chuàng)建get和set方法,(就直接使用備注解的屬性)
?
----------------------------------------------------------借鑒別人的博客-------------------------------------------------------
Spring不但支持自己定義的@Autowired注解,還支持幾個由JSR-250規(guī)范定義的注解,它們分別是@Resource、@PostConstruct以及@PreDestroy。
@Resource的作用相當于@Autowired,只不過@Autowired按byType自動注入,而@Resource默認按 byName自動注入罷了。@Resource有兩個屬性是比較重要的,分是name和type,Spring將@Resource注解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。所以如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動注入策略。
@Resource裝配順序
1. 如果同時指定了name和type,則從Spring上下文中找到唯一匹配的bean進行裝配,找不到則拋出異常
2. 如果指定了name,則從上下文中查找名稱(id)匹配的bean進行裝配,找不到則拋出異常
3. 如果指定了type,則從上下文中找到類型匹配的唯一bean進行裝配,找不到或者找到多個,都會拋出異常
4. 如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配;如果沒有匹配,則回退為一個原始類型進行匹配,如果匹配則自動裝配;
3:@RequestMapping
它一般標注在方法上,當HttpServletRequest請求參數(shù)滿足@RequestMapping的限定,即可觸發(fā)被注解的方法。例如:@RequestMapping("login")當請求 HttpServletRequest有l(wèi)ogin即可觸發(fā)被注解的方法。
4:@Service
@Service是java Spring框架的注解,表示這是一個bean。它和@Component差不多,只不過@Component通常用于標注一個Model,而@Service通常用于標注一個業(yè)務處理類
@Service("demoService")表示這個bean的名字是“demoService”
就是不用再spring里配置bean,就是因為這個@Service
----------------------------------------------------------------------------------------------------------------------------------------
Spring2.5為我們引入了組件自動掃描機制,他在類路徑下尋找標注了上述注解的類,并把這些類納入進spring容器中管理。@Service用于標注業(yè)務層組件
@Controller用于標注控制層組件(如struts中的action)
@Repository用于標注數(shù)據(jù)訪問組件,即DAO組件
@Component泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注。
?5.@RequestParam
在SpringMVC后臺控制層獲取參數(shù)的方式主要有兩種,一種是request.getParameter("name"),另外一種是用注解@RequestParam直接獲取。
后端代碼:@RequestMapping("testRequestParam") public String filesUpload(@RequestParam String inputStr, HttpServletRequest request) { System.out.println(inputStr); int inputInt = Integer.valueOf(request.getParameter("inputInt")); System.out.println(inputInt); // ......省略 return "index"; } 前臺代碼:
<form action="/gadget/testRequestParam" method="post"> 參數(shù)inputStr:<input type="text" name="inputStr"> 參數(shù)intputInt:<input type="text" name="inputInt"> </form>
可以看到spring會自動根據(jù)參數(shù)名字封裝進入,我們可以直接拿這個參數(shù)名來用
------------------------------------------------------------------------------------------6:@PathVariable @PathVariable是用來對指定請求的URL路徑里面的變量(地址欄json用)
eg: Java代碼 @RequestMapping(value = "form/{id}/apply", method = {RequestMethod.PUT, RequestMethod.POST})
{id}在這個請求的URL里就是個變量,可以使用@PathVariable來獲取
7:@responsebody @responsebody表示該方法的返回結果直接寫入HTTP responsebody中
一般在異步獲取數(shù)據(jù)時使用,在使用@RequestMapping后,返回值通常解析為跳轉路徑,加上@responsebody后返回結果不會被解析為跳轉路徑,而是直接寫入HTTP response body中。比如異步獲取json數(shù)據(jù),加上@responsebody后,會直接返回json數(shù)據(jù)。
?*GET模式下,這里使用了@PathVariable綁定輸入?yún)?shù),非常適合Restful風格。因為隱藏了參數(shù)與路徑的關系,可以提升網(wǎng)站的安全性,靜態(tài)化頁面,降低惡意攻擊風險。
POST模式下,使用@RequestBody綁定請求對象,Spring會幫你進行協(xié)議轉換,將Json、Xml協(xié)議轉換成你需要的對象。
@ResponseBody可以標注任何對象,由Srping完成對象——協(xié)議的轉換
?
?
?
?
轉載于:https://www.cnblogs.com/kaiwen/p/6522189.html
總結
以上是生活随笔為你收集整理的springmvc基础学习3---注解简单理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 25、UIView的setNeedsLa
- 下一篇: springmvc学习(一)