Java servlets简介
servlet ,通常是提高服务器能力的软件。它通常用Java编写,可以处理网络请求。Servlets是基于Web服务器的应用程序。
其他用于制作动态在线内容的技术,如ASP.NET和PHP,是这些servlets在这些情况下的对应物。
现在,我们都很熟悉开发动态网页的需要,或者那些可能根据时间改变网站信息或根据客户的要求制作材料的网页。
如果你喜欢用Java编码,你会很高兴地知道,有一种技术可以用Java制作动态网页。这种方法被称为Java Servlet。
在我们进入讨论的核心内容之前,重要的是要理解为什么服务器端的扩展是必要的。
Java servlet是一个在支持Java的Web服务器或应用服务器上运行的Java程序。它们被用来接收来自Web服务器的请求,对其进行处理,生成一个回复,然后将回复传送回Web服务器。
先决条件
你将需要以下条件来学习本文的内容。
-
在你的计算机上安装[Java JDK,1.7版(Java 2平台)]。
-
一个开源的Java编辑器,称为Eclipse。
如果你想查看部分工作的运行情况,你需要一个支持128位加密的网络浏览器。
- 需要一些扎实的Java基础知识。
Java servlet的特性和执行
Servlet有两个特点:the function on the server side 和ability to handle sophisticated requests from the web server 。
在执行中,Java servlets在一个容器中运行,这是一种提供各种服务的组件的操作环境。Web服务器或应用服务器通常提供这种容器。
容器还处理组件的安全性,限制组件对本地操作环境的访问。另外,如果需要的话,它还提供认证服务以验证用户的身份。
一个请求被容器映射到一个servlet组件上,它也提供对一组开发者定义的环境元素的访问。这是因为servlet容器在不同的线程中处理许多请求。
作为开发者,我们必须了解servlet容器在这种多线程环境下的生命周期和状态操作,并据此进行编程。没有经验的servlet开发者很容易因为线程安全问题而出现编码错误。
如果你从一开始就意识到servlet代码的某些部分不是线程安全的,那么这些编码错误就可以避免。
java servlet的执行涉及几个步骤。
- 答案由servlet发回给Web服务器。
- 客户端浏览器从网络服务器接收答案,并将其显示在屏幕上。
- 请求由网络服务器发送到相应的小程序。
- 该请求由servlet处理,然后提供一个输出响应。
- 客户端向Web服务器提出请求,然后由Web服务器处理这些请求并将结果返回给客户端。
- 该请求由Web服务器接收。
Servlet架构
servlet的高级架构图如下所示。让我们来看看每个组件是如何对servlet的运行做出更详细的贡献的。

