超详细的Servlet教程,10分钟带你认识servlet

目录

Servlet是什么?

Servlet实现过程

Servlet命名

生命周期编辑

Servlet的工作模式

对比

与 Applet 的比较

与 CGI 比较

与 JSP 比较


Servlet是什么?

Servlet 是 Server Applet 的简称,译为“服务器端小程序”。Servlet 是 Java 的一套技术标准,规定了如何使用 Java 来开发动态网站。换句话说,Java 可以用来开发网站后台,但是要提前定义好一套规范,并编写基础类库,这就是 Servlet 所做的事情。

Java Servlet 可以使用所有的 Java API,Java 能做的事情,Servlet 都能做。

动力节点的这套 Servlet 入门对 Servlet 技术的整体框架进行了讲解,并附带了实例演示,需要具备 Java 基础,servlet学习资料点下边链接:

http://www.bjpowernode.com/?csdn

Servlet只是古老的CGI技术的替代品,直接使用Servle开发还是很麻烦,所以Java后来又对Servlet 进行了升级,推出了 JSP 技术。JSP 只是对 Servlet 加了一层壳,JSP 经过编译后还是 Servlet。

Servlet实现过程

最早支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的Web Server开始支持标准的Servlet API。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。

这个过程为:

  • 客户端发送请求至服务器端;
  • 服务器将请求信息发送至Servlet;
  • Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
  • 服务器将响应返回给客户端。

Servlet看起来像是通常的Java程序。Servlet导入特定的属于Java Servlet API的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。

一个Servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然Servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。

Servlet命名

Servlet 的命名可以看出 sun 命名的特点,如 Applet 表示小应用程序;Scriptlet = Script + Applet,表示小脚本程序;同样 Servlet = Service + Applet,表示小服务程序。

生命周期编辑

  • 客户端请求该 Servlet;
  • 加载 Servlet 类到内存;
  • 实例化并调用init()方法初始化该 Servlet;
  • service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions());
  • destroy()。

加载和实例化 Servlet。这项操作一般是动态执行的。然而,Server 通常会提供一个管理的选项,用于在 Server 启动时强制装载和初始化特定的 Servlet。

Server 创建一个 Servlet的实例

第一个客户端的请求到达 Server

Server 调用 Servlet 的 init() 方法(可配置为 Server 创建 Servlet 实例时调用,在 web.xml 中 标签下配置 标签,配置的值为整型,值越小 Servlet 的启动优先级越高)

一个客户端的请求到达 Server

Server 创建一个请求对象,处理客户端请求

Server 创建一个响应对象,响应客户端请求

Server 激活 Servlet 的 service() 方法,传递请求和响应对象作为参数

service() 方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息

service() 方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如 doGet() 或 doPost() 或程序员自己开发的新的方法。

对于更多的客户端请求,Server 创建新的请求和响应对象,仍然激活此 Servlet 的 service() 方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用 init() 方法。一般 Servlet 只初始化一次(只有一个对象),当 Server 不再需要 Servlet 时(一般当 Server 关闭时),Server 调用 Servlet 的 destroy() 方法。

Servlet的工作模式

  • 客户端发送请求至服务器;
  • 服务器启动并调用 Servlet,Servlet 根据客户端请求生成响应内容并将其传给服务器;
  • 服务器将响应返回客户端。

对比

与 Applet 的比较

相似之处:

• 它们不是独立的应用程序,没有 main() 方法。
• 它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用。
• 它们都有一个生存周期,包含 init() 和 destroy() 方法。

不同之处:

• Applet具有很好的图形界面(AWT),与浏览器一起,在客户端运行。

• Servlet 则没有图形界面,运行在服务器端。

与 CGI 比较

与传统的 CGI 和许多其他类似 CGI 的技术相比,Java Servlet 具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。在未来的技术发展过程中,Servlet 有可能彻底取代 CGI。
在传统的 CGI中,每个请求都要启动一个新的进程,如果 CGI 程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在 Servlet 中,每个请求由一个轻量级的 Java 线程处理(而不是重量级的操作系统进程)。
在传统 CGI 中,如果有 N 个并发的对同一 CGI程序的请求,则该CGI程序的代码在内存中重复装载了 N 次;而对于 Servlet,处理请求的是 N 个线程,只需要一份 Servlet 类代码。在性能优化方面,Servlet 也比 CGI 有着更多的选择。

• 方便

Servlet 提供了大量的实用工具例程,例如自动地解析和解码 HTML 表单数据、读取和设置 HTTP头、处理Cookie、跟踪会话状态等。

• 功能强大

在Servlet中,许多使用传统 CGI 程序很难完成的任务都可以轻松地完成。例如,Servlet 能够直接和 Web服务器交互,而普通的 CGI 程序不能。Servlet 还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

• 可移植性好

Servlet 用 Java 编写,Servlet API具有完善的标准。因此,为 IPlanet Enterprise Server 写的 Servlet 无需任何实质上的改动即可移植到 Apache、MicrosoftIIS 或者 WebStar。几乎所有的主流服务器都直接或通过插件支持 Servlet。

• 节省投资

不仅有许多廉价甚至免费的 Web 服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持 Servlet 的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。

与 JSP 比较

JSP 和 Servlet 的区别到底在应用上有哪些体现,很多人搞不清楚。简单的说,SUN首先发展出 Servlet,其功能比较强劲,体系设计也很先进,只是,它输出 HTML 语句还是采用了老的 CGI 方式,是一句一句输出,所以,编写和修改 HTML 非常不方便。

