JavaWeb-servlet总结(一)

今天给大家总结一下javaWeb开发中最为基础也最为重要的servlet类,思路和之前一样,咱们一步一步来看。咱们用的最多的是HttpServlet类,和这个类相关的还有GenericServlet和Servlet,咱们分别来看看这三个类,看看他们之间的关系。

一、Servlet接口

Servlet是一个接口,咱们实现这个接口看一看有哪些方法:

public class Demo5 implements Servlet{

    @Override
    public void destroy() {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void init(ServletConfig arg0) throws ServletException {

    }

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

    }
}

这里总共实现了五个方法,咱们每一个都看一下,顺便了解一下Servlet的生命周期:
1. init方法:这个方法是初始化方法,在Servlet对象创建后马上执行这个方法,而且只执行一次;
2. service方法:这个方法是处理请求的方法,每次请求都会调用这个方法。
3. destroy方法:这个方法是在服务器关闭的时候调用的,用来关闭一些非内存资源,只调用一次。
4. getServletConfig方法:这个方法获取当前Servlet的ServletConfig对象,可以获取当前Servlet的一些信息。
5. getServletInfo:这个方法没有什么实际的作用,平时开发基本不会用到。
这是一个Servlet拥有的方法,根据方法可以大致了解它的生命周期,下面画图来具体看一下它的生命周期:
1
首先浏览器客户端发出请求,服务器会是判断是不是第一次请求,如果是就会创建servlet对象,如果不是就会调用已有的srvlet对象,创建servlet对象后三个方法执行的顺序如图所示,图中没有展示出判断请求的部分。

这种写法只有五个方法,而且有一个基本不用,现在我想再写一些其他的方法来获取这个servlet的相关信息,比如servlet的名字,servlet的参数和参数名称等,这些信息都可以通过servlet的ServletConfig对象来获取,咱们把这部分代码写在第二部分。

二、扩展Servlet的功能

public class Demo5 implements Servlet{

    ServletConfig config;
    @Override
    public void destroy() {
    }

    @Override
    public ServletConfig getServletConfig() {
        return config;
    }

    @Override
    public String getServletInfo() {
        return "";
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        this.config = config;
        this.init();
    }

    public void init() {

    }

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

    public String getInitParameter(String name){
        return config.getInitParameter(name);
    }

    public ServletContext getServletContext(){
        return config.getServletContext();
    }

    public String getServletName(){
        return config.getServletName();
    }

    public  Enumeration<String> getInitParameterNames(){
        return config.getInitParameterNames();
    }
}

这里我加了五个方法和一个属性,最下面四个方法的功能很简单,这里不再说明,至于为什么要再写一个无参数的init方法,这里需要说明一下。咱们写这个类是为了以后使用方便,所以要继承这个类,继承了这个类,子类想初始化一些东西,为了不覆盖父类有参的init方法里的内容,所以这里多写了一个无参的方法,来留给子类做初始化。

这样写很方便,可以获取servlet的一些配置信息,其实这个方法是GenericServlet中实现的,所以咱们根本不用自己改造代码,java提供了GenericServlet来实现这些方法,使servlet的使用更加方便。

在开发中遇到的请求一般只有两种,即get和post两种请求,而上述两种方法接收的是任意类型的请求,为了方便我们处理请求,我们能不能把收到的请求判断分类呢,这个功能在httpServlet中就实现了,它对收到的ServletRequest请求进行了判断,然后强制转换成http协议相关的请求,最后再调用get和post方法,这样做极大的方便了我们的开发过程,所以我们用的最多的就是HttpServlet类,他是协议相关的类。这里大家能很清楚的看清这三个类的关系了吧,下面给大家总结一下:

Servlet是一个接口,里面包含了生命周期相关的三个方法和获取ServletConfig对象的方法;
GenericServlet是一个实现了Servlet接口,并且增加了一些获取servlet配置信息的方法;
HttpServlet是一个继承了GenericServlet类,并且对请求进行判断和类型转换 的协议相关的类。

以上就是对servlet的总结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值