Spring3 MVC 註解---註解基本配置及@controller和 @RequestMapping 常用解釋

一:配置web.xml

     1)問題:spring項目中有多個配置文件mvc.xml   dao.xml

     2)解決:在web.xml中

      <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>/WEB-INF/xxx/*.xml</param-value>    

             xxx表示xml文件路徑    *.xml表示後綴名爲xml的任意文件

     </init-param>    

     3)可以使用逗號分隔

二:controller

     1:spring mvc 中將  controller  認爲是 MVC中的C --控制層

     2:規範命名 類名  xxxController

     3:如果不基於註解:該類需要繼承 CommandController 或者其他很多參見spring幫助

        如果基於註解:在類名前加上@Controller

     4:補充:將類名前加上該註解,當spring啓動或者web服務啓動,Spring會自動掃描所有包(當然,這個可以設置)

       作用: 就是告訴服務器這個類是MVC中的C  這個類可以接收用戶請求 處理用戶請求

三:問題:如何接收用戶請求

    1:假設用戶請求URL 是: http://localhost:8080/項目名/xxx.do      do不do都一樣  不管這個do  你用什麼都可以

    2:這個時候,spring開始在所有的 C  中,找對應的處理請求的方法

    3:在任意的可以C的類中,在你想要處理此請求的方法定義的前面

        @RequestMapping("/xxx")     這個時候的xxx  就是用戶請求的xxx     不管do

        public  String  方法名()

        {

           return  “aaa”;                          

           返回一個字符串,非常有用   要注意   用來決定要顯示的MVC的 V  視圖層 是哪個

         }

四:上面配置好了 MVC的 C 也就是控制層,在方法中返回字符串,用來決定MVC的V  視圖層

      問題:如何讓spring 去掃描類  建立關聯

      1:在配置文件中  (spring)的 假設是 mvc.xml  中

      2:加入 <context:component-scan  base-package="包路徑"/>  


五:問題 如何返回到視圖層 V

    1: 解決:此時,需要在配置文件中,加入視圖解析器,有很多種

    2:這裏用基於jsp/jstl  視圖

    3:在web.xml 中加入bean 配置

   <bean class="org.s...f....web.servlet.view.InternalResourceViewResolver">

          <property  name="prefix" value="/WEB-INF/views"/>         前綴

          <property  name="suffix"   value=".jsp"/>                 後綴

   </bean>



小結:通過上述5步  ,基本完成 C   V 的配置

    1:spring 中的C  一般起類名:XXXController 在這個類裏面需要加入@Controller  標誌這個類可以作爲請求處理類,也就是控制類

    2:這個控制類裏面可以有很多方法,哪個方法用來處理用戶請求,就在那個方法前面加 @RequestMapping(“/xxxxx請求路徑”)

    3;當請求處理完畢後  返回值  決定了  該處理完畢後  用戶將跳轉到那個頁面   這個很重要  

    4:例如 @RequestMapping("/xxx")     這個時候的xxx 就是用戶請求的xxx     不管do

        public  String  方法名()

        {

           return  “aaa”;                        

           返回一個字符串,非常有用   要注意   用來決定要顯示的MVC的 V  視圖層 是哪個

        }

      返回 aaa 根據配置文件中的 視圖處理器配置加入前綴、後綴

      頁面將跳轉到 /WEB-INF/views/aaa.jsp


六、 問題:有多個@RequestMapping

 @controller

 @RequestMapping("/aaa")           ----------------->類級別  可以不需要  如果要了  下面所有的請求路徑 前 都需要加入  /aaa

 public class ccccontroller{

 @RequestMapping("/bbb") --------------------->方法級別 必須有   決定這個方法處理哪個請求   如果有類級別 /aaa/bbb

      public String xxx()                                               {                                                                                                                如果沒有 /bbb  

           retrun

     }

}

七、問題:接收用戶請求參數值

   1) 請求1: /test/start.do?name=zhangsan

       請求2: /test/start/zhangsan.do

       在請求2中 將參數作爲請求URL 傳遞           感覺用的不習慣

       採用 URL模板

   2)@RequestMapping("/start/{name}")    這個name  隨便  啥都可以

        public String start(@PathVariable("name") string name){       反正和上面的對應

            return      方法體裏面就可以直接獲得參數

       }

   3)包含多個 @RequestMapping ("/start/{name}/{age}")


八 、問題:不同請求方法,用不同處理方法   get  post

  @RequestMapping (value="/start" ,method=RequestMethod.GET)    處理post   就換成  POST


本文出處:http://ttaale.iteye.com/blog/761864



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章