servlet生命周期

package com.zhencool.servlet;

 

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Enumeration;

 

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/*Servlet的生命周期:

1、加载和实例化Servlet对象:由Servlet窗口负责加载Servlet,当Servlet窗口

启动或是检测到需要这个Servlet响应第一个请求时,将加载这个Servlet。

加载的方式是通过反射的API去调用Servelet的无参构造方法完成,所以在自定义

的Servlet中不应该出现带参数的构造方法,如果需要定义有参的构造方法,则一定要把无参的也写出来。

2、初始化Servlet对象:调用init()方法完成相应的初始化,如读取初始化参数、连接DB等。

3、处理请求:调用service()方法处理请求。之前一这是init()方法执行成功。

4、销毁Servlet对象:调用detroy()方法。

*/

 

public class Servlet01 extends HttpServlet{

/**

*/

private static final long serialVersionUID = 1L;

@Override

//服务器的生命周期,servlet只初始化一次,服务器停止被销毁

public void init() throws ServletException {

// 在servlet第一次被调用,初始化,在服务器的生命周期内不会重新初始化(当context的reloadable设置为true,在类发生变化时,才有可能重新加载)

System.out.println("servlet01 init.....");

}

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("Servlet01 running......");

System.out.println(this);//com.lanou3g.servlet.Servlet01@2ca5bc92

System.out.println("i'm change......");

//getmethod():获得客户端向服务器端传送数据的方法有get、post、put等类型,,getScheme():它返回当前请求所使用的协议。 一般的应用返回 "http",对于ssl则返回"https"

System.out.println(req.getMethod() + " " + req.getParameter("path") + " " + req.getScheme());

System.out.println(req);

Enumeration<String> heads = req.getHeaderNames();

while(heads.hasMoreElements()) {

String headName = heads.nextElement();

System.out.println(heads + ":" + req.getHeader(headName));

}

System.out.println(req.getRequestURI());//获得发出请求字符串的客户端路径

System.out.println(req.getQueryString());//方法返回请求行中的参数部分

System.out.println(req.getParameter("username"));//用户名密码

System.out.println(req.getProtocol());//协议

System.out.println(req.getRequestURL());

System.out.println(req.getContextPath());//当前的文档路径

System.out.println(req.getIntHeader("Content-Length"));

System.out.println(getServletName());

System.out.println(req.getCharacterEncoding());//编码类型

System.out.println(req.getAuthType());

System.out.println(req.getContentLength());

System.out.println(req.getContentType());

System.out.println(req.getPathInfo());//方法返回请求URL中的额外路径信息

System.out.println(req.getPathTranslated());

System.out.println(req.getServerName());//获取服务器名

System.out.println(req.getServerPort());//获取服务器的端口号

System.out.println(req.getServletPath());//获得客户端所请求的脚本文件的文件路径

System.out.println(req.getParts());

//客户访问服务器响应的第一行

System.out.println(req.getMethod() + " " + req.getProtocol() + " " + req.getRequestURI() + " " + req.getQueryString());

 

 

// resp.setContentType("text/html");

// resp.setCharacterEncoding("utf-8");

//.setHeader 是用来设置返回页面的头 meta 信息

resp.setHeader("Content-Type", "text/html; charset=utf-8");

//向文本输出流打印对象的格式化表示形式PrintWriter = response.getWriter();

PrintWriter out = resp.getWriter();

out.write("你好");

}

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("HttpServlet......");

super.service(req, resp);

System.out.println(req.getMethod());

}

@Override

public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {

System.out.println("servletrequest.......");

super.service(arg0, arg1);

}

@Override

// 服务器会停止服务并销毁所有的servlet时调用destroy方法

public void destroy() {

System.out.println("servlet destroy......");

}

 

}

 

posted @ 2019-03-18 23:05  zhencool  阅读(162)  评论(0)    收藏  举报