SpringMVC入门
- 前言
- 一、MVC模式和SpringMVC工作原理
- 1、MVC的模式和概念
- 2、基于servlet的MVC模式
- 二、SpringMVC的工作原理
- 1.SpringMVC框架组成
- 2.SpringMVC工作流程
- 三、SpringMVC接口
- 四、一个简单的SpringMVC实例创建
- 1.创建web应用,web.xml配置
- 2.spring-mvc.xml配置
- 3.HelloController控制器的内容
- 4. hello.jsp页面代码
- 5. 最后结果
- 总结
前言
本文重点讲解MVC的设计思想以及SpringMVC的工作原理。
首先要知道MVC思想的三个基本部分
MVC思想的三个基本部分 | |
(1) | Model(模型) |
(2) | View(视图) |
(3) | Controller(控制器) |
SpringMVC是应用框架,是由Springt提供的一个实现WebMVC设计模式的轻量级框架,降低耦合,且方便应用的扩展和维修。
一、MVC模式和SpringMVC工作原理
1、MVC的模式和概念
对于上面是三个模块的功能,下面做详细解释:
MVC | Web程序中的职责 |
模型 | 用于存储数据以及处理用户请求的业务逻辑 |
视图 | 向控制器提交数据,显示模型中的数据 |
控制器 | 根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的结果交给哪个视图更新和显示 |
2、基于servlet的MVC模式
基于servlet的MVC模式实现如下
模型:一个或者多个JavaBean对象用于存储数据和处理业务逻辑。
视图:一个或者多个JSP页面,向控制器提交数据和为模型提供数据显示,JSP页面主要使用HTML标记和JavaBean标记显示数据。
控制器:一个或者多个Servlet对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的—>模型(一个或者多个JavaBean对象),并将处理结果存放到实体模型JavaBean中,输出给视图显示。
继续向下走,这样我们是不是就可以写出来他的流程图,如下:
二、SpringMVC的工作原理
1.SpringMVC框架组成
Spring框架主要由DispatcherServlet、处理器映射、控制器、视图解析器、视图组成
2.SpringMVC工作流程
- 客户端请求提交到DispatcherServlet;
- 由DispatcherServlet控制器寻找一个或者多个HandlerMapping找到处理请求的Controller;
- DispatcherServlet将请求提交到Controller;
- Controller调用业务逻辑处理后返回ModelAndView;
- DispatcherServlet寻找一个或者多个ViewResolver视图解析器,找到ModelAndView指定的视图;
- 视图负责将结果显示到客户端。
同样的接下来我们一样可以划出其流程图,如下:
三、SpringMVC接口
SpringMVC接口这里讲上图中用到的四个
SpringMVC接口 | 作用 |
DispatcherServlet | SpringMVC所有的请求都经过DispatcherServlet来统一分发给Controller,但在这之前,需要借助HandlerMapping定位到具体的Controller |
HandlerMapping | 负责完成客户请求到Controller的映射 |
Controller | 处理用户请求,处理完之后将返回ModelAndView对象给DispatcherServlet 前段控制器 |
ViewResolver | 视图解析器负责在Web应用中查找View对象,从而将相应结果渲染给客户 |
这里补充一下Controller中的知识:ModelAndView中包含了模型和视图。宏观上看,DispatcherServlet 是整个Web应用的控制器;微观上看,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型和视图。
四、一个简单的SpringMVC实例创建
1.创建web应用,web.xml配置
<!-- 配置核心控制器 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.spring-mvc.xml配置
<bean id="helloController" class="com.cc.controller.HelloController" />
<!-- 配置映射处理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello">helloController</prop>
</props>
</property>
</bean>
<!-- 2.配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 2.1 页面前缀 -->
<property name="prefix" value="/WEB-INF/"/>
<!-- 2.2 页面后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
3.HelloController控制器的内容
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
return new ModelAndView("hello","message","浅聪");
}
}
4. hello.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>
你好
<h1>${message }</h1>
</body>
</html>
5. 最后结果
最后页面出现
------->你好,浅聪。四个字即为成功。
总结
本文简单的介绍了MVC的设计模式,详细讲解了SpringMVC的工作原理,最后简单的介绍了SpringMVC应用的开发步骤。
最后SpringMVC中无需编写自己的DispatcherServlet,传统的控制器类需要实现Controller接口,但是Spring2.5之后有了基于注解的控制器,很方便的。