天天看点

Servlet入门Servlet

Servlet

servlet applet:运行在服务器端的小程序

  • servlet 其实就是一个接口,定义了java类被浏览器访问到的规则。
  • Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

      1、编写一个Java类,实现servlet接口。

      2、把开发好的Java类部署到web服务器中。

  • Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中。Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户的通信采用“请求/响应”的模式。

    Servlet可完成如下功能:

    1、创建并返回基于客户请求的动态HTML页面。

    2、创建可嵌入到现有HTML 页面中的部分HTML 页面(HTML 片段)。

    3、与其它服务器资源(如数据库或基于Java的应用程序)进行通信

Servlet容器响应客户请求的过程:

Servlet入门Servlet
Servlet入门Servlet

实现Servlet有三种方式:

实现javax.servlet.Servlet接口;

继承javax.servlet.GenericServlet类;

继承javax.servlet.http.HttpServlet类;

完成Servlet需要分为两步:

1、编写Servlet类;

2、在web.xml文件中配置Servlet;

创建第一个servlet程序:HelloServlet.java

public class HelloServlet implements Servlet {
  public HelloServlet(){
    System.out.println("HelloServlet construct....");
  }
  @Override
  public void destroy() {
    System.out.println("destroy....");
  }
  @Override
  public ServletConfig getServletConfig() {
    System.out.println("getServletConfig....");
    return null;
  }
  @Override
  public String getServletInfo() {
    System.out.println("getServletInfo....");
    return null;
  }
  @Override
  public void init(ServletConfig arg0) throws ServletException {
    System.out.println("init....");
  }
  @Override
  public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
    System.out.println("service....");
  }
}
           

在web.xml中配置和映射servlet

<!-- 配置和映射servlet -->
     <servlet>
     <!-- servlet注册名 -->
       <servlet-name>helloServlet</servlet-name>
       <!-- servlet的全类名 -->
       <servlet-class>org.lanqiao.javaweb.servlet.test.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
     <!-- 需要和关联的servlet节点的servlet-name子节点的内容一致 -->
     <servlet-name>helloServlet</servlet-name>
     <!-- 映射的具体的访问路径:/代表当前WEB应用的根目录 -->
     <url-pattern>/hello</url-pattern>
  </servlet-mapping> 
           
<servlet>:指定HelloServlet这个Servlet的名称为hello;
<servlet-mapping>:指定/hello访问路径所以访问的Servlet名为hello。
           

servlet生命周期

1、 构造器:只被调用一次。当第一次请求Servlet时,创建Servlet的实例,调用构造器。说明Servlet是单实例的。

2、 init:只被调用一次,在创建好实例后立即被调用,用于初始化当前Servlet

3、 Service:被多次调用,每次请求都会调用service方法,实际用于相应请求

4 、destroy:Servlet是不会轻易离去的,通常都是在服务器关闭时Servlet才会离去!在服务器被关闭时,服务器会去销毁Servlet,在销毁Servlet之前服务器会先去调用Servlet的destroy()方法

测试生命周期方法

public class HelloServlet implements Servlet {
  public void init(ServletConfig config) throws ServletException {
    System.out.println("Servlet诞生了!");
  }
  public ServletConfig getServletConfig() {return null;}
  public void destroy() {
    System.out.println("Servlet离我们而去了!");
  }
  public String getServletInfo() {return null;}
 
  public void service(ServletRequest req, ServletResponse res)
       throws ServletException, IOException {
    System.out.println("hello i'am servlet!");
  }
}