簡(jiǎn)要思路:
在web.xml中配置好SpringMVC入口,讓SpringMVC中的DispatcherServlet攔截所有請(qǐng)求。
接著在index.jsp頁(yè)面中點(diǎn)開(kāi)超鏈接,發(fā)起一個(gè)welcome請(qǐng)求(程序員開(kāi)發(fā))。
DispatcherServlet攔截到這個(gè)welcome請(qǐng)求,通過(guò)匹配@RequestMapping發(fā)給相應(yīng)的處理器SpringMVCHandler(程序員開(kāi)發(fā))。SpringMVCHandler返回結(jié)果給DispatcherServlet。
DispatcherServlet讓視圖處理器(在spring.xml配置)處理后跳轉(zhuǎn)到success.jsp頁(yè)面。
【目錄】
一、前期準(zhǔn)備
二、配置SpringMVC
一、前期準(zhǔn)備
1.新建Web工程:HelloSpringMVC。

2.準(zhǔn)備好index.jsp和success.jsp。
在WebContent文件夾下面新建index.jsp,代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
項(xiàng)目中可以同時(shí)兼容 SpringMVC和Servlet
如果SpringMVC攔截welcome請(qǐng)求,SpringMVC就會(huì)找包含welcome的@RequestMapping映射進(jìn)行處理
如果沒(méi)被SpringMVC攔截,就會(huì)交給普通Servlet處理,普通Servlet就會(huì)交給url-parttern或者/@WebServlet處理
-->
<a href="welcome">hello SpringMVC</a>
</body>
</html>
在WebContent文件夾下面新建文件夾views。在文件夾views內(nèi)success.jsp,代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
success!
</body>
</html>
二、配置SpringMVC
1.導(dǎo)入常用jar包。

2.在src目錄下面新建配置文件springmvc.xml。
導(dǎo)入常用約束(參看Eclipse安裝STS插件使用更便捷的導(dǎo)入方式。)。

3.配置SpringMVC的入口,讓SpringMVC介入程序。
使用普通的Servlet運(yùn)行流程是這樣的:請(qǐng)求-<url-pattern>-交給對(duì)應(yīng)的Servlet去處理。而現(xiàn)在想用SpringMVC代替普通的Servlet,就需要在web.xml中配置一個(gè)SpringMVC自帶的Servlet(前端控制器DispatcherServlet),以通知程序。
通過(guò)以下配置,攔截所有請(qǐng)求,交給SpringMVC處理:
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定springmvc配置文件的路徑。
如果要省略,必須放到 默認(rèn)路徑:/WEB-INF/xx-servlet.xml(xx是Servlet的名字)
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- tomcat啟動(dòng)項(xiàng)目時(shí)第一位加載 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 指定哪些請(qǐng)求要進(jìn)入這個(gè)servlet -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<!-- /:攔截一切請(qǐng)求,注意不是 /*
/user:攔截以
/user開(kāi)頭的請(qǐng)求
/user/abc.do :只攔截該請(qǐng)求
.action:只攔截 .action結(jié)尾的請(qǐng)求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
如果安裝了STS插件可以按“alt+/”快速生成DispatcherServlet的相關(guān)配置。
另外,在配置攔截器的時(shí)候,需要對(duì)<url-pattern>標(biāo)簽加深理解。例如:
<url-pattern>/</url-pattern>
攔截的時(shí)候會(huì)匹配到/login這樣的路徑型的url,不會(huì)匹配到模式為*.jsp這樣的后綴型url
推薦博文:springmvc dispatcherServlet url-pattern的設(shè)置
springmvc.xml 中 設(shè)置/和/*區(qū)別
4.在src文件夾下面新建com.test.handler包,包內(nèi)新建SpringMVCHandler.java。

SpringMVCHandler.java代碼如下:
package com.test.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//這里采用注解方式配置
@Controller
//@RequestMapping(value="handler")在類(lèi)上面可以添加映射,這樣攔截的地址就是handler/welcome
public class SpringMVCHandler {
//通過(guò)@RequestMapping來(lái)指定控制器可以處理哪些請(qǐng)求
@RequestMapping("welcome") //映射名welcome
public String welcome() {
return "success" ;// 會(huì)通過(guò)springmvc配置文件視圖解析器加入前綴后綴 - views/success.jsp
}
}
關(guān)于@RequestMapping更多的用法可以看這里超詳細(xì) Spring @RequestMapping 注解使用技巧。
5.在springmvc.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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
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-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
<!-- 掃描 有注解的包 -->
<context:component-scan base-package="com.test.handler"></context:component-scan>
<!--配置視圖解析器(InternalResourceViewResolver) -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
PS:常見(jiàn)的視圖和解析器有:InternalResourceView、InternalResourceViewResolver。springMVC解析JSP時(shí)會(huì)默認(rèn)使用InternalResourceView, 如果發(fā)現(xiàn)JSP中包含了JSTL語(yǔ)言相關(guān)的內(nèi)容,則自動(dòng)轉(zhuǎn)為JSTL View(JSTL可以實(shí)現(xiàn)國(guó)際化操作,有興趣的同學(xué)看JSTL 對(duì)國(guó)際化支持總結(jié))。
進(jìn)行測(cè)試。


至此,完成第一個(gè)SpringMVC測(cè)試項(xiàng)目。