1 簡介
Spring MVC 屬于 SpringFrameWork 的后續(xù)產(chǎn)品,已經(jīng)融合在 Spring Web Flow 里面。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊桐经,而 Spring MVC 就是其中最優(yōu)秀的 MVC 框架速和。自從 Spring 2.5 版本發(fā)布后圆雁,由于支持注解配置地淀,易用性得到了大幅度的提高;Spring 3.0 更加完善臼寄,實現(xiàn)了對 Struts 2 的超越霸奕。從現(xiàn)階段來看,Spring MVC 是當前應(yīng)用最多的 MVC 框架吉拳,而且在很多公司质帅,通常會把 Spring MVC 和 Mybatis 整合起來使用。
2 框架原理
在Spring MVC框架中合武,從“Request(請求)”開始临梗,依次進入“DispatcherServlet(核心分發(fā)器)” —> “HandlerMapping(處理器映射)” —> “Controller(控制器)” —> “ModelAndView(模型和視圖)” —> “ViewResolver(視圖解析器)” —> “View(視圖)” —> “Response(響應(yīng))”結(jié)束,其中DispatcherServlet稼跳、HandlerMapping和ViewResolver 只需要在XML文件中配置即可盟庞,從而大大提高了開發(fā)的效率,特別是對于 HandlerMapping 框架為其提供了默認的配置汤善。Spring MVC 框架的結(jié)構(gòu)圖如下所示:
3 搭建 Spring MVC 框架
首先什猖,我們需要下載 Spring MVC 框架的各種依賴包,下載地址為:Spring MVC框架的各種依賴包红淡;然后不狮,創(chuàng)建 Java Web 項目,項目名隨意取在旱,在這里摇零,咱們就不妨取為“springmvc”,構(gòu)建項目結(jié)構(gòu)圖如下:
在“WEB-INF”目錄下桶蝎,建立“l(fā)ib”目錄驻仅,導(dǎo)入 Spring MVC 框架的相關(guān)依賴包,同時登渣,在“External Libraries”中也導(dǎo)入相同的 jar 包噪服,其中對于“l(fā)ib”目錄,我們直接把 jar 包復(fù)制過來就可以胜茧;但是對于“External Libraries”粘优,我們就得通過“Project Structure”進行導(dǎo)入啦,具體 jar 包的導(dǎo)入方法可以參考:詳述 IntelliJ IDEA 之 添加 jar 包。至于需要導(dǎo)入的 jar 包雹顺,在我們先前下載的“Spring MVC框架的各種依賴包”中都可以找到丹墨,下面附上需要導(dǎo)入的 jar 名稱:
spring-aop-3.2.2.jar AOP
spring-aspects-3.2.2.jar AOP
spring-beans-3.2.2.jar 核心包
spring-context-3.2.2.jar 擴展包
spring-context-support-3.2.2.jar 對擴展包支持
spring-core-3.2.2.jar 核心包
spring-expression-3.2.2.jar spring 表達式
spring-web-3.2.2.jar web b/s
spring-webmvc-3.2.2.jar springmvc
com.springsource.org.aopalliance-1.0.0.jar AOP
com.springsource.org.apache.commons.logging-1.1.1.jar 通用日志
接下來,依次建立控制器Controller(即Java類):
package spring.mvc.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
/** * Created by 維C果糖 on 2017/1/24. */
public class CeshiController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) throws Exception {
System.out.println(request.getRequestURI()); // 獲取Controller的名稱嬉愧,即地址
return new ModelAndView("index"); // 邏輯名
}
}
配置 web.xml 文件带到,主要是配置 DispatcherServlet,即核心分發(fā)器:
<?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">
<!-- 配置 DispatcherServlet英染,對所有后綴為action的url進行過濾 -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
編輯 JSP 頁面,用于顯示被饿,在這里需要將該 JSP 頁面復(fù)制到 pages 目錄一份四康,稍后會用到:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Spring MVC</title>
</head>
<body>
This is my Spring MVC of web!
</body>
</html>
建立 action-servlet.xml 文件,主要是聲明 Controller 和配置 ViewResolver狭握,即控制器和視圖解析器:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<!-- 聲明 Controller -->
<bean name="/home.action" class="spring.mvc.controller.CeshiController" />
<!-- 內(nèi)部資源視圖解析器闪金,前綴 + 邏輯名 + 后綴 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
操作完以上步驟后,咱們就已經(jīng)初步搭建了 Spring MVC 框架论颅,接下來哎垦,再配置一下 web 服務(wù)器就可以成功運行啦!在這里恃疯,作者用的 web 服務(wù)器是 tomcat漏设,配置完的結(jié)果如下所示:
其中,標號1今妄,為tomcat服務(wù)器的名稱郑口,可以隨意取名;標號2盾鳞,為web服務(wù)器默認啟動的瀏覽器犬性;標號3,為訪問路徑腾仅;標號4乒裆,為虛擬機參數(shù)配置,在此沒有進行配置推励,即采用了默認的配置鹤耍;標號5,為Java運行環(huán)境配置吹艇;標號6惰蜜,為端口號配置;標號7受神,為部署tomcat服務(wù)器抛猖,點擊進入后,配置如下:
至此,Spring MVC 框架搭建成功财著,運行程序后联四,將在 Chrome 瀏覽器顯示如下內(nèi)容:
溫馨提示:在此項目中,由于使用的是 IntelliJ IDEA 撑教,因此不用咱們自己建立lib包朝墩,直接將jar包導(dǎo)到External Libraries中即可。