一、Servlet概念:
Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的 Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
二、第一个Servlet程序:
创建一个HelloServlet类,继承Servlet接口,并实现接口的方法。public class HelloServlet implements Servlet{...}
package com.iflytek.servlet; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class HelloServlet implements Servlet { public HelloServlet(){ System.out.println("constructor..."); } @Override public void init(ServletConfig config) throws ServletException { System.out.println("init..."); } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("service..."); } @Override public ServletConfig getServletConfig() { System.out.println("getServletConfig..."); return null; } @Override public String getServletInfo() { System.out.println("getServletInfo..."); return null; } @Override public void destroy() { System.out.println("destroy..."); } }
三、配置web.xml文件(配置和映射Servlet)
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <!-- 配置 和 映射 Servlet --> <!-- 配置 Servlet --> <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>com.iflytek.servlet.HelloServlet</servlet-class> </servlet> <!-- 映射 Servlet --> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
四、启动Tomcat服务器,在地址栏输入 http://localhost:8080/test001_Servlet/hello。控制台输出信息如下:
五、Servlet 生命周期
1. 构造器: 只被调用一次. 只有第一次请求 Servlet 时, 创建 Servlet 的实例. 调用构造器.这说明 Serlvet 的单实例的!
2. init 方法: 只被调用一次. 在创建好实例后立即被调用. 用于初始化当前 Servlet.
3. service: 被多次调用. 每次请求都会调用 service 方法. 实际用于响应请求的.
4. destroy: 只被调用一次. 在当前 Servlet 所在的 WEB 应用被卸载前调用. 用于释放当前 Servlet 所占用的资源.
六、Servlet接口的源码:
package javax.servlet; import java.io.IOException; public interface Servlet { public void init(ServletConfig config) throws ServletException; public ServletConfig getServletConfig(); public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; public String getServletInfo(); public void destroy(); }