是模型、视图、控制器的简写,是一种软件设计规范
是用将显示、业务逻辑、数据分离的方法来组织代码
主要作用是降低了视图与业务逻辑间的双向耦合
最典型的MVC:JSP+Servlet+JavaBean
2. 包括 2.1 Model模型,包括数据DAO和业务逻辑Service,
提供要展示的数据,因此包括数据和行为
2.2 View视图JSP
2.3 Controller控制器Servlet,接收用户请求,委托给模型进行处理,处理完毕后把模型返回的数据返回给视图,由视图负责展示
3. Model2时代 3.1 流程- 用户发请求
- Servlet接收请求数据,并调用对应的业务逻辑方法
- 业务处理完毕,返回更新后的数据给Servlet
- Servlet跳转到jsp,由jsp来渲染页面
- 响应更新后的页面给前端
- 取得表单数据
- 调用业务逻辑
- 转向指定的页面
- 业务逻辑
- 保存数据的状态
- 显示页面
- 将url映射到java类或java的方法
- 封装用户提交的数据
- 处理请求–调用相关的业务处理–封装响应数据
- 将响应的数据进行渲染
SpringMVC是Spring framework的一部分,是基于Java实现MVC的轻量级Web框架
SpringMVC的web框架围绕DispatcherServlet设计
Dispatcher的作用是将请求分发到不同的处理器,其本质也是一个Servlet,因为其顶层实现了HttpServlet
SpringMVC以请求为驱动,围绕着一个中心Servlet分派请求及提供其他功能
四、HelloSpringMVC 步骤 1. 导入相关Jar包- junit
- springmvc
- jsp
- servlet
- jstl
2. 配置web.xmljunit junit 4.11 test org.springframework spring-webmvc 5.3.9 javax.servlet servlet-api 2.5 javax.servlet jsp-api 2.0 javax.servlet jstl 1.2
注册DispatcherServlet
在DispatcherServlet里绑定springmvc.xml、设置启动级别
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
springmvc
/
3. 配置springmvc.xml
- 配置处理器映射器
- 配置处理器适配器
- 配置视图解析器
4. 写Controller类
public class HelloController implements Controller
{
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView modelAndView = new ModelAndView();
//业务
String hello="helloSpringmvc";
modelAndView.addObject("msg",hello);
//跳转
modelAndView.setViewName("hello");
return modelAndView;
}
}
5. 在springmvc.xml中配置controller的bean
6. 写JSP
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
${msg}
五、SpringMVC原理
1. 原理简述
-
用户发起请求,请求被前置的控制器(DispatcherServlet)拦截,根据请求参数生成代理请求
-
找到请求对应的实际控制器(Controller),控制器处理请求,创建数据库模型,访问数据库,将响应相应给中心控制器
-
控制器使用 模型 与 视图渲染 视图结果
-
将结果返回给中心控制器
-
中心控制器将结果返回给请求者
-
用户发出请求,DispatcherServlet接受请求,并拦截请求
我们假设请求的url为 : http://localhost:8080/SpringMVC/hello 该url将被拆分成三部分: 服务器域名:http://localhost:8080 部署在服务器上的web站点:SpringMVC 控制器:hello 通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。
-
DispatcherServlet调用处理器映射器HandlerMapping,HandlerMapping根据url查找Handler
根据: http://localhost:8080/SpringMVC/hello
-
HandlerExecution表示具体的Handler,去查找控制器
查找到的控制器为hello
-
HandlerExecution将解析后的信息传递给DispatcherServlet
解析控制器的映射,即
-
处理器适配器HandlerAdapter根据特定的规则去执行Handler
-
Handler让具体的Controller执行
让实现了Controller接口的HelloController类中,实现Controller接口方法的方法执行
-
Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView
modelAndView.addObject("msg",hello); //跳转 modelAndView.setViewName("hello"); -
HandlerAdapter将视图逻辑名或模型传给DispatcherServlet
-
DispatcherServlet用视图解析器ViewResolver来解析HandlerAdapter传给DispatcherServlet的视图逻辑名
解析结果=prefix+视图逻辑名+suffix 即视图逻辑名:hello,解析结果:/WEB-INF/jsp/hello.jsp
-
ViewResolver将解析结果传回给DispatcherServlet
-
DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图
-
最终视图呈现给用户



