Servlet的简单介绍
文章多转自http://www.diybl.com
关于此文档中Servlet的内容基于Servlet 2.4。
关于环境:
运行Servlet不需要使用重量级的Java EE容器,故以下程序使用的开发运行工具为:
1、 Jdk 1.5.0_15
2、 Tomcat 5.5.x
3、 Eclipse 3.3
关于tomcat:
为了方便验证修改过的servlet程序,将<tomcat installed dir>/conf/context.xml中的
<Context>
替换为:
<Context reloadable="true">
Eclispe新建项目名称为Servlet,源码文件夹为src,生产的class文件存放于classes目录,相中lib文件夹存放servlet-api.jar,并将此jar加入到项目的classpath中
Tomcat安装文件夹下的webapps文件夹中建立文件夹train,,train文件夹中建立文件夹WEB-INF,WEB-INF文件夹下建立classes和lib文件夹,并在WEB-INF下建立文件web.xml
web.xml中内容为:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
</web-app>
一、HttpServlet与 GenericServlet和Servlet的关系
public abstract class HttpServlet extends GenericServlet implements
Serializable
public abstract class GenericServlet extends Object implements Servlet,ServletConfig, Serializable
由上面可以看出HttpServlet继承了GenericServlet,而GenericServlet则实现了Servlet接口。那就让我们从从Servlet这个接口开始看起吧。
Servlet接口包含的方法有init、getServletConfig、service、getServletInfo、destroy。
其中init、service、destroy3个方法和整个Servlet的生命周期有着很大的关系。
void init(ServletConfig config) throws ServletException
当一个实现了Servlet接口的类的对象被初始化后会先执行init方法(这一点说明Servlet在响应用户请求之前肯定会先执行init这个方法,所以我们假如需要的话,可以在这个方法的实现中获取一些资源来为将来相应用户的请求做准备)。
init方法的参数只有一个config类型为ServletConfig。这个参数中包含了运行Servlet的容器在这个Servlet被初始化使用传递给ServletConfig的信息。(关于ServletConfig的相关内容在后面会有所提及)
void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
每当用户的一个请求上来之后,Servlet容器会调用servlet对象(这个词不够准确,准确的说是实现了Servlet接口的类的一个实例)的service方法来响应用户的请求。容器会将用户的请求封装成一个ServletRequest对象,将相应用户请求的内容封装成ServletResponse对象。
void destroy()
当servlet容器认为不在需要一个servlet对象的时候会调用这个方法。当然一般的情况下servlet容器调用这个方法的时候一般是servlet容器需要停止,或者产生了过多的servlet对象的时候(关于这个问题在后面会有所提及)。
简单的说,我们可以使用这个方法达到释放一些资源的目的。
ServletConfig getServletConfig()
返回当前servlet对象的ServletConfig。这里有一些需要注意的地方,假如我们直接通过实现Servlet这个接口来写一个类提供服务的话,我们如果不想这个方法返回null的话,我们唯一能做的只有在void init(ServletConfig config)中使用一个成员变量来保存config这个传进来的参数。
String getServletInfo()
这个方法。。。只能说想返回什么就返回什么吧。
下面举一个简单的例子来说明下Servlet这个接口
package squall.servlet.basic;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class ServletTest implements Servlet
{
private ServletConfig config = null;
private PrintWriter out = null;
public ServletTest()
{
try
{
out = new PrintWriter(new FileOutputStream("C:/Servlet.log")); /**//* 将C:/Servlet.log替换成你想查看的文件路径 */
} catch (FileNotFoundException e)
{
e.printStackTrace();
}
out.write("ServletTest() " + System.getProperty("line.separator"));
out.flush();
}
public void destroy()
{
out.write("destroy() " + System.getProperty("line.separator"));
out.close();
}
public ServletConfig getServletConfig()
{
return config;
}
public String getServletInfo()
{
return "author is squall";
}
public void init(ServletConfig servletConfig) throws ServletException
{
this.config = servletConfig;
out.write("init(ServletConfig servletConfig) "
+ System.getProperty("line.separator"));
out.flush();
}
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException
{
out.write("service(ServletRequest request, ServletResponse response) "
+ System.getProperty("line.separator"));
out.flush();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String docType = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ";
out.println(docType + "<HTML> "
+ "<HEAD><TITLE>Hello from Servlet</TITLE></HEAD> "
+ "<BODY BGCOLOR="#FDF5E6"> "
+ "<H1>Hello World from Servlet!</H1> " + "</BODY> "
+ "</HTML>");
}
}
部署(关于部署的内容就简单介绍一次,除非以后有特别需要说明的地方):
将eclipse项目中的classes文件夹下的内容拷贝到tomcat/webapps/train/WEB-INF/classes下。并修改tomcat/webapps/train/WEB-INF/web.xml为
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>squall.servlet.basic.ServletTest</servlet-name>
<servlet-class>squall.servlet.basic.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>squall.servlet.basic.ServletTest</servlet-name>
<url-pattern>/Servlet</url-pattern>
</servlet-mapping>
</web-app>
其中:
<servlet>
<servlet-name>squall.servlet.basic.ServletTest</servlet-name><!--servlet-name为servlet的名字-->
<servlet-class>squall.servlet.basic.ServletTest</servlet-class> <!--servlet-class为此servlet的具体的实现类-->
</servlet>
<servlet-mapping>
<servlet-name>squall.servlet.basic.ServletTest</servlet-name> <!--servlet-name为servlet的名字,应该与上面的servlet-name保持一致-->
<url-pattern>/Servlet</url-pattern><!-- url-pattern为servlet mapping到的url-->
</servlet-mapping>
其中/url-pattern的值为将来访问的url的地址。这个值里面可以包含*这样的符号,*表示匹配所有。
<url-pattern>/Servlet</url-pattern>
表示我们通过http://127.0.0.1:8080/train/Servlet就可以访问这个应用。
假如url-pattern为<url-pattern>/a/*</url-pattern>的话,则代表无论是
http://127.0.0.1:8080/train/a
http://127.0.0.1:8080/train/a/z
http://127.0.0.1:8080/train/a/c/d
都可以与之匹配
以后添加新的Servlet的时候只需要在最后一个</mapping>下添加一个新的
<servlet>
<servlet-name>squall.servlet.basic.ServletTest</servlet-name>
<servlet-class>squall.servlet.basic.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>squall.servlet.basic.ServletTest</servlet-name>
<url-pattern>/Servlet</url-pattern>
</servlet-mapping>
结构即可。
部署完毕,启动tomcat,以后访问http://127.0.0.1:8080/train/Servlet页面会看到
屏幕上输出
Hello World from Servlet!
关掉当前ie窗口后,再次访问http://127.0.0.1:8080/train/Servlet,后停止tomcat,会在
C:/Servlet.log中看到如下输出
ServletTest()
init(ServletConfig servletConfig)
service(ServletRequest request, ServletResponse response)
service(ServletRequest request, ServletResponse response)
destroy()
可以看到输出符合上面的方法的介绍。
分享到:
相关推荐
详细介绍了JAVAWEB中的servlet 非常适合初学者
jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+servlet简介 简单介绍jsp+...
1. **初始化阶段**: - 当Servlet首次被请求或者在web应用启动时,容器(如Tomcat)会加载Servlet类,并调用`init()`方法进行初始化。这个方法只被调用一次,用于进行一次性配置,比如加载配置文件、建立数据库连接...
Servlet是Java平台上的一个核心技术,它主要用于开发Web应用程序,特别是在B/S(浏览器/服务器)架构下。Servlet是一个Java对象,遵循Sun指定的J2EE规范,它扩展了Web服务器的功能,使得服务器能够处理HTTP请求并...
Servlet是在Java平台上运行的服务器端组件,主要用于扩展服务器的功能,处理来自客户端的请求并生成响应。Java Servlet API提供了一套标准的接口,使得开发者可以编写Servlet来处理HTTP请求。在本例中,我们将创建一...
1. `Servlet`接口:这是所有Servlet实现的基础,定义了Servlet的基本行为,如`init()`(初始化)、`service()`(处理请求)和`destroy()`(销毁)方法。 2. `GenericServlet`类:这是一个抽象类,实现了`Servlet`...
### servlet API介绍以及开发部署 #### 一、概述 Servlet技术是Java Web开发的重要组成部分,它主要用于处理HTTP请求并生成动态网页。为了更好地理解和运用这一技术,本篇将详细介绍Servlet API的基本概念及其核心...
本文档将详细介绍如何使用 MyEclipse 8.5 和 Tomcat 6.0 开发 Java Servlet 的基本流程。 #### 二、开发环境配置 为了进行 Java Servlet 的开发,首先需要搭建一个合适的开发环境。本教程推荐的环境配置如下: - ...
本篇将深入介绍Servlet的主要函数和API,并结合2.1版Java Servlet API的文档进行详细解析。 1. **Servlet生命周期** Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。`init()`方法在Servlet实例化后首次...
下面将详细介绍Servlet API的相关知识点。 1. **Servlet概念**: Servlet是一个Java类,它扩展了服务器的功能,尤其是用于Web应用。它被部署在Web服务器或应用服务器中,接收并响应来自客户端(如浏览器)的HTTP...
### servlet网络网关介绍 #### 1. 网络网关基础概念 - **网络网关**:在网络中,网关是一种能够连接不同网络并实现通信的设备或服务。它通常用于在不同协议之间进行转换,例如从一个IP网络到另一个IP网络。 - **...
1. **实现Servlet接口**:实现`javax.servlet.Servlet`接口,该接口包含`init()`、`service()`和`destroy()`等方法。 2. **继承GenericServlet类**:这是一个抽象类,实现了Servlet接口,提供了除了`service()`方法...
Servlet API是Java Web开发中的核心组件,主要用于构建动态web应用程序。它是由Java Servlet规范定义的一组接口和类,使得服务器端能够处理HTTP请求并生成响应。在这个文档中,我们将深入探讨Servlet API的主要概念...
本书以其独特的学习风格,深入浅出地介绍了Servlet和JSP(JavaServer Pages)这两项核心的Java Web开发技术。 Servlet是Java平台上的一个标准API,用于构建动态Web应用程序。它允许开发者通过Java代码来处理HTTP...
2. Servlet 简介:介绍了 Servlet 的定义、功能和优点 3. Servlet 开发包:介绍了 Servlet 的开发包和工具 通过本章的学习,读者将能够理解 Servlet 的实现机制和优点,从而能够开发出更好更有效的 JSP 应用程序。
本文档将详细介绍如何通过实现`Servlet`接口的方式,从零开始构建一个简单的Servlet程序。这个Servlet不仅会显示“Hello World”,还会显示当前的时间。这对于刚接触Servlet技术的初学者来说非常实用。 #### 二、...
以下是对Servlet技术的详细介绍: 1. **Servlet基本概念**: Servlet是一种Java类,它扩展了服务器的功能,主要用于接收和处理来自客户端(通常是Web浏览器)的请求,并生成相应的响应。它们在Web服务器中运行,与...
Servlet 是 Java 语言中用于开发 Web 应用程序的一种核心组件,它是一种服务器端的小型程序,用于接收和响应来自客户端(如浏览器)的请求。Servlet 主要用于生成动态内容,比如从数据库中获取数据并展示在网页上。...
### servlet-api基本类和接口介绍 #### 一、javax.servlet包内的基本类和接口概览 在Java Web开发中,`javax.servlet`包是至关重要的组成部分之一,它为Servlet提供了核心API,使得开发者能够构建动态的Web应用。...
### Servlet程序设计引导 ...通过以上介绍,我们可以看到Servlet为开发者提供了一个强大且灵活的框架,可以用来构建复杂的Web应用程序。理解Servlet的基本原理和工作流程对于掌握其使用方法至关重要。