随笔 - 434,  文章 - 0,  评论 - 463,  阅读 - 46万

目录

远古时代:纯Servlet

背景

servlet初体验

纯Servlet的缺点

源码下载


作为一个Java程序员,我们更多耕耘的是JavaWeb项目,简单来说就是做网站或者业务系统。随着互联网时代的到来,早期CS架构的项目架构逐渐淡出人们的视野,互联网的气息弥漫在每一个开发者周围,我们习惯于用浏览器来做业务,而java作为这个时代的宠儿,是一门及其重要的编程技术。

今天,我们就来聊一聊JavaWeb的一个简明发展历程。

JavaWeb的发展历程,就是一个web程序不断解耦的过程,在之后的文章中我会逐渐说明这一点,我参考了大量资料,总结出JavaWeb发展的若干个时代。

首先是远古时代。

远古时代:纯Servlet

抛开最早期的静态页面不谈,我们来聊一聊Java最早带给程序员的惊喜,那就是用Java可以开发动态网页!

什么是动态网页呢,就好比说一个新闻网站,首页的各种新闻数据是动态的,程序员可以通过修改数据库里面的表记录,从而使得页面的新闻动态发生变化,这就是动态网站。

简而言之,动态网页就是一个系统展现给用户的活的页面,而非写死的静态html。

而早期的web程序是用servlet完成这一功能的,servlet是服务器程序,它的作用是接受客户端传过来的参数,然后返回构造好的数据。

这个返回数据可能是一个数字,一个json对象,也可能是一个网页。

没错,在早期没有ajax的年代,那种特别古老的网站都是靠servlet返回一整个网页代码。

背景

上世纪90年代,随着Internet和浏览器的飞速发展,基于浏览器的B/S模式随之火爆发展起来。 最初,用户使用浏览器向WEB服务器发送的请求都是请求静态的资源,比如html、css等。 但是可以想象:根据用户请求的不同,动态地处理并返回资源是理所当然必须的要求。

所以就有了Servlet。

servlet初体验

Servlet到底是什么,我们用项目代码来阐述。

打开idea,创建一个最简单的web项目。

jdk我们采用1.8,采用maven搭建项目。

直接Finish结束。

maven会下载一些依赖,不用管,等待就是了。

加载完毕后,目录结构如下:

通过右键+new的方式,在main目录下新建java源文件夹和resources资源文件夹,这两个都是classpath路径。

好了,要开始写代码了,我们直接在java源文件夹下新建一个Servlet。

如果你右键new发现没有servlet选项,尝试以下操作:

勾选这个,确定。

然后打开pom.xml,添加servlet依赖。

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>

以上两步缺一不可,因为我们的maven项目默认是没有servlet依赖的,所以要导入。

然后就可以创建servlet啦。

创建一个书本服务器类:

代码:

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "BookServlet", value = "/BookServlet")
public class BookServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

/BookServlet是我们的访问地址,就是说,可以通过这个地址访问到该Servlet。

上面说了,在这个时代,客户端直接跟Servlet交互,而Servlet是直接返回一整个网页的。由此,让聪明的我们简单编写如下的代码。

重写doGet方法:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //模拟书本列表信息
    List<String> books = new ArrayList<String>(){{
        add("五年高考三年模拟");
        add("王后雄教案");
    }};

    //通过拼接的形式返回一整个网页
    response.setContentType("text/html;charset=utf-8"); //设置编码
    PrintWriter out = response.getWriter();             //获取输出流
    out.println("<h1>欢迎来到网上书城!</h1>");
    out.println("<ul>");
    for (String book : books) {
        out.println("<li>"+book+"</li>");
    }
    out.println("</ul>");
    out.flush();
    out.close();
}

项目写好了,然后是发布到tomcat服务器。

点这个

进行简单的配置(注意,要选Tomcat Server,不是TomEE Server)

设置发布目录

OK,启动。

启动完成后默认打开这个页面:

对应项目自动生成的jsp:

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

这不是刚才的Servlet,重新输入:http://localhost:8080/web1_war/BookServlet

得到:

演示完毕,总结一下,我们通过编写了BookServlet,完成整个网页的返回。早期的JavaWeb项目都是采用这种古老的纯Servlet技术。

纯Servlet的缺点

开发servlet必须精通网页前端和美工,你得非常不直观地在Servlet中写前端代码,这使得实现各种页面效果和风格非常困难。

对于后端来说,所有的业务逻辑、页面跳转、样式表现全部混杂在同一个类中,并且一项业务一般只有一个Servlet类与其对应,实在是….太麻烦了。

源码下载

https://gitee.com/skyblue0678/java-web-chronicle

posted on   剽悍一小兔  阅读(15)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-10-18 斐波那契数列的java实现
2021-10-18 Java冒泡排序法
2021-10-18 Java面试:请手写一个文件读取的方法
2021-10-18 JAVA面试官:请说说如何设计线程安全的单例模式?
2021-10-18 你怎么设计一个线程安全的Servlet?
2021-10-18 面试题:如何让Servlet变成多例?
2016-10-18 如何将MyEclipse项目导入eclipse

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示