SpringMVC一路總結(三)

      在博文《SpringMVC一路總結(一)》和《SpringMVC一路總結(二)》中,該框架的應用案例都是是基於xml的形式實現的。然而,對於大型項目而言,這種xml的配置會增長項目模塊之間的耦合性,增長配置文件的配置難度,所以,從效率上來說,這是一種並不被看好的方式。html

      儘管這種xml形式的配置在項目中用的比較少,可是,這種形式的配置能夠很清楚的瞭解到SpringMVC 入門的一些基礎知識,學起來能夠感受到很輕鬆。只有在瞭解了這種基於xml的實現SpringMVC 以後,咱們再來看註解實現就會顯得更加輕鬆。正是由於配置很麻煩,增長程序中模塊間的耦合度,因此,今天的主要任務就是利用註解的形式實現一個很簡單的SpringMVC,這樣一來,入門註解樣例,瞭解SpringMVC的基礎註解形式,待實現案例以後,就會很明顯感受到SpringMVC相比較XML形式而言,更加方便,更加貼合實際應用。web

      對於SpringMVC中的註解關鍵字不是本文的重點,咱們在用的過程當中會總結一些,不斷的應用,不斷的總結。若是想要一次性的瞭解SpringMVC中的註解關鍵字,能夠查看相關API。本博文爲本人學習的總結,請尊重勞動成果。歡迎轉載,請保留博文出處:http://www.cnblogs.com/itred ;本人郵箱: it_red@sina.com 。spring

                                                  案    例                                                     

      新建一個web工程,加入相關JAR包;瀏覽器

     在web.xml中進行相關配置,本例的SpingMVC-servlet.xml配置文件放在了src目錄下,所以須要在web.xml中進行相關的配置。配置以下:mvc

<servlet>
       <servlet-name>SpringMVC</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath*:SpringMVC-servlet.xml</param-value>
       </init-param>
 </servlet>
 <servlet-mapping>
       <servlet-name>SpringMVC</servlet-name>
       <url-pattern>/</url-pattern>
 </servlet-mapping>

 

 

      而後就像最開始學習xml配置SpringMVC同樣,新建SpringMVC-servlet.xml;由於從如今開始就要學會用註解的形式來應用SpringMVC,因此牢記幾個類。在spring的包中,有一個webmvc的JAR包,其下有一個註解方式處理適配器類org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter和一個默認的的註解處理映射類org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping。 這兩個類是必需要知道的,由於這兩個類的加載,或者說在SpringMVC-servlet.xml文件中的兩個bean,就是因爲他們,纔會開啓Spring的註解,一個是根據包找類,一個是根據類去找方法。雖說,在啓用註解時能夠經過一行代碼<mvc:annotation-driven/>替代,可是我仍是建議須要知道這兩個基本類。app

      還有一個須要注意的地方就是控制器所屬的包,由於這裏再也不是一個一個的去用xml進行配置,因此須要進行掃描控制器,在SpingMVC-servlet.xml中的掃描語句是:<context:component-scan base-package="com.red.controller" /> 。到這裏,配置基本完成,對!你沒看錯,之前利用xml進行配置時所須要的配置比如今這個可多了不少。即便後面新建控制器時,也不須要再進行配置了。框架

說到控制器,固然不可少!在制定包下新建一個控制器,由於這個包必須在使用註解能夠掃描的包目錄下才能夠。學習

源碼以下:url

package com.red.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class AnnoController {
    @RequestMapping(value = "/user/adduser", method = RequestMethod.GET)
    public ModelAndView addUser() {
       System.out.println("add user");
       String result = "addUser";
       return new ModelAndView("/index", "result", result);
    }

     @RequestMapping(value = "/user/deluser", method = RequestMethod.GET)
    public ModelAndView delUser() {
       System.out.println("del user");
       String result = "del user";
       return new ModelAndView("/index", "result", result);
    }
}

 

     下面對上面控制器中所用到的註解進行總結:spa

    @Controller 標識在類名之上,說明該類就是一個控制器;其實之後在用的過程當中,只要是控制器就加上,並且當程序中的內容比較多時,也不會出錯;

    @RequestMapping(value = "/user/adduser", method = RequestMethod.GET)  方法的映射,value中的值就是瀏覽器能夠訪問的URL,而對於method是指的是請求方法,一旦在這裏指定了該方法的請求方式,那麼其它的就不可用,所以,它是嚴格的區分POST和GET方法;固然在某種狀況下,須要同時知足POST和GET方法,這裏就直接省略method的設置,直接忽略掉這部分;同時也能夠將value = "/user/adduser"這部分的值直接修改成:"/user/adduser"。只在括號中寫入訪問的路徑就行,一樣能夠實現同樣的功能。

在這裏,會看到,每一個方法都得去寫一遍@RequestMapping(),可是每一個裏面都有相同的一部分,所以能夠將相同部分的路徑抽取出來,這樣一來能夠很清楚的看到這個模塊到底是什麼,在類名的前面@Controller後加上@RequestMapping(「模塊名稱」),所以,對於團隊開發而言,能夠很清楚的對每一個部分進行分配。

  實現效果以下:(這裏是用的GET方式,POST方式請自測)

  方法一:

  

  方法二:

  

  控制檯輸出:

  

 

                                                  總    結                                               

     對於技術的學習,仍是得就其自己。不能知道簡單的應用就好了,這樣始終都不會理解人這樣設計的原因。光浮誇於其表面,不能沉下心來,靜靜體會其高明之處,就必然不能真正學會這門技術。

     案例下載連接

 

 

        感謝奮鬥中的本身!

 

 郵箱:it_red@sina.com
  我的博客: http://itred.cnblogs.com
  
相關文章
相關標籤/搜索