Model(模型):数据模型,数据Dao 和 服务层Service。包括数据和业务
View(视图):负责进行模型的展示,一般就是我们见到的页面。
Controller(控制器):接收用户请求,调度相关模型进行处理,处理完毕后控制器把模型返回的模型数据返回给视图,由视图负责展示。 控制器起到调度员的作用
Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架
Spring MVC的特点:
Spring的web框架围绕DispatcherServlet [ 调度Servlet ] 设计。DispatcherServlet的作用是将请求分发到不同的处理器。Spring MVC以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)。
中心控制器(DispatcherServlet)调用url处理映射器(BeanNameUrlHandlerMapping)根据请求路径去查找处理器(可理解为对应开发中的Controller)
处理器适配器 安照特定的规则去执行处理器(可理解为就执行了开发中的Controller)
视图解析器将Controller返回的视图和数据进行解析后渲染到视图
导入依赖
org.springframework spring-webmvc 5.3.22 javax.servlet.jsp jsp-api 2.2 javax.servlet jstl 1.2 javax.servlet servlet-api 2.5
web.xml
springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-servlet.xml 1 springmvc /
springMVC配置文件
controller
package com.lmy;import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;/*** 编写一个Controller* 要么实现Controller接口,要么增加注解 @Controller*/
public class HelloController implements Controller {public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws Exception {ModelAndView view = new ModelAndView();view.addObject("smg","你好");view.setViewName("hello");return view;}
}
jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
hello
${smg}
SpringMVC的原理如下:
详细流程图:
开发中,我们只需要实现虚线部分
DispatcherServlet是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。
上诉案例中请求路径为:
http://localhost:8080/SpringMVC/hello
http://服务器ip地址或域名:端口 web项目 控制器
流程图说明: