Spring3 MVC 註解(一)---註解基本配置及@controller和 @Reques...

 
一:配置web.xml

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

      2)解決:在web.xml中spring

       <init-param>服務器

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

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

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

      </init-param>    post

    3)可使用  逗號分隔spa

二:controllercomponent

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

       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


6、 問題:有多個 @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

相關文章
相關標籤/搜索