在Java EE开发中,Spring和Spring MVC已经是标配的基础系统架构。前面已经介绍了Spring框架,在这里主要说说Spring MVC。

实际上Spring MVC是Spring框架的一部分,Spring框架成为Java EE开发主流框架后,Spring开发小组又在Spring框架的基础上推出了MVC架构,主要用于支持WEB应用程序的开发。

MVC是Model(模型,也称为数据模型)、View(视图)、Controll(控制器)三个英文单词首字母的缩写。从MVC组合的三个单词也可以看出,MVC是一种设计模型,它使用控制器将数据模型和视图进行分离,也就是将视图和数据解耦。这样的好处是后端处理的数据模型和前端视图显示的数据格式无关,实现一个数据模型可以对应多个视图以不同的方式来展现数据,当数据模型或视图发生变化时,相互之间的影响也会降低到最低。

MVC中最重要的核心就是控制器,控制器与视图和模型相对独立,它起到一个负责分发请求和返回处理结果的作用,对请求和数据模型的处理一般由JavaBean负责。

MVC虽然需要程序员多写一些额外的代码,但它强制性地将视图和数据分开所带给我们的好处是毋庸置疑的。可以设想一下,在早期的JSP网页中,处理数据的代码和HTML展现的代码是混合在一起的,它们被完全耦合到一个文件中,程序逻辑也非常混乱,对后期程序的维护和扩展都是很大的问题。

前面我们谈了MVC的设计结构和在WEB开发中的优势,下面我们谈谈在实际开发中MVC的运用和架构。下图是在实际开发中的MVC架构图。

图 1 MVC实际开发架构图

上图是在实际开发中MVC的架构图,架构图分为两部分:虚线框外的是WEB程序的浏览器部分,用户通过浏览器与系统进行交互,同时浏览器也负责解析JSP页面;虚线框内的是WEB程序的后台部分,这部分包括控制器(Controller类)、业务逻辑(Service类)、数据模型(实体类)、数据持久层(Mybatis框架)和MySQL数据库管理系统。

在MVC架构中,JSP页面就是视图,用户通过JSP页面发出请求后,Spring MVC会根据请求路径,将请求发给与请求路径对应的Controller类,Controller类调用Service类对请求进行处理,Service类会调用数据持久层MyBatis完成对实体类的存取和查询工作,并将处理结果返回到Controller类,Controller类将处理结果转换为ModelAndView对象,JSP接收ModelAndView对象并进行渲染。

Controller类是在普通Java类的头部加入@Controller注解,使其变为Controller类,在Controller类中使用@RequestMapping注解标记在Controller类方法的头部,使该方法可以响应一个WEB请求地址,当JSP页面向这个地址发送请求时,该方法会被调用。下面的代码是Controller类的样例。

Service类为业务逻辑处理类,在类的头部使用注解@Service标注,被注解@Service标注的类会被Spring框架自动注入到Controller类。下面的代码是Service类的样例。

实体类也是POJO类,也就是MVC的数据模型,实体类仅有属性以及获取和设置属性的get和set方法,没有事务处理方法。下面的代码是实体类的样例。

现在我们已经对MVC的架构有了大致了解,后面在设计人脉系统的过程中,我们会用到这些知识。

解读Spring MVC项目技术架构相关推荐

  1. 【视频】利用IDEA 创建 spring mvc项目

    为什么80%的码农都做不了架构师?>>>    IntelliJ IDEA 专业交流群 185441009 视频下载地址:http://pan.baidu.com/s/1ntrBoV ...

  2. spring mvc项目中利用freemarker生成自定义标签

    2019独角兽企业重金招聘Python工程师标准>>> spring mvc项目中利用freemarker生成自定义标签 博客分类: java spring mvc +freemar ...

  3. 用maven创建Spring MVC项目

    用maven创建Spring MVC项目 mvn archetype:generate -DgroupId=fry-arthur -DartifactId=spring-mvc-study -Darc ...

  4. 第一个使用Spring Tool Suite(STS)和Maven建立的Spring mvc 项目

    一.目标 在这篇文章中.我将要向您展示怎样使用Spring Frameworks 和 Maven build创建您的第一个J2ee 应用程序. 二.信息 Maven是一个java项目的构建工具(或者自 ...

  5. 如何在Spring和Spring MVC项目中进行测试

    Spring框架概述 Spring大约包含了20个模块,这些模块组成了核心容器(Core Container).数据访问/集成(Data Access/Integration).Web.AOP(面向切 ...

  6. spring mvc学习(4):第一个spring mvc项目

    一个Spring MVC的项目如何创建?请看这里. 代码编辑器:Intellij IDEA 请提前在电脑上配置好自己的tomcat! 该文属于小白教程,适合初学者. 1 创建Spring MVC项目 ...

  7. spring mvc项目在IDEA下使用jrebel热部署报错!!

    转载:https://segmentfault.com/q/1010000006068898 spring mvc项目在IDEA下使用jrebel热部署报错!! 25-Jul-2016 20:43:4 ...

  8. 用Intellij IDEA 创建第一个Spring MVC项目

    0 前言 一个Spring MVC的项目如何创建?请看这里. 代码编辑器:Intellij IDEA 请提前在电脑上配置好自己的tomcat! 该文属于小白教程,适合初学者. 1 创建Spring M ...

  9. Spring MVC 项目 JSP 页面显示源码

    问题描述:Spring MVC 项目的 JSP 页面跳转显示源码,而非页面 原因:Spring MVC 项目的前端拦截器 拦截了 JSP 页面 改正:去掉 * 插曲:如果仅仅改动 JSP 头文件为 H ...

最新文章

  1. 25个Linux性能监控工具
  2. Exploring the 7 Different Types of Data Stories
  3. Java 的转义字符
  4. Java:log4j:WARN no appenders could be found for logger问题解决
  5. 我有一个竞争方法,让用户去选择你的产品而不是别人
  6. opengl加载显示3D模型MDL类型文件
  7. 福昕阅读器drm加密解密总结
  8. c++游戏代码坦克大作战_一红一蓝多种模式的双人小游戏:红蓝大作战
  9. 第1次作业:阅读优秀博文谈感想
  10. tensorflow实战学习笔记(1)
  11. docker镜像启动后端口号是多少_java项目docker云化入门
  12. element ui 表格中的渲染有多个状态判断的情况
  13. [USACO12NOV]同时平衡线Concurrently Balanced Strings DP map 思维
  14. git pull没有更新成功_git冲突平滑解决的巧方法
  15. 2021年4大免费ER图工具
  16. 计算机软件实习每日学习打卡(1)20201130
  17. 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的函数】
  18. 2020年9月指数定期审核与调整 | TokenInsight
  19. tensorflow2.0莺尾花iris数据集分类|超详细
  20. 关于我学习线代的那些事

热门文章

  1. RabbitMQ 原文译03--发布和订阅
  2. dragloader.js帮助你在页面原生滚动下实现Pull Request操作
  3. 安装PowerDesigner造成Office2007鼠标无法正常使用
  4. NCRE四级网络工程师考题详解----对等计算模型(P2P)
  5. 一个注册为输入法的木马分析
  6. 卸载docker后部署k8s后docker无法启动问题
  7. 微信机器人红包java_微信机器人_奇迹蛋_java实现
  8. java游戏暂停弹出字体_小白写了个java的小游戏 想加个暂停的功能 无从下手 求大佬们帮...
  9. python 读取mysql大量数据处理_python使用多线程快速把大量mysql数据导入elasticsearch...
  10. 2021年Q2服饰行业季度洞察报告