SpringMVC入門樣本教程(二),springmvc樣本
上一篇部落格簡單地介紹了下SpringMVC架構的搭建,然後也都是採用的預設的方式,即需要將SpringMVC的核心設定檔放在/WEB-INF/目錄下,由工程自動去載入,但是在我們實際的項目開發過程中,一般都不會這樣去處理,很少使用這樣的預設配置,而且這樣的預設看起來比較雜亂,所以通常情況下我們都會將設定檔獨立出來,單獨去管理。
一、手動指定SpringMVC的核心設定檔載入位置
解決方案:
1、在src目錄下建一個包,專門放置設定檔的
2、將原來WEB-INF目錄下的springMVC的設定檔移到這個配置包路徑下面。
3、在web.xml檔案中使用<init-param> 配置一下載入路徑。
<init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:com/feizi/config/springmvc-servlet.xml</param-value> </init-param>
整個web.xml檔案的配置如下:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>springmvc_demo_04</display-name> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:com/feizi/config/springmvc-servlet.xml</param-value> </init-param> </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>
工程結構:
然後後續操作和樣本教程(一)中的demo一樣。配置好之後,運行一下,在瀏覽器中看看效果。
二、使用SpringMVC的註解方式
1、在SpringMVC的核心設定檔[servlet-name]-servlet.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" xmlns:mvc="http://www.springframework.org/schema/mvc" 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"> <!-- 配置註解的支援 --> <mvc:annotation-driven></mvc:annotation-driven> <!-- 啟用自動掃描 --> <context:component-scan base-package="com.feizi.controller"></context:component-scan> <!-- 配置視圖解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- <property name="prefix" value="/"></property> --> <property name="prefix" value="/WEB-INF/jsp/"></property> <!-- 配置檢視類型為jsp類型 --> <property name="suffix" value=".jsp"></property> </bean></beans>
2、然後就可以在控制器類中使用註解方式了
/** * 檔案說明 * @Description:擴充說明 * @Copyright: 2015 dreamtech.com.cn Inc. All right reserved * @Version: V6.0 */package com.feizi.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;/** * @Author: feizi * @Date: 2015年5月7日 下午4:00:23 * @ModifyUser: feizi * @ModifyDate: 2015年5月7日 下午4:00:23 * @Version:V6.0 *///通過@Controller註解標識HelloController這個類是一個控制器@Controllerpublic class HelloController { @RequestMapping(value="/hello",method=RequestMethod.GET) public String sayHello(){ System.out.println("======================Hello World!!!================"); return "hello"; }}
然後這裡需要注意一下:可能我們在啟動tomcat的時候會報錯,如果是用的tomcat6.0的話,啟動的時候可能會報如下異常:
問題描述:spring3.2的架構在tomcat6.0中無法正常啟動,拋出java.lang.NoClassDefFoundError: javax/servlet/AsyncListener錯誤
異常原因:
1:org.springframework.web.servlet-3.2支援Servlet3.0的版本。
2:tomcat6.0隻支援Servlet2.5,而tomcat7.0支援Servlet3.0。
從而造成需求方和供應方對Servlet版本的不相容。
解決方案:
將tomcat6.0/lib檔案夾下的servlet-api.jar檔案替換為tomcat7.0的。
注意:一定要替換tomcat/lib下的jar,如果放到WEB-INF/lib中同樣會報錯。原因:tomcat6.0是提供servlet-api.jar的,且在啟動時載入jar檔案的順序是先從tomcat6.0/lib開始,然後再載入WEB-INF/lib。所以只放在WEB-INF/lib中,jar檔案是無效的。
我們將tomcat7.0安裝目錄的lib目錄中的servlet-api.jar包拷貝到tomcat6.0安裝目錄的lib目錄中進行替換。
之後,再啟動tomcat6.0就會正常啟動了
然後運行一下,在瀏覽器中看看效果:
ok,到這裡關於SpringMVC的初級入門就已經完成了,當然了,入門是很簡單,但是關於這個SpringMVC其中的緣由、和為什麼這樣去設計以及什麼情況下去選擇這種架構技術還是有待一番研究的。SpringMVC架構如此受歡迎肯定也是有一定的原因的,然而這個也不是說一天兩天的事情,冰凍三尺非一日之寒,騷年,繼續努力吧!!!
關於這兩篇部落格的所有demo樣本都已經打包上傳至csdn:
http://download.csdn.net/detail/hu1991die/8673299