SpringMVC 是一種基于 Java 的實(shí)現(xiàn) MVC 設(shè)計(jì)模型的請求驅(qū)動(dòng)類型的輕量級 Web 框架,屬于 SpringFrameWork 的后續(xù)產(chǎn)品,已經(jīng)融合在 Spring Web Flow 中。 SpringMVC 已經(jīng)成為目前最主流的MVC框架之一,并且隨著Spring3.0 的發(fā)布,全面超越 Struts2,成為最優(yōu)秀的 MVC 框架。它通過一套注解,讓一個(gè)簡單的 Java 類成為處理請求的控制器,而無須實(shí)現(xiàn)任何接口。同時(shí) 它還支持 RESTful 編程風(fēng)格的請求。
?
需求:客戶端發(fā)起請求,服務(wù)器端接收請求,執(zhí)行邏輯并進(jìn)行視圖跳轉(zhuǎn)。
開發(fā)步驟:
① 導(dǎo)入SpringMVC相關(guān)坐標(biāo)
② 配置SpringMVC核心控制器DispathcerServlet
③ 創(chuàng)建Controller類和視圖頁面
④ 使用注解配置Controller類中業(yè)務(wù)方法的映射地址
⑤ 配置SpringMVC核心文件 spring-mvc.xml
⑥ 客戶端發(fā)起請求測試
?
我們開始實(shí)操一下:
① 導(dǎo)入Spring和SpringMVC的坐標(biāo)
<!--Spring坐標(biāo)-->
????????<dependency>
????????????????<groupId>org.springframework</groupId>
????????????????<artifactId>spring-context</artifactId>
????????????????<version>5.0.5.RELEASE</version>
????????</dependency>
????????<!--SpringMVC坐標(biāo)-->
????????<dependency>
????????????????<groupId>org.springframework</groupId>
????????????????<artifactId>spring-webmvc</artifactId>
????????????????<version>5.0.5.RELEASE</version>
????????</dependency>
?
別忘記導(dǎo)入Servlet和Jsp的坐標(biāo)
<!--Servlet坐標(biāo)-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
</dependency>
<!--Jsp坐標(biāo)-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
?
② 在web.xml配置SpringMVC的核心控制器
我們要用SpringMVC的前端控制器 那么我們是不是需要設(shè)置它Servlet 所以現(xiàn)在設(shè)置一下 前端控制器【分發(fā)器】的Servlet:
注意了 下面代碼寫死的東西就是寫死的 說什么都沒用
<!DOCTYPE?web-app?PUBLIC
?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"
?"http://java.sun.com/dtd/web-app_2_3.dtd"?>
<web-app>
??<display-name>Archetype?Created?Web?Application</display-name>
<!--?這里配置一個(gè)Servlet?-->
??<servlet>
<!--??名字你隨便?就是和以前配置的一樣即可??-->
????<servlet-name>DispatcherServlet</servlet-name>
<!--??這個(gè)寫死的?是SpringMVC的前端控制器(分發(fā)器)??-->
????<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--??配置初始化參數(shù)??-->
????<init-param>
<!--???初始化參數(shù)名?【寫死的】???-->
??????<param-name>contextConfigLocation</param-name>
<!--??初始化參數(shù)值??SpringMvc的配置文件(容器)?-->
??????<param-value>classpath:spring-mvc.xml</param-value>
????</init-param>
<!--?優(yōu)先級?、?這個(gè)隨便加不加?一般都是加上?1?最先.?-->
????<load-on-startup>1</load-on-startup>
??</servlet>
<!--?就是說?全部網(wǎng)址請求過來?都要經(jīng)過這個(gè)前端控制器(分發(fā)器)?-->
??<servlet-mapping>
????<servlet-name>DispatcherServlet</servlet-name>
????<url-pattern>/</url-pattern>
??</servlet-mapping>
</web-app>
?
③ 創(chuàng)建Controller和業(yè)務(wù)方法?
創(chuàng)建個(gè) 控制器包 包下隨便寫個(gè)控制器類,其實(shí)這個(gè)控制器 就相當(dāng)于是一個(gè) Servlet ,但是這個(gè)控制器(分發(fā)器) 要一些注解:
package?com.bihu.Controller;
import?org.springframework.stereotype.Controller;
import?org.springframework.web.bind.annotation.RequestMapping;
@Controller
public?class?TestController?{
????@RequestMapping("/go")
????public?String?GoUrl(){
????????System.out.println("執(zhí)行了Controller的GoUrl方法?證明你訪問了?xxx/go");
????????//返回字符串?會自動(dòng)跳轉(zhuǎn)到?s1.jsp?頁面!
????????return?"s1.jsp";
????}
}
?
然后你得寫個(gè)s1.jsp 可以給他跳轉(zhuǎn):
s1.jsp:
??
<%@?page?contentType="text/html;charset=UTF-8"?language="java"?%>
<html>
<head>
????<title>ok!</title>
</head>
<body>
????<h2>恭喜你!?體驗(yàn)了SpringMVC?最基本簡單的?一個(gè)?流程!?</h2>
</body>
</html>
?
然后你得配置一下SpringMVC容器,設(shè)置一下他掃描注解的范圍:【記得配置Context頭部哪里】
<?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:context="http://www.springframework.org/schema/context"
???????xsi:schemaLocation="http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context?http://www.springframework.org/schema/context/spring-context.xsd">
????<!--??配置注解掃描器?注意這個(gè)是SpringMVC的配置文件??配置文件要分開?規(guī)范點(diǎn)!??-->
????<context:component-scan?base-package="com.bihu"/>
</beans>
?
所以呢 重點(diǎn)還是 SpringMVC 容器的配置 和 web.xml 的配置,該寫死的就得寫死哦?
?
因?yàn)閳?bào)錯(cuò)過幾次 所以知道了 他的原理就是 一個(gè) 監(jiān)聽器 然后 默認(rèn)的方式是Get請求
?
?
作者:??咸瑜??