SpringMVC一路總結(一)

      SpringMVC聽聞已久,早在去年就被學長問到關於SpringMVC的基礎知識,當時也沒在乎。主要是工做中也沒有用到關於SpringMVC的技術,所以免於沒有時間和精力的藉口就沒有接觸和學習SpringMVC。java

      一心覺得SpringMVC和Spring的做用至關,也是MVC框架的一部分,此時我說的MVC中的一部分並非替換Struts的Control那部分,而是和Spring同樣的工廠管理類同等等。現在才發現技術不過關就會鬧笑話,真心感受技術這種東西,越學就越感受須要學習的東西不少。靜下心來,用一顆誠實的心面對未知,敢於挑戰,好好學習。web

      關於MVC框架的結構以及說明不是本文的重點。我相信既然看到SpringMVC了,確定對MVC框架有了必定的認識。所以,此時,再也不贅述關於MVC框架的基礎知識。本人僅總結本身學習SpringMVC過程當中的點點滴滴,用以激勵本身的奮鬥,銘記本身的成長,爲新手朋友提供一個快速入門的案例。本博文爲本人學習的總結,請尊重勞動成果。歡迎轉載,請保留博文出處:http://www.cnblogs.com/itred ;本人郵箱: it_red@sina.com 。spring

                                     必定要明白的理論                                

     Spring 的 Web MVC 框架是圍繞 DispatcherServlet 設計的,它把請求分派給處理程序,同時帶有可配置的處理程序映射、視圖解析、本地語言、主題解析以及上載文件支持。默認的處理程序是基於Controller 接口和RequestMapping,提供普遍靈活的處理方法。Spring 提供了一個控制器層次結構,能夠派生子類。瀏覽器

     其實關於SpringMVC的好處,我以爲也沒什麼必要在這裏過多的賣弄,這樣說吧。SpringMVC能夠實現Struts中的控制功能,SpringMVC就是利用效率高的servlet,雖然沒有了struts中的過濾器了,可是它也能夠實現本身的過濾功能;並且,在如今三大框架更多地應用到企業級應用中,愈來愈多的企業直接選擇SpringMVC做爲控制器,由於它再也不須要額外的加入其它jar包,若是用struts的話,須要加入另一些包,而SpringMVC能夠和Spring共用jar包,也不知道這樣說對不對,可是方便理解。spring-mvc

    下圖是直接取自Spring JAR包中的API文檔,即:官方資料對於SpringMVC的闡述,本人認爲沒有哪一個版本能夠比這個更加好了。mvc

 

   本人並不是是在寫廢話,把官方理論搬過來就行,只是爲了入門作一些簡單的功課。這樣,在理解後面的代碼時才更加輕鬆。app

                                   案例走起                                          

一.Demo1框架

  1. 新建一個web工程,下載Spring的完整包,解壓縮而且將libs目錄下的jar包拷貝到lib目錄下,進行build path; 由於這裏只是須要jar包,能夠不用拷貝doc和source包。具體操做也能夠參看Spring包下的docs中的文檔,本人測試用的版本是3.2;jdk版本是1.6
  2. 由於SpringMVC是圍繞DispatcherServlet來的,因此須要將這個加入到web.xml中;首先對項目中的web.xml進行添加,源碼以下:
 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
       <servlet-name>SpringMVC</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
       <servlet-name>SpringMVC</servlet-name>
       <url-pattern>/</url-pattern>
    </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

   注意:這裏的servlet-name中的值必需要引發高度重視,由於這裏的值須要和SpringMVC的另外一個配置文件匹配。好比說,這裏的servlet-name是SpringMVC,新建的一個配置文件的格式就必須是: ServletName-servlet.xml  ,即這裏的名稱爲:SpringMVC-servlet.xml 。jsp

  3. 由於採用的是默認模式,因此該文件必須放在WEB-INF目錄下,即新建一個xml文件,注意名稱須要和上文提到的同樣,源碼以下:學習

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    <context:component-scan base-package="org.springframework.samples.petclinic.web" />
    <bean name="/he" class="com.red.controller.HelloController"></bean>     <!--name="/he"這個就是在瀏覽器中的訪問路徑-->
    <bean id="viewResolver"
   class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/"></property>     <!--這個是目錄約定-->
       <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

 