Java Server Pages(JSP)是一种实现普通静态HTML 和动态 HTML 混合编码的技术,JSP 并没有增加任何本质上不能用 Servlet 实现的功能。但是,在 JSP 中编写静态HTML 更加方便,不必再用 println语 句来输出每一行 HTML 代码。更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计者进行 HTML设计,同时留出供 Servlet 程序员插入动态内容的空间。

后来 SUN 推出了类似于 ASP 的镶嵌型的 JSP,把 JSP TAG 镶嵌到 HTML 语句中,这样,就大大简化和方便了网页的设计和修改。新型的网络语言如 ASP,PHP,JSP 都是镶嵌型的语言。 这是 JSP 和 Servlet 区别的运作原理层面。

从网络三层结构的角度看 JSP 和 Servlet 的区别,一个网络项目最少分三层:data layer(数据层),business layer(业务层),presentation layer(表现层)。当然也可以更复杂。Servlet 用来写 business layer 是很强大的,但是对于写 presentation layer 就很不方便。JSP 则主要是为了方便写 presentation layer 而设计的。当然也可以写 business layer。写惯了 ASP,PHP,CGI的朋友,经常会不自觉的把 presentation layer 和 business layer 混在一起。

据 SUN 自己的推荐,JSP中应该仅仅存放与 presentation layer 有关的东西,也就是说,只放输出 HTML 网页的部分。而所有的数据计算,数据分析,数据库联结处理,统统是属于 business layer,应该放在 Java BEANS 中。通过 JSP 调用 Java BEANS,实现两层的整合。

微软前不久推出的 DNA 技术,是 ASP+COM/DCOM 技术。与J SP+BEANS 完全类似,所有的 presentation layer 由 ASP 完成,所有的 business layer 由 COM/DCOM 完成。通过调用,实现整合。

采用这些组件技术单纯的因为 ASP/JSP 语言是非常低效率执行的,如果出现大量用户点击,纯 SCRIPT 语言很快就到达了他的功能上限,而组件技术就能大幅度提高功能上限,加快执行速度。

另外一方面,纯 SCRIPT 语言将 presentation layer 和 business layer 混在一起,造成修改不方便,并且代码不能重复利用。如果想修改一个地方,经常会牵涉到十几页 code,采用组件技术就只改组件就可以了。

综上所述,Servlet 是一个早期的不完善的产品,写 business layer 很好,写 presentation layer 就很臭,并且两层混杂。

所以,推出JSP+BEAN,用 JSP 写 presentation layer,用 BEAN 写 business layer。SUN 自己的意思也是将来用 JSP 替代 Servlet。这是技术更新方面 JSP 和 Servlet 的区别。

可是,这不是说,学了 Servlet 没用,实际上,你还是应该从 Servlet 入门,再上 JSP,再上 JSP+BEAN。

强调的是:学了JSP,不会用 Java BEAN 并进行整合,等于没学。大家多花点力气在 JSP+BEAN 上。

我们可以看到,当 ASP+COM 和 JSP+BEAN 都采用组件技术后,所有的组件都是先进行编译,并驻留内存,然后快速执行。所以,大家经常吹的 Servlet/JSP 先编译驻内存后执行的速度优势就没有了。

反之,ASP+COM+IIS+NT 紧密整合,应该会有较大的速度优势呈现。而且,ASP+COM+IIS+NT 开发效率非常高,虽然bug 很多。

那么,为什么还用 JSP+BEAN?因为 Java 实在前途远大。操作系统群雄并起,应用软件的开发商必定要找一个通用开发语言进行开发,Java 一统天下的时机就到了。

简单分析了一下 JSP 和 Servlet 的区别和 Java Web 开发方面的发展。随着机器速度越来越快,Java 的速度劣势很快就可以被克服。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Servlet 第一天 一、简述 1、Servlet,服务器端的小程序,它是相对于Applet 而言的,Applet 是客户端小程序。 Servlet,是接受来自网络的请求(form 表单,以及其他的请求),并对不同请求作出不同的响应 Servlet,是基于Http 协议的,是运行在web 服务器中的程序。这里要提出一个容器的概念。 servlet 是运行在web 容器中,在后面会详细地讲解,这个web 容器可以控制Servlet 对象的生命周期,控制请 求由Servlet 对象处理。 2、web 服务器,这里的服务器不是硬件概念,而是软件,常用的web 服务器有Tomcat,Jboss 等,我们所用到的 Tomcat 是一个开源的服务器, Tomcat 是一个用java 语言编写的web 服务器,所以需要有相应的java 运行环境,也就是JVM,还要配置tomcat 的具体路径。 二、Tomcat 的配置 JAVA_HOME=/XXX/XXX/(JDK 路径,bin 的上一层目录) CATALINA_HOME=/XXXX/XXX(tomcat 的绝对路径windows 中X:\xxx\xxx) 在启动Tomcat 时,是运行Tomcat 的bin 目录下的startup.sh(windows 中使用startup.bat) 判断Tomcat 是否启动成功,可以在浏览器的地址栏中使用http://localhost:8080/或http://127.0.0.1:8080/可以访问到 tomcat 的主页就是启动成功了。 要想停止tomcat 服务器要使用shutdown.sh(windows 中使用shutdown.bat),如果直接关闭启动窗口,就会造成 8080 端口占用错误,这时可以在使用shutdown.sh 关闭一下服务器。 startup.sh,shutdown.sh,shutdown.bat,startup.bat 这些文件其实是一些脚本文件用来执行大量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值