第一步:基于浏览器发送请求给服务器之后,服务器启动访问的web.xml配置前端控制器(DispatcherServlet)

<!-- 配置Spring MVC 前端控制器 -->
<!-- 注册前端控制器 -->
<servlet>
	<servlet-name>frontController</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name><!-- 这个名字不能随意写 -->
		<param-value>classpath:spring-configs.xml</param-value>
	</init-param>
	<!--配置servlet在服务器启动时加载(数字越小优先级越高) 配置如下选项以后,tomcat启动时就会初始化这个servlet, 这个servlet在初始化时会读取contextConfigLocation
		参数对应的配置文件. -->
	<load-on-startup>1</load-on-startup>
</servlet>
<!-- 配置前端控制器映射 -->
<servlet-mapping>
	<servlet-name>frontController</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>

第二步:前端控制器根据请求的url在HandlerMapping中找对应的Controller

在此之前要添加pom.xml文件的jar包依赖
<dependencies>
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-context</artifactId>
      		<version>4.3.9.RELEASE</version>
      	</dependency>
      	<dependency>
      		<groupId>org.mybatis</groupId>
      		<artifactId>mybatis-spring</artifactId>
      		<version>1.3.1</version>
      	</dependency>
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-webmvc</artifactId>
      		<version>4.3.9.RELEASE</version>
      	</dependency>
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-core</artifactId>
      		<version>4.3.9.RELEASE</version>
      	</dependency>
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-jdbc</artifactId>
      		<version>4.3.9.RELEASE</version>
      	</dependency>
      	<dependency>
      		<groupId>org.mybatis</groupId>
      		<artifactId>mybatis</artifactId>
      		<version>3.2.8</version>
      	</dependency>
      	<dependency>
      		<groupId>mysql</groupId>
      		<artifactId>mysql-connector-java</artifactId>
      		<version>5.1.40</version>
      	</dependency>
      	<dependency>
      		<groupId>org.apache.tomcat</groupId>
      		<artifactId>annotations-api</artifactId>
      		<version>6.0.29</version>
      	</dependency>
      	<dependency>
      		<groupId>junit</groupId>
      		<artifactId>junit</artifactId>
      		<version>4.12</version>
      	</dependency>
      	<dependency>
      		<groupId>com.alibaba</groupId>
      		<artifactId>druid</artifactId>
      		<version>1.0.29</version>
      	</dependency>
      </dependencies>

第三步:在SpringMVC-config.xml中添加开启mvc注解

<mvc-annotation-driven/>

第四步:写Controller后端控制器

package com.jt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {

	@RequestMapping("testMVC")
	@ResponseBody
	public String testMVC(){
		return "pageMVC";
	}
}

在前端控制器直和后端控制器之间还有一个SpringMVC的核心构建是拦截器
写MVC的拦截器有两种方式
第一种:写一个类继承HandlerInterceptorAdapter,并重写其方法三个方法,这三个方法的执行顺序是不同的,pre方法在前端控制器执行之后后端控制器执行之前执行,post方法在后端控制器执行之后执行,after方法在前端控制器和视图解析器之间执行
pre方法中需要一个返回值是boolean类型,该返回值若是true就是放行,若是false就是拦截住,所以在这里还可以设置判断要拦截的条件

package com.jt.intercepter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.ibatis.type.IntegerTypeHandler;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class TimeIntercepter extends HandlerInterceptorAdapter{

	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		System.out.println("TimeIntercepter.preHandle()");
		return true;
	}
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		System.out.println("TimeIntercepter.postHandle()");
	}
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		System.out.println("TimeIntercepter.afterCompletion()");
	}
}

第二种:写一个类实现HandlerInterceptor接口,并实现其方法

然后在SpringMVC-configs.xml配置该拦截器
这里可以设置的属性还有许多,例如不拦截的url,就不一一测试

<!-- 配置拦截器对象 -->
<mvc:interceptors>
	<mvc:interceptor>
		<!-- 要拦截的路径 -->
		<mvc:mapping path="/**" />
		<!-- 拦截器对象 -->
		<bean class="com.jt.intercepter.TimeIntercepter" />
	</mvc:interceptor>
</mvc:interceptors>

第四步:配置视图解析器
当前端处理器找到请求的url对应的后端控制器,则得到其返回值,根据返回值从视图解析器里去加上前缀和后缀在我们的web应用中找到对应的web资源、

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<property name="Prefix" vlaue="/WEB-INF/pages/"></property>
			<property name="Suffix" value=".jsp"></property>
		</bean>

第五步:加上包扫描,将指定的controller交给spring管理

<context:component-scan base-package="com.jt" />

第六步:在项目上右键选中属性为项目添加targetRuntimes运行时环境,再将项目发布到服务器中,最后测试一下url
测试url:http://localhost/jt-programer/testMVC.do
测试结果:
SSM三大框架环境搭建之SpringMVC-LMLPHP

10-07 15:51