1. Servlet简介
Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
1)编写一个Java类,实现servlet接口。
2)把开发好的Java类部署到web服务器中。
1.1 Servlet例子
下面以一个向浏览器输出“hello servlet!”为例,来粗略地了解下Servlet。
1)在webapps目录下新建一个day05的web应用,在day05下新建一个WEB-INF\classes,在classes新建FirstServlet.java
package com.oner;
import java.io.*;
import javax.servlet.*;
public class FirstServlet extends GenericServlet{
public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException{
OutputStream out = res.getOutputStream();
out.write("hello servlet!".getBytes());
}
}
2)编译FirstServlet.java
进入classes目录,编译FirstServlet.java
发现编译出错,提示程序包javax.servlet不存在。这是由于我们使用的环境是JavaSE的环境,但是引用了J2EE的一些资源,所以需要将servlet程序包配置到classpath下,然后再次编译。
这是打开classes目录,发现有com/oner/FirstServlet.class文件,说明编译成功。
3)在day05\web-inf目录,新建一个web.xml文件,对servlet进行配置。
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>com.oner.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/FirstServlet</url-pattern>
</servlet-mapping>
</web-app>
4)将day05这个web应用发送到TomCat服务器下的webapps目录下。
5)启动TomCat服务器
6)在浏览器中输入http://192.168.80.101:8080/day05/FirstServlet
1.2 Servlet调用过程
Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
1)Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
2)装载并创建该Servlet的一个实例对象。
3)调用Servlet实例对象的init()方法。
4)创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
5)WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
用下面一张图来表示整个过程: