上一篇博客簡單地介紹了下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這個類是一個控制器
@Controller
public 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