-
客户端。在上面的设计中,客户端主要作为一个通道,向服务器发出HTTP请求,然后处理它收到的响应。如图所示,网络浏览器就是我们的客户端。
-
网络服务器。网络服务器的主要目的是处理用户在一段时间内发出的请求和回复,并跟踪网络用户如何访问存放在服务器上的文件。所谓的服务器是指控制对网络的集中资源或服务的访问的软件。网络服务器被分为两类。
- 一、静态网络服务器
- 一个不断更新的网络服务器
- 网络容器。在servlet设计中另一个常见的组件是Web容器,它处理与servlet的交互。一个Web容器有两个主要功能。
- Servlet生命周期管理
- URL的映射
Web容器是一个服务器端的应用程序,它管理和处理所有通过servlet、JSP页面或任何其他文件系统进来的请求。
服务器上的扩展
顾名思义,server-side extensions ,用于创建动态网页。网页需要一个container 或Web服务器来实现动态网页的功能。
独立的Web服务器供应商以APIs 的形式提供各种专有解决方案,以满足这一需要。
在这些API的帮助下,我们可以开发基于Web的应用程序。作为Java平台企业版的一部分,它定义了在Java中创建动态Web应用程序的标准,Java Servlet是其中的一个组件API。
在学习某个东西之前,了解它的必要性是至关重要的,毕竟这不是制作动态网站的唯一技术。
还有其他与Servlet技术相关的Web服务器扩展,如CGI scripts 和Hypertext Preprocessor (PHP)。另一方面,Java Servlet更容易被接受,因为它克服了CGI的限制,如缓慢的性能和有限的可扩展性。
通用网关接口
Common Gateway Interface 是一个独立的应用程序,可以处理用户请求并创建动态内容。它是用任何一种计算机语言(如C或C++)建立的。
当客户使用CGI程序请求动态网页时,网络服务器进行以下活动。
- 它首先利用URL找到所请求的网页,即所需的CGI程序。
- 然后,该程序启动一个新的程序来处理客户的请求。
- 调用CGI程序并在当前进程的上下文中向服务器传递请求信息。
- 收集来自CGI程序的答案。
- 产生HTTP响应,并在进程结束后交付给客户。
因此,CGI服务器必须为每个请求建立和删除进程。随着客户数量的增加,服务器的负载也在增加,处理请求的时间也在增加。
Java Servlet的优势和劣势
优点
- Servlet可以保留在内存中,直到它们被手动销毁,允许它们在一段时间内处理许多请求。
- 此外,一旦建立了数据库连接,就可以在同一个数据库会话中执行许多数据库查询。
- Servlet继承了Java的可移植性特征,因此可以与几乎所有的Web服务器进行互操作。Servlet最重要的特点是它不受服务器配置的影响,几乎可以与任何Web服务器一起使用。
- Servlet还具有协议无关性,完全支持FTP、HTTP、SMTP和其他协议。
- Servlet在执行前被翻译成字节码,这加快了处理时间。
缺点
- 创建servlet是一个耗时的过程。
- 因为异常不是线程安全的,所以必须在创建servlet的同时解决它们。
- 要为servlet编程,开发者可能需要更多的专业知识。
Servlet容器
The Servlet container,通常被称为Servlet引擎,是一组为Java Servlet元素提供源代码的节点。
基本上,它是一个通过在Web服务器之上管理Java Servlet模块来处理Web客户端请求的系统。
Servlet容器提供以下服务。
- 网络服务。该方法加载一个Servlet类。可以使用本地文件系统、远程文件系统或其他网络服务来加载数据。网络服务,请求和响应是通过Servlet容器提供的发送的。
- 解码和编码基于MIME的消息。为基于MIME的消息提供解码和编码服务。
- 管理Servlet容器。一个Servlet的生命周期由这个类来管理。
- 资源管理。静态和动态资源,包括HTML文件、Servlet和JSP页面,都通过资源管理来管理。
- 安全服务。控制资源访问权限和认证。
- 会话管理。通过在URL路由中添加会话ID,保持会话的活力。
创建一个java servlet。
在创建一个java servlet时,涉及到以下步骤。
- 建立一个目录层次/结构。
- 建立一个Servlet。
- 创建一个Servlet并编译它。
- 在
web.xml文件内,插入映射。 - 启动Webserver,使项目可用。
- 获得Servlet
要执行Servlet程序,我们需要安装和设置Apache Tomcat Server 。
Apache Tomcat包含在Eclipse中,用于Java EE 。一旦服务器设置好了,你就可以开始处理你的应用程序了。
需要记住的一点是,每个servlet程序都需要三个文件:一个index.html file ,一个Java class file ,一个web.xml file 。
第一步是建立一个动态网页项目,之后你就可以继续了。让我们来看看如何使用servlet来对两个整数进行变构,并在浏览器中显示结果。
首先,我将创建index.html文件。
<!DOCTYPE HTML>
<html>
<body>
<form action = "add">
Imput 1st number: <input type="text" name ="number1">
Input 2nd number: <input type="text" name="number2">
</form>
</body>
</html>
上面的软件会生成一个表单,用户可以在上面输入数字进行减法操作。如果没有Java类文件,你将无法对两个整数进行减法。所以我们现在就来制作一个类文件。
package edureka;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Substract extends HttpServlet {
public void service(HttpServletRequest req, HttpServletResponse res) throws IOException {
int x = Integer.parseInt(req.getParameter("number1"));
int y = Integer.parseInt(req.getParameter("number2"));
int k = x - y;
PrintWriter out = res.getWriter();
out.println("Result is"+k);
}
}
最后一步是在制作完Java类文件后将映射添加到web.xml 文件中。让我们来看看我们如何做到这一点。
你的网络内容的WEB-INF 文件夹将包含web.xml 文件。进入部署描述符,选择生成部署描述符存根(Generate Deployment Descriptor Stub),如果它还没有出现。
一旦创建了web.xml 文件,必须将映射添加到该文件中。让我们用下面的例子来看看映射是如何工作的。
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="
<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"
xmlns="
<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a>" xsi:schemaLocation="
<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a>
<a href="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd</a>" version="3.0">
<display-name>Basic</display-name>
<servlet>
<servlet-name>substraction</servlet-name>
<servlet-class>edureka.Add</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>substraction</servlet-name>
<url-pattern>/substract</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
之后,你可以启动服务器并运行应用程序,在浏览器中收到所需的结果。
总结
在这篇文章中,我们介绍了Servlets在Java Web应用程序中的基础,它的属性和执行,架构,服务器端的扩展,以及最后的优点和缺点。
我们还学习了如何创建一个java servlet,以及在引入servlets之前的普通网关接口是什么。