今天开始我们对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
springmvc
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
spmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:com/gxa/spmvc/config/springmvc-web.xml
1
spmvc
*.do
注意上述代码有几个关键点:
(1)DispatcherServlet虽然是SpringMVC框架中核心控制器,但是它在web.xml还是需要来进行配置
(2)DispatcherServlet需要在web容器启动的时候加载基于SpringMVC的配置文件,所以这里还需添加来指出SpringMVC配置文件的路径
创建一个SpringMVC的配置文件,此配置文件主要添加SpringMVC框架所持有的功能。如:视图解析,拦截器,模型驱动等相关功能。单从这一节内容我们只配置一个解析JSP的视图解析器InternalResourceViewResolver
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
最后创建控制器来测试SpringMVC框架是否可以运行
packagecom.gxa.spmvc.controller;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importcom.gxa.spmvc.entity.Student;/*** SpringMVC的控制器(业务控制器)
* 定义的方法就是一个请求处理的方法
*@authorcaleb
**/@Controllerpublic classTestController {/*** @RequestMapping主要是定义用户的url请求
* @RequestMapping("/m01"),http://localhost:8080/springmvc/m01.do
* 返回指就是一个逻辑视图名, 它遵循springmvc-web.xml视图解析器去寻找物理视图名(m01.jsp)
*@return
*/@RequestMapping("/m01")publicString m01() {return "m01";
}
}