到這裏,SpringMVC的配置文件就算配置全了,可是若是要測試這樣的環境是否合適咱們的開發環境,就還須要進行編碼設置控制器。

  4. 做爲第一個入門程序,顯然理解清楚過程遠比實現複雜邏輯更有用。在這裏的控制器編寫中,咱們只須要實現一個接口方法就行。這個接口就是Controller;實現的方法是handleRequest;這裏又會接觸到一個新的東西----ModelAndView。這個就是返回的一個視圖,也是能夠傳遞參數的,在Demo2中會具體實現。這裏只是實現跳轉到一個hello.jsp的頁面。

在這裏的配置中,你不會看到.jsp跟在頁面後面,由於在配置文件中已經將其獨立出來,頁面之後綴爲.jsp的,所以,這裏的視圖不會僅僅侷限於jsp。

控制器源碼以下:

 

package com.red.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class HelloController implements Controller {

         public ModelAndView handleRequest(HttpServletRequest request,
                            HttpServletResponse response) throws Exception {
                   System.out.println("This is the first example about SpringMVC.");
                   return new ModelAndView("/hello");   //實際上就是跳轉到hello.jsp頁面
         }
} 

  這裏,案例一就已經實現了。運行程序,才瀏覽器中輸入:http://localhost:8080/20150505_SpringMVC01/he

控制檯輸出:

   

瀏覽器中的顯示:

   

二.Demo2

  案例二在案例一的基礎上進行了進一步的修改,將配置文件獨立出來,由於在實際的項目開發過程當中,都不會將一些特殊的配置文件進行默認處理,那樣看起來很無序,維護起來也存在必定的困難。

  1. 在src目錄下,新建包com/red/config
  2. 將SpringMVC-servlet.xml複製到該目錄下
  3. 在web.xml中的servlet中加入以下代碼:
    <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath*:com/red/config/SpringMVC-servlet.xml</param-value>
    </init-param>

這樣配置以後就能夠任意指定config文件了。根據本身的實際項目要求作。

  4. 在完成配置文件移位後,接下來須要作的就是往頁面上傳遞參數,即從控制器中拿到參數往頁面上傳。查看源碼就會知道ModelAndView的構造方法有不少,這裏貼出一些。

     

參數能夠根據須要進行選擇,這裏用的有第7個。參數ViewName表示jsp頁面,modelname表示參數名稱,頁面上取,modelObject就是傳遞的值。

源碼以下:

package com.red.controller;

import java.util.HashMap;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class HelloController implements Controller {

         public ModelAndView handleRequest(HttpServletRequest request,
                            HttpServletResponse response) throws Exception {
                   System.out.println("This is the second example about SpringMVC.");
                   String firstParam = "第一個字符串參數";
                   Map<String, Object> map = new HashMap<String, Object>();
                   map.put("prm1", "map中的第一個");
                   map.put("prm2", "map中的第二個");
                   map.put("prm3", "map中的第三個");
                   // return new ModelAndView("/hello", "prm", firstParam);//字符串用
                   return new ModelAndView("/hello", "prm", map);
         }
 }

 

實現效果以下:

   

                                  總結                                            

      到這裏,第一部分的SpringMVC入門就已經完成了。就像struts入門同樣簡單,對於技術這種東西,我始終堅信,入門並不難,可貴是可以靜下心來去分析,去思考這樣作的緣由,這樣作的好處,爲何會選擇這個技術來實現。所以,思考遠比copy and copy 更加劇要!

     本文所涉及到的源碼等供菜鳥朋友學習:

        Demo1      Demo2       Spring完整JAR包(訪問密碼 d498)

 

           感謝奮鬥中的本身!

 

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