Java、JavaEE、JavaWeb 的关系

一、Java、JavaEE、JavaWeb 的关系

Java 是一种语言,也是一个平台。

JavaEE(Java Platform Enterprise Edition,Java 平台企业版)是企业级应用开发的一种标准。

Spring 诞生之初是为了改进 JavaEE 开发的体验,后来逐渐成为了 JavaWeb 开发的实际标准

 

JavaWeb 也就是 JavaEE,JavaWeb 主要是使用各种 Java 企业级技术来解决相关 web 互联网领域的技术总和。而且这些技术有一个标准也就是 JavaEE 规范。

 

在 Sun 的 Java Servlet 规范中,对 JavaWeb 应用作了这样定义:“ JavaWeb 应用由一组 Servlet、HTML 页、类、以及其它可以被绑定的资源构成。它可以在各种供应商提供的实现 Servlet 规范的 Servlet 容器中运行。”

 

补充:JavaEE 和 JavaWeb 的关系,就像 Unicode  和 UTF-8 的关系、ES6 和 JavaScript 的关系;前者是一种标准或者规范,后者是前者的一种具体实现或者具体应用。

          Java,按平台来说,Java 包含 JavaEE、JavaWeb;按语言来说,JavaEE、JavaWeb 包含 Java。

二、Servlet

重要类:HttpServlet、HttpServletRequest、HttpServletResponse

重要方法:doGet()、doPost()、service()

 

  • Servlet = Server + Applet(Applet,小程序)
  • Servlet 是运行在 Web 服务器或应用服务器上的 Java "小"程序
  • Servlet 是学习 JSP 的基础

三、为什么要用JSP

Servlet 通常使用字符串拼接的方式动态生成 html,大量的 html 内容使代码难以维护、可读性差。

后来,大佬们想,既然能在 Java 中写 html,能不能在 html 中写 Java 呢?

于是 JSP(JavaServer Pages) 诞生了。

JSP 是基于 Servlet API 的,所以拥有 Servlet 拥有的一系列好处,可以实现各种功能,同时可以很方便地编写或修改网页,不用面对大量的 println 语句,但是,什么事情都要把握一个度,在 html 中混入大量、复杂的业务逻辑也是不可取的。

一种双剑合璧、扬长避短的方法是把 Servlet 当成 Controller 层,用于处理浏览器请求,并调用核心业务逻辑(Model)。而 JSP 则用作 View 层,负责动态地把处理结果输出到 html 中去。

Model、View、Controller,没错,这就是我们所说的 MVC 模式啦!这里先不赘述,以后会有一篇文章专门介绍 MVC 。

 

通过分析源码,我们发现,JSP 被服务器 “转译” 成了 Servlet。

我们知道,在服务器中部署 Servlet,需要先把 Servlet 编译成 .class 文件,所以添加或修改 Servlet 需要重启服务器才能生效。而 JSP 的转译与编译均由服务完成,服务器如果设置了 JSP 监视,则不需重启就可以应用新增或修改的 JSP。

 

test.jsp 的执行过程为:

test.jsp 被转译为 test_jsp.java(该类继承自 HttpJspBase,而 HttpJspBase 继承自 HttpServlet)
test_jsp.java 被编译成 hello_jsp.class
执行 hello_jsp.class,生成 html
通过 HTTP 协议把 html 响应返回给浏览器

四、MVC

MVC 是一种框架模式。MVC 是对 Servlet(擅长逻辑代码)和 JSP(擅长显示代码)的扬长避短,即“高内聚 低耦合”。

最为经典的 MVC 模式:JavaBean(Model) + JSP(View) + Servlet(Controller)。

注:Servlet 或 JSP 单独用时,都是功能和显示混着来,可读性很差。

五、Spring

目前而言,Spring 是用于构建 Java 应用的一套工具的集合,包括 Spring FrameworkSpring BootSpring CloudSpring Cloud Data Flow 四个部分。

你可以用 Spring Boot 搭建一切,用 Spring Cloud 协调一切,用 Spring Cloud Data Flow 连接一切。

Spring 的核心思想,即实现控制反转(IoC,Inversion of Control)面向切面编程(AOP,Aspect Oriented Programming)。

六、SpringBoot

iBatis、MyBatis 是一个东西

Struts1、Struts2 是一个东西

SpringBoot - 是趋势 - “约定大于配置”

利用 Spring 框架的优势,SpringBoot 代表了Java开发的下一篇章。

 

Java 的 Web 框架虽然各不相同,但基本也都是遵循特定的路数:使用 Servlet 或者 Filter 拦截请求,使用 MVC 的思想设计架构,使用 XML 或 Annotation 实现配置,运用 Java 面向对象的特点实现请求和响应,支持 Jsp,Freemarker,Velocity 等视图。

 

参考:JavaEE 从入门到放弃(一):Java EE 是个什么东西

          Java Web 发展史 (一)

说明:Java EE、Java Web、Spring MVC、Spring Boot 习惯写成JavaEE、JavaWeb、SpringMVC、SpringBoot。

          为了方便阅读,编辑过程中会在英文和文字之间额外加个空格。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值