一、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 Framework、Spring Boot、Spring Cloud、Spring 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 EE、Java Web、Spring MVC、Spring Boot 习惯写成JavaEE、JavaWeb、SpringMVC、SpringBoot。
为了方便阅读,编辑过程中会在英文和文字之间额外加个空格。