servlet

一、什么是Servlet


Servlet(Server applet)服务器的小程序, Servlet是JavaWeb的三大组件之一,它属于动态资源, 也是JavaEE中的一个规范。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要进行下面三步,实现动态页面输出。

Servlet必须实现javax.servlet.Servlet接口

二、实现Servlet的方式

实现Servlet有三种方式:
1.实现javax.servlet.Servlet接口
2.继承javax.servlet.GenericServlet类
3.继承javax.servlet.httpServlet类


步骤一:创建一个FirstServlet类实现javax.servlet.Servlet接口

public class FirstServlet implements Servlet {

    /*
    * 它是生命周期方法
    * 它会在Servlet对象创建之后马上执行,并只执行一次
    */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init()...");
    }

    /*
     * 它是生命周期方法
     * 它会被调用多次,每次处理请求都是在调用这个方法!
     * */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service()...");
    }

    /*
    * 它是生命周期方法
    * 它会在Servlet被销毁之前调用,并且它只会被调用一次!
    * */
    @Override
    public void destroy() {
        System.out.println("destroy()...");

    }

    /*
    * 可以用来获取Servlet的配置信息
    * */
    @Override
    public ServletConfig getServletConfig() {
        System.out.println("getServletConfig()...");
        return null;
    }

    /*
    * 获取Servlet的信息
    * */
    @Override
    public String getServletInfo() {
        System.out.println("getServletInfo()...");
        return null;
    }
}

步骤二:在web.xml中配置Servlet

<servlet>
    <servlet-name>firstServlet</servlet-name>
    <servlet-class>com.sunny.servlet.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>firstServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

然后通过IDEA启动Tomcat, 在浏览器中输入http://localhost:8080/FirstServlet 就可以看到IDEA控制台调用Servlet中的方法。

三、Servlet的生命周期

void init (ServletConfig servletConfig)初始化方法

1.如果有构造器,会先调用构造方法(优先于init)。

2、当Servlet被创建的时候执行init方法,且执行一次。

3、默认情况下,第一次被访问时,Servlet被创建。

4、可以在web.xml中servlet标签下配置Servlet的创建时间。
<load-on-startup>负数</load-on-startup>第一次访问时创建
<load-on-startup>正数</load-on-startup>服务器启动时创建

5、因为init方法只被执行一次,所以一个Servlet在内存中只存在一个对象,Servlet是单例. 多个用户同时访问时,可能存在线程安全问题。
解决: 尽量不要在Servlet中定义成员变量。

void service (ServletRequest servletRequest, ServletResponse servletResponse)方法
每当访问Servlet时,Servlet方法都会被调用一次。

void destroy()销毁方法
1、Servlet被销毁时执行,服务器关闭时,Servlet被销毁
2、只有服务器正常关闭时,才会执行destory方法
3、destory方法在Servlet被销毁之前执行,一般用于释放资源

注意:Servlet类由我们编写,但对象由服务器创建,并且由服务器来调用对应的方法。

 

前端发出HTTP请求时,通过URL找个Servlet实例,tomcat会让这个Servlet实例初始化,请求处理完成后,不会立刻销毁实例。

      当前端发送请求后,通过继承的HttpServlet中的service方法,通过service方法判断解析后的http请求是get还是post请求或者是其他类型的请求,大多数请求都是get和post请求,创建的servlet实例中重写了doget()和dopost()方法,然后通过service方法调用重写后的get或post请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值