开发Servlet的三种方法

1. 实现Servlet接口

2. 继承GenericServlet类

3. 继承HttpServlet类

新建web project: servlet_IServlet

----------------------------------

1. 实现Servlet接口

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <servlet>
      <servlet-name>demo01</servlet-name>
      <servlet-class>com.itcast.servlet.Hello</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>demo01</servlet-name>
      <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

Hello.java:

package com.itcast.servlet;
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 Hello implements Servlet {
    @Override
    public void init(ServletConfig arg0) throws ServletException {
        System.out.println("init()");
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public void service(ServletRequest request, ServletResponse response)
            throws ServletException, IOException {
        System.out.println("service()");
        PrintWriter out = response.getWriter();
        out.print("Hello World .");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
        System.out.println("destroy()");
    }
}
部署到Tomcat测试:

后台打印:

不断刷新页面:

从tomcat主页面reload项目:

后台打印:

总结:

  1. init方法用于初始化数据, 只执行一次

  2. service方法用于处理业务逻辑, 每一次刷新(请求)都执行一次

  3. destroy方法在reload项目, 或者关闭tomcat服务器, 或者关机时候执行, 用于释放内存

 -----------------------------------------

2. 继承GenericServlet类

web.xml:

<servlet-class>com.itcast.servlet.HelloGenericServlet</servlet-class>

<url-pattern>/genericServlet</url-pattern>

HelloGenericServlet.java:

public class HelloGenericServlet extends GenericServlet {
    @Override
    public void service(ServletRequest request, ServletResponse response)
            throws ServletException, IOException {
        System.out.println("service genericServlet");
        PrintWriter out = response.getWriter();
        out.print("Hello GenericServlet");
    }
}

测试:

后台打印:

总结: 只有一个方法--service(), 此方法没刷新页面一次就执行一次

----------------------------------------

3. 继承HttpServlet类

web.xml:

<servlet-class>com.itcast.servlet.HelloHttpServlet</servlet-class>

<url-pattern>/httpServlet</url-pattern>

HelloHttpServlet.java:

@SuppressWarnings("serial")
public class HelloHttpServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("Hello HttpServlet");
        PrintWriter out = resp.getWriter();
        out.print("Hello HttpServlet");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        this.doGet(req, resp);
    }
}

测试:

后台打印:

总结:

  1. 有两个方法doGet()和doPost()

  2. 每刷新一次页面就执行一次

  3. 这种继承HttpServlet类开发Servlet的方法用得最多

 

posted @ 2017-03-12 13:50  半生戎马,共话桑麻、  阅读(176)  评论(0)    收藏  举报
levels of contents