通过对比JSP、SSH、SSM简单介绍MVC模式
什么是MVC模式?MVC模式把交互系统的组成分解成模型(Model)、视图(View)、控制器(Controller)三种部件。它强制性地使应用程序的输入、处理和输出分开。为什么要使用MVC模式,他有什么进步的思想,他在日常框架中有什么应用?通过下面简单的对比,希望能给你答案。
JSP与servlet:
**什么是JSP?**JSP(Java Server Pages)是Sun 公司指定的一种服务器端动态页面技术的组件规范,Jsp是以“.jsp”为后缀的文件,在该文件中主要是html 和少量的java 代码。jsp 文件在容器中会转换成Servlet中执行。
**什么是servlet?**Servlet (Server Applet)是Sun公司指定的一种用来扩展Web服务器功能的组件规范,属于服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
jsp就是在html里面写java代码,servlet就是在java里面写html代码。
这两者的区别和联系有很多点,本篇文章目的是为了探讨**“为什么jsp相对于servlet更加进步”**这一问题,因此不多赘述。在此给出我自己的答案:
要想使用servlet必须把它放在特定位置而且必须对其映射配置。jsp可以放在和html同样位置(webapps根目录下或者webapps根目录下的子目录下)而且不需要配置,可以直接使用。
在此我们讲讲MVC模式的提出:Servlet 解决了业务逻辑的问题,但是通过字符串拼接的方式生成动态的Html 页面,会导致代码臃肿,难以维护。JSP的业务逻辑大量且复杂,后期业务改变,修改JSP会很麻烦。MVC模式将软件系统分层,双剑合璧,JSP负责View显示界面,servlet负责Controller负责转发请求,对请求进行处理。发挥各自的优势,整体架构更加清晰,可维护性更高。
文章参考:点击查看
JSP与SSH:
SSH为Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架。
Structs主要采用Servlet和JSP技术实现,分别对应Controller层和View层。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,承担Model的角色。Model层包括Service层和DAO层,Service层处理Controller层转发过来的一些数据,DAO层的实现有所不同:JSP使用原生JDBC,返回字符串,返回字符串,返回字符串。这是违反面向对象思想的,Hibernate返回的是对象。虽然需要一定的处理,但是这个思想相对于字符串,更加符合广大程序员的思维。
那Spring是干嘛的?为什么在MVC的分工中它显得毫无作用?如果真的没有作用,为什么Spring在各种项目中有如此高的生命力?其实,Spring 提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦。有机会我们找一篇文章总结一下Spring的核心思想IoC(控制反转)和AOP(面向切面编程),想看的可以评论或者私信,也推荐自行检索。
文章参考:点击查看
SSH与SSM:
按照惯例,什么是SSM?SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
SpringMVC相当于SSH框架中struts,负责View和Controller。
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis作为Model层,其中的DAO层依然是对JDBC进行封装。这里看似是走了回头路,但其实MyBatis除了几乎避免了所有JDBC代码和手动设置参数之外,还可以使用简单的XML或注解来配置数据库中的记录,转换成更符合面向对象思想的接口、原生类型和POJO(Plain Old Java Objects,普通老式 Java 对象)。
相对于JDBC,MyBatis更符合面向对象思想;相对于Hibernate,也不需要用HQL,学习门槛更低。
文章参考:点击查看