【NEW02】Servlet 基础


一、Servlet概述:

1.1 什么是Servle:

它是运行在web服务器端的一个java小程序,简单来说,它就是一个java类。

在使用servlet时,需要导入javax.servlet下的jar包。比如:tomcat服务器提供了

servlet的servlet-api.jar包,所以在开发时用tomcat服务器就不需要再导入servlet的jar包。

Servlet它是一个资源,是用来被用户访问的资源,同时是一个动态资源,它是由sun指定的servlet规范。

Servlet的作用:它是基于Http协议的,主要是用来接收客户端发送的请求,处理请求,把数据响应给客户端。

1.2 web访问流程图:

在这里插入图片描述


二、Servlet的入门

2.1 Servlet的接口和实现类:

Servlet它是一个接口,在javax.servlet 包下面。

五个方法:

1.destroy():执行这个方法,销毁了servlet对象
2. init(ServletConfig config):在web服务器创建servlet对象以后,执行这个初始化方法。
3. service(ServletRequest req, ServletResponse res) :服务方法,用来接收客户端发送的请求,并且响应数据到客户端
4. getServletConfig():现在不讲
5. getServletInfo():servlet 的信息,比如作者、版本和版权,这个方法在开发中不用。

GenericServlet,它是一个类,实现了Servlet接口

HttpServlet,它是一个类,实现了Servlet接口,同时继承了GenerciServlet

2.2 创建servlet三种方式
  1. 直接实现Servlet接口。
  2. 继承GenericServlet类。
  3. 继承HttpServlet类。

一般在开发中,创建servlet,通常去继承这个HttpServlet.
比如:class MyServlet extends HttpServlet{ 重写咱们所需要的方法}


三、实现第一个Servlet程序

servlet的语法跟JavaSE是一样的并且能够使用JavaSE中的API,要想创建一个servlet并使用的话可以分为以下几个步骤:

  1. 创建一个javaee的web项目
  2. 编写一个Java类,实现javax.servlet.Servlet接口,并重写该接口中的抽象方法
  3. 在web.xml文件中配置该servlet(如果使用注解方式的话,无需配置web.xml)
  4. 将该web项目部署到tomcat中并启动
3.1 编写第一个servlet

创建一个web项目可以在创建项目时关联tomcat,这样eclipse会把相关的servlet-api.jar包拷贝到项目中,在项目创建一个Java类实现servlet接口并重写里面的方法。

package cn.itcase;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class FirstServlet implements Servlet {
   

    @Override
    public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
   
        System.out.println("Hello 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 {
   

    }



}

servlet创建好之后,需要在web.xml文件中进行配置,给servlet一个可以访问的URI地址:

<!-- 创建一个servlet实例 -->
  <servlet>
    <!-- 给servlet取一个名字,该名字需与servlet-mapping中的servlet-name一致 -->
    <servlet-name>firstServlet</servlet-name>
    <!-- servlet的包名+类名 -->
    <servlet-class>cn.itcase.FirstServlet</servlet-class>
  </servlet>

  <!-- 给servlet一个可以访问的URI地址 -->
  <servlet-mapping>
    <!-- servlet的名字,与 servlet中的servlet-name一致-->
    <servlet-name>firstServlet</servlet-name>
    <!-- URI地址:http://locahost:9999/FirstServlet/hello -->
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>


四、Servlet的生命周期

4.1 什么是生命周期:

自然界人从出生到最终走向西方极乐世界,这个周期过程就是人的生命周期, 其实servlet的生命周期和人的一样,从servlet对象被创建,经过使用servlet对象,到最终servlet对象被销毁,整个过程就是servlet的生命周期。

4.2 生命周期图:

在这里插入图片描述

4.3 Servlet的特征:

  1. Servlet是单例多线程的,只创建一个servlet对象,但是每次请求都会起一个线程并在自己线程栈内存中执行service方法。
  2. 一个 Servlet 实例只会执行一次无参构造器与 init()方法,并且是在第一次访问时执行。
  3. 用户每提交一次对当前 Servlet 的请求,就会执行一次 service()方法。
  4. 一个 Servlet 实例只会执行一次 destroy()方法,在应用停止时执行。
  5. 由于 Servlet 是单例多线程的,所以为了保证其线程安全性,一般情况下是不建议在
    Servlet类中定义可修改的成员变量,因为每个线程均可修改这个成员变量,会出现线程安全问题。
  6. 默认情况下,Servlet 在 Web 容器启动时是不会被实例化的。

tomcat启动时创建servlet实例

在tomcat启动时,默认不会创建servlet实例,如果想要让tomcat在启动时创建servlet实例的话,只需要在web.xml中添加load-on-startup标签即可

代码如下(示例):

 <servlet>
      <servlet-name>lifeServlet</servlet-name>
      <servlet-class>com.monkey1024.servlet.LifeServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
      <servlet-name>lifeServlet</servlet-name>
      <url-pattern>/life</url-pattern>
  </servlet-mapping>



添加load-on-startup的作用是,标记是否在 Tomcat启动时创建并初始化这个 Servlet实例。它的值必须是一个整数。

当值大于等于 0 时,表示容器在启动时就加载并初始化这个 Servlet,数值越小,该 Servlet的优先级就越高,其被创建的也就越早,当值相同时,容器会自己选择创建顺序。


五、ServletConfig接口

5.1 ServletConfig中的方法

  1. getInitParameter(): 获取指定名称的初始化参数值。例如从下面的servlet中调用
  2. getInitParameter(“userName”);方法会返回字符串"monkey1024"。
  3. getInitParameterNames():获取当前 Servlet 所有的初始化参数名称。其返回值为枚举类型
    Enumeration。
  4. getServletName():获取当前 Servlet 的中指定的 Servlet名称。如下面中的 ServletName
    为"configServlet"。
  5. getServletContext():获取到当前 Servlet 的上下文对象
    ServletContext,这是个非常重要的对象,将在下面详细介绍。

5.2 在配置web.xml时,可以为servlet指定多个初始化参数:

  <servlet>
      <servlet-name>configServlet01</servlet-name>
      <servlet-class>com.monkey1024.servlet.ConfigTest01</servlet-class>
      <init-param>
          <param-name>userName</param-name>
          <param-value>monkey1024</param-value>
      </init-param>
      <init-param>
          <param-name>password</param-name>
          <param-value>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值