JavaWeb 发展历程

背景:觉得在学习JavaWeb方面 简单的了解一下 相关的发展历程,有助于自己把握和联系所要掌握的知识发展脉络。加深自己的理解。看了不少的文章,简单做了些整理。

大致的时间线

事件说明时间
b浏览器诞生伯纳斯 李(berners-lee)1990年
www诞生伯纳斯 李(berners-lee)1991年8月
可以后端生成动态页面CGI(common gateway interface)1993年
java诞生Sun公司在Sun world会议上正式发布Java1993年5月
发布 JDK 1.01996年1月
JavaBean出现发布JDK 1.1 增加了 JIT (即时编译)1997年2月
Servlet出现是采用java技术的CGI程序1997年7月
EJB 1.0出现企业级JavaBean1998年3月
JDK1.2发布出现 J2ME, J2SE, J2EE1998年12月
JSP出现是基于Java servlet的web开发技术1999年6月
tomcat 3.x出现实现了servlet2.3 和 jsp1.1的规范1999年
POJO提出Rebecca Parsons and Josh MacKenzie 提出POJO2000年9月
struts 1.0 发布2001年6月
Hibernate1.0 发布一位澳大利亚27程序员 觉得很多Bean实体实在太麻烦,之后开发了一个符合ORM的Hibernate2001年11月
Spring1.0 发布一个开源框架 IOC AOP xml配置2004年3月
JDK1.5发布更名 jdk5;出现注解泛型
J2EE–> Java EE
2004年10月
Spring MVC 1.0发布
struts 2发布2006年
Spring 2.5发布支持注解2007年11月
sun公司被收购2009年4月
Spring 4.0完全支持 Java 82013年11月
Spring boot 1.02014年1月
Spring cloud 1.02015年3月
Spring 5.02017年
Spring boot 2.42021年
Spring cloud 3.02021年

各个发展时期

1, CGI

  • CGI 全称叫 common gateway interface 是http服务器与机器上其他程序进行通信的一个接口。(很古老了 可以说是)

  • 作用

    最初为了使得 静态页面 向动态的页面的转变。开发了CGI,实现了可以交互的web应用程序 也就是动态网页

  • 大致的工作流程:要动态的生成一个页面 就要启动一个新的进程运行CGI程序。

  • 不足:十分的消耗时间 和 资源。

2、Servlet

  • servlet 最初是由sun公司(于2009年4月20日被甲骨文将其收购)开发出来的。
  • 作用:主要就是用于 接受来自浏览器的请求 然后 在服务器上处理相应的业务 生成相应的页面 返回浏览器。
  • 优点:比之前的CGI 更加快了。解决了CGI的不不足。
  • 不足:对于页面的处理还是十分的低效。因为输出HTML标签使用的还是CGI 是一句一句输出的 十分的不方便。
//页面标签输出。
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("    <meta charset=\"utf-8\">\r\n");
out.write("    <meta name=">\r\n");
out.write("    <title> </title>\r\n");
out.write("</head>\r\n");
out.write("<body ");
out.write("</body>\r\n");
out.write("</html>\r\n");

3、JSP(Java server pages)

3.1 网络的基本架构:

数据层,业务层,表现层(data layer,business layer, presentation layer)。Servlet用来写业务层 是比较强大的 但是用来些表现层 那就显得比较臭了。

3.2 JSP的诞生
  • jsp也是sun公司推出的。是借鉴了 微软的ASP推出的。使用 <%= %>,<%! %>…等一系列的标签 是的在jsp中可以 嵌入java代码。
  • 目的html标签解耦
  • JSP本质上还是Servlet,内部还是使用Servlet类进行编译解析的。
  • 优势和不足:虽然 处理在Servlet在表示层的开发噩梦,但是对于,嵌入了大量的java代码 维护起来十分不方便。
3.3 Tomcat
  • 最初是Jakarta(Apache发起的)下的一个子项目,是为了JavaServlet技术而开发的。把Servlet嵌入到特定的webServer中就是 Servlet容器
  • sun公司创建的一个Servlet容器是 JavawebServer
  • Apache创建了JServ 一个与Apache服务器集成的Servlet引擎。
  • 在1999年 sun公司把JavaWebServer的源码贡献给ASF,和ASF(apache基金会)的Jserv合并 出现了tomcat。第一个版本就是tomcat 3.x, 在1999年发布。实现了Servlet2.2 和 jsp1.1的标准
  • 2001年发布了 tomcat4.x 名为Catalina。 这是里程碑的版本。

4、JSP+JavaBean(EJB) (Model1时代)

4.1 JavaBean 是什么
  • JDK1.1发布之后 就出现了JavaBean。也可以叫 实体类

  • 首先:可以说JavaBean 是一种编写Java类的一种规范 一种描述实体的规范,便于封装和重用。所以官方说是可重用组件

    1. JavaBean类 必须为公共类 public修饰。

    2. 得有public修饰的 无参构造函数。

    3. 所有的属性 得使用private 修饰。

    4. 为所有属性 编写 set 和 get方法。

    5. 这个类需要序列化。

      import java.io.Serializable;
      //1,类是 public的
      //5,实现序列化接口
      public class Person implements Serializable {
      	//2,属性私有
          private  String name;
      	//3,无参构造
          public Person() {
              
          }
      	//4 get方法
          public String getName() {
              return name;
          }
      	//4 get方法
          public void setName(String name) {
              this.name = name;
          } 
      }
      
      
4.2 目的:解耦页面数据
4.3 具体流程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lmNnYGFq-1616948662261)(0.JavaWeb进化史.assets/image-20210328150429621.png)]

  • 其中 JSP分别处理了 表现层 控制层的事情。JavaBean处理模型层的事情。
