今天开始我们对Spring MVC框架的入门介绍,如果说是基础入门我们会先给大家介绍如下几个技术内容
- 理解Spring MVC工作流程
- 快速搭建Spring MVC
- 详细介绍@RequestMapping的用法
- Spring MVC如何发送JSON数据
- 如何整合Spring和Spring MVC
上面内容我个人认为是基础性入门介绍,所以我们会分几讲内容来进行
1. Spring MVC工作原理
- Spring MVC框架围绕DispatcherServlet这个核心控制器来开展工作
- DispatcherServlet它负责拦截请求并将其分配给相应的处理器
- 整个Spring MVC的工作流程如下
- 客户端发送HTTP请求,Web服务器接收请求并查找配置在web.xml中的DispatcherServlet
- DispatcherServlet接收请求后,将根据请求的信息以及HandlerMapping的配置找到处理请求的处理器
- DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过HandlerAdapter对Handler进行封装
- 处理器完成业务逻辑处理后返回一个ModelAndView给DispatcherServlet,ModelAndView包含视图逻辑名和模型数据信息
- DispatcherServlet借由ViewResolver完成逻辑视图名到真实视图对象的解析工作
- 得到真实的视图View对象,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染
2. 快速搭建SpringMVC开发环境
- 导入SpringMVC相关的jar包
- 在web.xml文件中配置SpringMVC的核心控制器,DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>springmvc</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>spmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:com/gxa/spmvc/config/springmvc-web.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
注意上述代码有几个关键点:
(1)DispatcherServlet虽然是SpringMVC框架中核心控制器,但是它在web.xml还是需要<servlet.../>来进行配置
(2)DispatcherServlet需要在web容器启动的时候加载基于SpringMVC的配置文件,所以这里还需添加<init-param>来指出SpringMVC配置文件的路径
- 创建一个SpringMVC的配置文件,此配置文件主要添加SpringMVC框架所持有的功能。如:视图解析,拦截器,模型驱动等相关功能。单从这一节内容我们只配置一个解析JSP的视图解析器InternalResourceViewResolver
<?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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.gxa.spmvc.controller"></context:component-scan> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/" p:suffix=".jsp"></bean> </beans>
- 最后创建控制器来测试SpringMVC框架是否可以运行
package com.gxa.spmvc.controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.gxa.spmvc.entity.Student; /** * SpringMVC的控制器(业务控制器) * 定义的方法就是一个请求处理的方法 * @author caleb * */ @Controller public class TestController { /** * @RequestMapping主要是定义用户的url请求 * @RequestMapping("/m01"), http://localhost:8080/springmvc/m01.do * 返回指就是一个逻辑视图名, 它遵循springmvc-web.xml视图解析器去寻找物理视图名(m01.jsp) * @return */ @RequestMapping("/m01") public String m01() { return "m01"; } }