SpringMVC技术总结(待完结)
SpringMVC技术总结
1,什么是MVC
- MVC 模型(dao、service)、视图(jsp)、控制器(servlet),是一种软件设计规范
- 将业务逻辑、数据、显示分离的方法来组织代码
- MVC主要作用是降低 视图与业务逻辑间的双向耦合
- MVC不是一种设计模式,MVC是一种构架模式
1.1,Model(模型)
数据模型,提供要展示的数据,因此包含数据和行为,可以任务是领域模型或者JavaBean组件(包含数据和行为),不够现在一般都分离开来:Value Object(数据dao)和服务层(行为service)。模型提供了模型数据查询和模型数据状态更新等功能,包括业务和数据。
1.2,View(视图)
复杂进行模型的展示,一般就是见到的用户界面,前端需要的东西
1.3,Controller(控制器)
接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。(调度员)
扩展=》pojo:实体类对象;vo:视图层对象;dto:数据传输的对象
1.4,model1时代
只分为两层,视图层和模型层
jsp的本质就是一个servlet
优点:架构简单,小型项目开发(当前应该不如springBoot)
缺点:JSP职责不单一,不便于维护
扩展:架构是设计好的还是演进的?演进的,例如微服务=>集群
alibaba(php)=>高并发(java)=>王坚(去IOE)=>mysql(alisql\aliredis)=>微服务
1.5,model2
分为视图、控制、模型三层
1,用户发起请求
2,servlet接收请求,并调用对应的业务逻辑
3,业务处理完毕,返回并更新数据给servlet
4,servlet转向JSP,由JSP来渲染页面
5,响应给前端更新后的页面
- controller层
1,取得表单数据
2,调用业务逻辑
3,转向自动的页面
- model层
1,业务逻辑
2,保存数据的状态
- view层
1,显示页面
model2时代时,不仅提高代码的复用率与项目的扩展性,且大大降低了项目的维护成本。model1模式的实现比较简单,适用于快速开发小规模的项目,model1中的JSP页面身兼View和controller两种角色,将控制和视图混杂,导致代码复用性差,增加扩展和维护的难度
2,回顾servlet
1,maven依赖(父级项目)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2,add Framework Support
3,导入sevlet依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
4,编写一个servlet类
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//取得参数
String method = req.getParameter("method");
if (method.equals("add")){
req.getSession().setAttribute("msg","执行了add方法");
}
if (method.equals("delete")){
req.getSession().setAttribute("msg","执行了delete方法");
}
//业务逻辑
System.out.println("业务执行");
//视图跳转
// resp.sendRedirect("");
req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req,resp);
}
// 复用测试
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
5,注册servlet包
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.activeclub.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello111</url-pattern>
</servlet-mapping>
<!-- <session-config>-->
<!-- <session-timeout>15</session-timeout>-->
<!-- </session-config>-->
<!-- -->
<!-- <welcome-file-list>-->
<!-- <welcome-file>index.jsp</welcome-file>-->
<!-- </welcome-file-list>-->
</web-app>
6,jsp前端
hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>wanyu</title>
</head>
<body>
${msg}
</body>
</html>
7,配置tomcat
MVC框架做的事情:
1,将url映射到java类或者java类的方法中
2,封装用户提交的数据
3,处理请求-调用相关的业务处理-封装响应数据
4,将响应的数据进行渲染.jsp/html等表示层数据
扩展:
常见的服务端MVC框架有:struts、struts2、springMVC、ASP.NET MVC、Zend Framework、JSF;
常见的前端MVC框架有:vue、angularjs、react、backbone;
由MVC演化出的另外一些模式如:MVP、MVVM()等
3,SpringMVC技术
1,轻量级,简单易学
2,高效,基于请求响应的MVC框架
3,与Spring无缝结合
4,约定优于配置
5,功能强大:RESTful(使用/号分割)、数据验证、格式化、本地化、主题
6,简洁灵活
Spring的web框架围绕DispatcherServlet【调度servlet】设计
DispatcherServlet的作用是将请求分发到不同的处理器,从spring2.5开始,使用java5或者以上版本的用户可以采用基于注解的形式进行开发,简洁!!!
正式因为SpringMVC简单、便捷、易学,天生的和Spring无缝衔接(SpringIOC和AOP),使用约定优于配置,能够进行简单的junit测试,支持。。。,所以使用的公司很多。
3.1,中心控制器
Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。
2,Ajax技术
Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。 [3] 使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。 [3]
使用Ajax技术可以创建更接近本地桌面应用的直接、高可用、更丰富的WEB页面
例如:百度的搜索页就是这种