4.4 不足
  • 其中JSP中高度耦合,是的JSP中代码十分复杂,嵌套了大量的Java代码是的维护也不很方方面。

5、JSP+ServLet+JavaBean(+service) (Model2时代)

5.1 MVC思想的倡导
  • M: model 业务模型
  • V: view 用户视图
  • C: controller 控制器
  • 其中:JSP 负责View展示。Servlet 作为控制器 Javabean 负责业务模型及相关操作
5.3 目的:解耦控制层
5.2 流程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1jXonnKZ-1616948662264)(0.JavaWeb进化史.assets/image-20210328152636878.png)]

  1. JSP 以HTML 和 JSP标签为主。用于接收用户的输入 和 服务器的输出
  2. Servlet 主要是完成控制,接收请求, 调用相应的业务(JavaBean),根据调用得劫夺找到一个 JSP页面进行响应。
  3. JavaBean 完成所有得处理过程 但是需要由JSP 和 Servlet的调度。
  4. service 定义了业务的接口 和 相应的实现类。
5.3 不足:
  • 主要是由于 JavaBean 过于臃肿 并不能完全作为M层的存在 JavaBean可以在细分:业务逻辑层 数据持久化层
  • 页面一多 servlet也会变得很多。

6、POJO,JavaBean,EJB区别和联系

6.1 EJB
  • 全称叫 Enterprise JavaBean 企业级JavaBean。在JavaBean的基础上增加了业务方法

  • 作用:简单概括:就是把编写的软件中那些需要执行制定的任务的类,不放到客户端软件上,而是打成包放到一个服务器上。

6.2 POJO :
  • Plain Ordinary Java Object (普通的Java对象) 也就是 简单的JavaBean,就是为了和EJB做一个区别。

  • 历程:有人(Rebecca Parsons and Josh MacKenzie)觉得EJB比较麻烦 不是每次都用的上 所以整出了这么一个称呼。上面的那个普通是和EJB 所说的。

  • 要素

    • class共开
    • 属性 私有
    • set 和 get方法
  • pojo 示例:

    public class Person {
        
        private  String name;
        
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
6.3 JavaBean看4.1

7 框架之 JSP+Struts

struts 是基于MVC思想 设计并开发的一款经典的技术产品。

7.1 目的:解决控制层共用问题
7.2 功能:
  • struts 针对JSP,推出一套struts的标签,从而使得jsp种没有Java的代码。
  • struts 针对servlet 提供了Action类代替了servlet,这个类能够进行一些请求过滤和自动转码的功能。
7.3 不足:漏洞太多 安全性不好

8 框架之 JSP+Struts+Hibernate

8.1 目的:解耦数据库
  • Hibernate 是持久层的框架,可以让程序员无需操作数据表,直接操作对象。
  • Hibernate 框架最关键的技术是 数据持久化,也就是将数据保存到持久层的过程
  • Hibernate 使用数据库 和 配置信息作为应用程序提供持久化服务,从配置文件中读取数据的相关参数,将持久化类和数据库中的数据表对应。
  • Hibernate 是利用 反射机制 实现持久化对象操作的。

9 框架之 Jsp+Struts+Spring+Hibernate

目的解耦控制层 和 数据层

  • Rod Johnson在2002 觉得当时的EJB 过于臃肿,不是所有的项目都是要使用到了EJB的这样的大型框架的。他提出了一种基于普通Java类(POJO)和依赖注入的更简单的解决方案。---->这就是Spring的前身

出现的问题: 在Action类中调用

  • Spring框架主要是有两个功能。
  • IOC:控制反转
    • 也就是说 一个类要调用另外一个类的时候 不用 通过new 关键字创建。
    • 而是交给 Spring框架 创建 分配 和 管理。这就是所谓的 控制反转
  • AOP:面向切面编程
    • 可以做一些日志的打印和输出,用于提示程序执行过程中的一些具体的操作等。
  • Spring 2.5之后 开始支持注解。

10 框架之 Jsp+Struts2+Spring+Hibernate

目的页面和控制层解耦

  • Struts2 是以 WebWork为核心展开,采用拦截器的机制来处理用户的请求,这样的设计使得业务逻辑控制器 和 Servlet API 完全脱离开。

11 框架之 Jsp+Spring+SpringMVC+Hibernate

目的Struts的安全问题

  • Spring MVC 通过“基于注解”的方式 代替了 Struts 并通过Controller类代替了Action的功能。
  • 因为很多配置信息 都是放在Controller类中配置 所以降低了.xml文件的配置的复杂度。

12 框架之 Jsp+Spring+SpringMVC+Mybatis

目的Mybatis 比 Hibernate 更好的适应业务的复杂性

pring+SpringMVC+Hibernate

目的Struts的安全问题

  • Spring MVC 通过“基于注解”的方式 代替了 Struts 并通过Controller类代替了Action的功能。
  • 因为很多配置信息 都是放在Controller类中配置 所以降低了.xml文件的配置的复杂度。

12 框架之 Jsp+Spring+SpringMVC+Mybatis

目的Mybatis 比 Hibernate 更好的适应业务的复杂性

  • Mybatis 很容易上手,开发的速度很快,学习的门槛比较低。最重要的是Mybatis的SQL优化比Hibernate的好,可以减少查询字段。
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值