Servlet小练习

1、servlet实例什么时候被创建?

  :服务器启动时并未创建Servlet实例;当第一次访问的时候,实例才被创建。

小练习:

public class ServletDemo2 implements Servlet {
    
    /**
     * Servlet实例被创建后,调用init方法进行初始化
     *     Servlet什么时候被创建呢?
     *         * 不是服务器一启动时,实例被创建,第一次访问的时候,实例才被创建。
     *     init方法调用几次呢?
     *         * 只被调用一次。
     */
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init...");
    }
    
    /**
     * service调用几次呢?
     *     * 有一次请求,调用一次service方法
     */
    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException {
        System.out.println("service...");
    }
    
    /**
     * Servlet实例什么时候被销毁呢?
     *     * 服务器关闭,手动移除。
     *     destroy调用几次呢?
     *     * 一次    
     */
    public void destroy() {
        System.out.println("destroy...");
    }
public ServletConfig getServletConfig() { return null; } public String getServletInfo() { return null; } }

注意:调用service()方法,Tomcat底层源码最终还是调用doGet与doPost等方法

public class ServletDemo5 extends HttpServlet {
    
    /**
     * 默认的情况下第一次访问的时候init被调用。
     * 
     */
    public void init() throws ServletException {
        System.out.println("init...");
        // 初始化数据库的链接
        
    }
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 写的内容
        // 获取表单输入的内容
        // 自己逻辑,通过名称查询数据库,把张三的姓名查到了
        // 把张三返回浏览器,
        //向控制台输出结果
        System.out.println("doGet...");
        // 向页面输出内容
        response.getWriter().write("hello demo5...");
    }
    
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request,response);
    }
    
}
import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * ServletConfig对象
 * @author Administrator
 *
 */
public class ServletDemo6 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 测试ServletConfig对象的api
        // 先获取ServletConfig对象
        ServletConfig config = getServletConfig();
        // 获取配置文件中serlvet的名称
        System.out.println("servlet的名称:"+config.getServletName());
        
        // 获取初始化的参数
        String username = config.getInitParameter("username");
        String password = config.getInitParameter("password");
        System.out.println(username+" : "+password);
        
        // 获取初始化参数的名称们
        Enumeration<String> e = config.getInitParameterNames();
    
        while(e.hasMoreElements()){
            String name = e.nextElement();
            String value = config.getInitParameter(name);
            System.out.println(name+" : "+value);
        }
        
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    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">
    
    
    <!-- 配置全局初始化参数 -->
    <context-param>
        <param-name>encoding</param-name>
        <param-value>GBK</param-value>
    </context-param>
    
      
      <servlet>
          <servlet-name>ServletDemo2</servlet-name>
          <servlet-class>cn.itcast.servlet.ServletDemo2</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>ServletDemo2</servlet-name>
          <url-pattern>/demo2</url-pattern>
      </servlet-mapping>
      
      
  <!-- 使用模板生成的 -->
  <servlet>
    <servlet-name>ServletDemo5</servlet-name>
    <servlet-class>cn.itcast.servlet.ServletDemo5</servlet-class>
    <!-- 设置优先级 -->
    <load-on-startup>3</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletDemo5</servlet-name>
    <url-pattern>/demo5</url-pattern>
  </servlet-mapping>
  
  
  <!-- 演示初始化参数 -->
  <servlet>
    <servlet-name>ServletDemo6</servlet-name>
    <servlet-class>cn.itcast.servlet.ServletDemo6</servlet-class>
    <!-- 配置初始化参数 -->
    <init-param>
        <param-name>username</param-name>
        <param-value>root</param-value>
    </init-param>
    <init-param>
        <param-name>password</param-name>
        <param-value>123</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletDemo6</servlet-name>
    <url-pattern>/demo6</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
        
</web-app>

 

posted on 2019-06-18 15:32  backend  阅读(191)  评论(0编辑  收藏  举报

导航