Servet的基础学习

今天我们来简单学习一下servet,通过总结网上的一些介绍,来初步了解一下servet的作用。如果有不足的地方希望大家能够指出,修改。

servet的简单介绍

Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。servet是接口和实现类。

Servlet 创有三种方式,1.实现 Servlet 接口,2.继承 GenericServlet 类,3.继承 HttpServlet 方法,我们先简单介绍了解1,3两种方式。

1、实现 Servlet 接口

1-void init(ServletConfig config)初始化配置(初始化)
2-ServletConfig getServletConfig()获得配置信息//用户自己设置
3-String getServletInfo()获取Servlet文本化信息//用户自己设置
4-void service(ServletRquest request,ServletResponse response) 负责处理请求,给出响应(核心方法)(服务)
5-void destroy()回收资源(销毁)

servlet的生命周期 :从servlet创建到销毁的过程,一次创建,到处服务,一个servlet只会有一个对象,服务所有请求。我们可以看到以下代码,其中贯穿了servlet整个生命周期有哪一些方法。

public class ServletDemo1 implements Servlet {

    //public ServletDemo1(){}

     //生命周期方法:当Servlet第一次被创建对象时执行该方法,该方法在整个生命周期中只执行一次
    public void init(ServletConfig arg0) throws ServletException {
                System.out.println("=======init=========");
        }

    //生命周期方法:对客户端响应的方法,该方法会被执行多次,每次请求该servlet都会执行该方法
    public void service(ServletRequest arg0, ServletResponse arg1)
            throws ServletException, IOException {
        System.out.println("hehe");

    }

    //生命周期方法:当Servlet被销毁时执行该方法
    public void destroy() {
        System.out.println("******destroy**********");
    }
//当停止tomcat时也就销毁的servlet。

    public ServletConfig getServletConfig() {

        return null;
    }

    public String getServletInfo() {

        return null;
    }
}

 这里我们着重介绍三个方法

1) init() 方法

init() 方法是在创建 Servlet 对象时被调用,而且只能被调用一次,用于 Servlet 对象在整个生命周期内的唯一一次初始化。只有在 init() 方法调用成功后,Servlet 才会处于服务状态,才能够去处理客户端的请求。

2) service() 方法

service() 方法是 Servlet 工作的核心方法。当客户端请求访问 Servlet 时,Servlet 容器就会调用 service() 方法去处理来自客户端的请求,并把处理后的响应返回给客户端。

3) destroy() 方法

destory() 方法是 Servlet 容器回收 Servlet 对象之前调用的,且只会调用一次,而此时的服务器处于停止状态或者访问资源已经被移除。

Servlet 的生命周期,大概流程可以用下图来诠释

图描述了 Servlet 的完整生命周期,按照功能的不同,大致可以将 Servlet 的生命周期分为三个阶段,分别是初始化阶段、运行阶段和销毁阶段。

1) 初始化阶段

当用户第一次向 Servlet 容器发出 HTTP 请求要求访问某个 Servlet 时,Servlet 容器会在整个容器中搜索该 Servlet 对象,发现这个 Servlet 对象没有被实例化,于是创建这个 Servlet 对象,然后调用该对象的 init() 方法完成初始化。

当用户第二次访问这个 Servlet 时,Servlet 容器仍然在容器中搜索该 Servlet 对象,结果找到了该对象的实例,则不去创建而直接使用该对象。

找到了对应的 Servlet 对象,随后 Servlet 进入到运行阶段。

需要注意的是,在 Servlet 的整个生命周期内,它的 init() 方法只被调用一次。

2) 运行阶段

这是 Servlet 生命周期中最核心的阶段。在该阶段中,Servlet 容器会为当前的请求创建一个 ServletRequest 对象和一个 ServletResponse 对象(它们分别代表 HTTP 请求和 HTTP 响应),并将这两个对象作为参数传递给 Servlet 的 service() 方法。

service() 方法从 ServletRequest 对象中获得用户的详细请求信息并处理该请求,通过 ServletResponse 对象生成响应结果。

需要强调的是,在 Servlet 的整个生命周期内,用户每次请求访问 Servlet 时,Servlet 容器都会调用一次 Servlet 的 service() 方法,并且创建新的 ServletRequest 和 ServletResponse 对象。

3) 销毁阶段

当服务器停止时,Servlet 容器需要回收 Servlet 对象所占用的内存,在回收之前,会自动调用该对象的 destroy() 方法做好回收内存前的准备,辟如关闭后台线程。

和 init() 方法类似,destroy() 方法也只会被调用一次。

注意:Servlet 对象一旦创建就会驻留在内存中一直等待客户端的访问,直到服务器关闭或项目被移除出容器时,Servlet 对象才会被销毁。

2、继承 HttpServlet 方法

servlet通常通过HTTP接受和响应来自Web客户端的请求。要实现此接口编写一个扩展javax.servlet.GenericServlet的一般servlet,或者编写一个扩展javax.servlet.http.HttpServlet的HTTPservlet,来实现servlet程序。通过HttpServlet的两个核心方法,doGet(HttpServletRequest request, HttpServletResponse response)和doPost(HttpServletRequest request, HttpServletResponse response)来完成输出。
 

package com.sxh;

import java.io.IOException;
import java.io.PrintWriter;

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

public class ServletDemo03 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
response.setContentType("text/html;charset=UTF-8");//控制格式输出
		PrintWriter out = resp.getWriter();
		out.println("Hello,world--Browse");
		System.out.println("Hello,world--console");
	}

}

今天学习的servlet的一些功能,大概讲了一下servlet的基本作用,同时也配上了代码演示,比较浅浅的了解一下servlet,今后会学习后面具体的一些代码实现和作用。大家先有些印象即可,新手小白,后面也会继续努力。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值