其實之前剛剛學習框架的時候就已經聽說過SpringMVC了,那個時候還不知道SpringMVC是幹嘛的,感覺作用應該類似於Spring啥的,然後工作當中也很少用到SpringMVC,當然,工作經驗本身就蠻少,也就沒怎麼去了解SpringMVC了,這幾天突然想了解一下SpringMVC,然後就是各種度娘了,貌似學習所有的框架技術基本上都是先從一個簡單的demo示例開始,例如hello world,像之前瞭解過的SSH框架,SSI框架、jFinal框架等等,,至少我是這樣的,先把一個簡單的Demo框架搭建起來,讓她能夠正常運行起來,然後再想着去加點東西啥的。。好了,不廢話了。
Spring MVC請求處理的整體流程如圖:
這裏的示例用的
spring的jar包版本是3.2.0,
jdk版本是1.6
工程結構圖:
1、在elcipse中新建一個Dynamic Web Project工程項目,之後把需要的jar包拷貝到項目的/WEB-INF目錄下的lib目錄中,然後進行build path,至於需要哪些jar包,之前用過spring的應該知道使用spring的時候需要導入哪些jar包,而springMVC和Spring的jar包是共用的,直接將spring所需要的jar包導入即可,不需要再導入額外的jar包文件,可以直接從官網下載,然後那些doc和source的jar包可要可不要,建議不要。。
所需的jar包截圖:
其中紅線框起來的部分是搭建這個springmvc的主要jar包,其餘三個是輔助的,用作其他用的。。這個簡單示例中可以不需要。
2、因爲SpringMVC是圍繞DispatcherServlet來的,所以這裏需要修改一下web.xml文件的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
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">
<display-name>springmvc_demo_02</display-name>
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 可以自定義servlet.xml配置文件的位置和名稱,默認爲WEB-INF目錄下,名稱爲-->
<!--[<servlet-name>]-servlet.xml,如SpringMVC-servlet.xml -->
<!-- <init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/SpringMVC-servlet.xml</param-value>
</init-param> -->
<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]-servlet.xml進行命名,主要用於springMVC的一些相關配置啥的,例如註解映射支持、視圖解析,攔截器等等。。。
3、因爲這裏採用的是默認模式,然後就需要把SpringMVC-servlet.xml配置文件放在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="/hello" class="com.feizi.controller.HelloController"></bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
5、好了,到了這裏,關於SpringMVC的相關配置基本上都已經配置完了,當然,因爲這個僅僅只是一個入門實例,前面有提到過,先把基本的框架搭建起來,讓她能夠正常運行起來,後續再做調整。。。
接下來,我們需要編寫一個controller控制器,這裏暫時還沒有用到註解的方式,後面會介紹到使用註解的方法。然後只需要實現一個接口就行,例如編寫一個HelloController類實現Controller接口;再實現這個接口中的handleRequest方法;然後返回一個ModelAndView。這個ModelAndView就是返回的一個視圖,也可以傳遞參數,例如最後返回一個“/hello“,然後就會通過SpringMVC的視圖渲染到hello.jsp頁面。。
因爲在之前的SpringMVC-servlet.xml配置文件中已經做了相關配置了,設置的頁面後綴爲.jsp的,所以,會直接跳轉到hello.jsp頁面,當然,這裏還可以配置其他視圖類型。不僅僅是jsp。。。
6、控制器HelloController類
/**
* 文件說明
* @Description:擴展說明
* @Copyright: 2015 dreamtech.com.cn Inc. All right reserved
* @Version: V6.0
*/
package com.feizi.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
/**
* @Author: feizi
* @Date: 2015年5月6日 上午10:27:19
* @ModifyUser: feizi
* @ModifyDate: 2015年5月6日 上午10:27:19
* @Version:V6.0
*/
public class HelloController implements Controller {
/**
* 方法說明
* @Discription:擴展說明
* @Author: feizi
* @Date: 2015年5月6日 上午10:27:20
* @ModifyUser:feizi
* @ModifyDate: 2015年5月6日 上午10:27:20
* @see org.springframework.web.servlet.mvc.Controller#handleRequest(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
System.out.println("==========================Hello World!=========================");
//實際上就是跳轉到hello.jsp頁面
return new ModelAndView("/hello");
}
}
7、一個簡單的入門級SpringMVC示例已經完成了,我們運行一下,看看效果,看能不能正常運行。。。
8、關於上面說的那個SpringMVC的核心配置文件SpringMVC-servlet.xml,在這裏還需要再囉嗦一下,比如說,我們在web.xml文件中配置的servlet-name是SpringMVC,如果是採用默認的方式那麼SpringMVC的配置文件的命名就應該是: [servlet-name]-servlet.xml ,即:SpringMVC-servlet.xml 。且這個配置文件還必須得放在/WEB_INF目錄下面,不然工程找不到,除非我們手動進行指定配置、、、
例如:如果我們採用的是默認的方式,然後SpringMVC-servlet.xml文件的命名又不是以[servlet-name]-servlet這種方式進行命名,那運行的時候就會報錯,我這裏做個示範修改一下,假設我們在web.xml中將servlet-name指定爲SpringMVC,然後配置文件名是SpringMVC1-servlet.xml,那麼運行的時候就會報異常。
當然,我們也可以不使用默認的方式,但是需要我們手動進行配置指定。通過<init-param>
屬性進行指定即可。。通過指定之後,運行就又正常了
ok,到這裏就基本上完成了。。。之後會試着學習下使用註解的方式和將SpringMVC的配置文件放到其他的位置的配置方法。
參考文章:http://elf8848.iteye.com/blog/875830/
源碼已打包上傳至csdn:
http://download.csdn.net/detail/hu1991die/8668927