Servlet规范介绍

什么是Servlet?

 Servlet(Servlet Applet),全称Java Servlert .是用Java编写的服务器端程序。其主要功能在与交互式的浏览和修改数据,生成动态Web内容。狭义的servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet的类,一般情况下,人们将Servlet理解为后者。比如HttpServlet类继承自Servlet类,可以利用继承Http Servlet  来实现Http请求,当不是Http请求的时候,也可以定义其他形式的Servlet。

        Servlet 运行于支持Java的服务器中,从现实上讲,servlet 可以响应任何类型的请求,但是绝大多数情况下Servlet只用于来扩展基于THHP协议的Web服务器

        最早支持Servlet标准的是JavaSoft的Java Web Server。此后,一些其它基于Java的Web服务器开始支持标准的Servlet。

       Servlet编程需要使用到javax.servlet和javax.servlet.http两个包下面的类和接口,在所有的类和接口中,javax.servlet.servlet接口最为重要。所有的servlet程序都必须实现该接口和继承实现了该接口的类。以下是Servlet的主要类和接口:

        javax.servlet.ServletConfig;

        javax.servlet.ServletException;

        javax.servlet.HttpServlet;

        javax.servlet.HttpServletRequest;

        javax.servlet.HttpServletResponse;

        javax.servlet.HttpSession;

        javax.servlet.Cookie;

        javax.servlet.ServletContext;

        javax.servlet.GenericServlet;

Servlet规范的作用

1、制定了【动态资源文件】的开发步骤

2、制定了HTTP服务器调用【动态资源文件】的规则

3、制定了管理【动态资源文件】的实例对象的规则

Servlet接口实现类

    1、Servlet接口来自于Servlet规范下的一个接口,这个接口存在于Http服务器提供的jar包

    2、Tomcat服务器下lib文件下有一个servlet-api.jar存放Servlet接口(javax.servlet.Servlet)

    3、Servlet规范中,Http服务器能调用的【动态资源文件】必须是一个Servlet接口的实现类

Servlet接口实现类开发步骤

    第一步:创建一个java类继承HTTPServlet父类,使之成为一个Servlet接口的实现类

    第二步:重写HttpServlet父类的两个方法。doGet()或者doPost()

        浏览器---get--->oneServlet.doGet()

        浏览器---post--->oneServlet.doPost()

    第三步:将Servlet接口实现类的信息【注册】到Tomcat服务器中  注册:通知

        【网站】----->【web】------>【WEB-INf】------>wen.xml

        <!--将当前Servlet接口实现类类路径地址交给Tomcat-->

        <servlet>

            <servlet-name>path</servlet-name><!--声明一个变量存储Servlet接口实现类的类路径-->

            <servlet-class>school.xauat.controller.OneServlet</servlet-class><!--声明Servlet接口实现类的类路径-->

        </servlet>

        Tomcat      String path="school.xauat.controller.OneServlet";

        <!--为了降低用户访问Servlet接口实现类的难度,需要设置简短的请求别名-->

        <servlet-mapping>

            <servlet-name>path</servlet-name>

            <url-pattern>/one</url-pattern><!--设置简短的请求别名,别名在书写的时候,必须以“/”为开头-->

        </servlet-mapping>

 

        如果现在浏览器向Tomcat索要OneServlet时的地址

        http://localhost:8080/myWeb/one

/*
    Servlet规范中动态资源文件开发的步骤
 */
public class Class1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Class1.doGet() is running...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Class1.doPost() is running...");
    }
}

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>Class1</servlet-name>
        <servlet-class>school.xauat.controller.review.Class1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Class1</servlet-name>
        <url-pattern>/class1</url-pattern>
    </servlet-mapping>
</web-app>

制定了管理【动态资源文件】的实例对象的规则

Servlet生命周期

    1、网站中所有的Servlet接口实现类的实例对象,只能由http服务器来创建

    开发人员不能手动创建Servlet接口实现类的实例对象

    2、在默认情况下,当http服务器接收到当前Servlet接口实现类的第一次请求时

    自动创建这个Servlet接口实现类的实例对象

 

    在手动配置情况下,要求http服务器在启动的时候自动创建Servlet接口实现类的实例对象

            <servlet>

                <servlet-name>path</servlet-name><!--声明一个变量存储Servlet接口实现类的类路径-->

                <servlet-class>school.xauat.controller.OneServlet</servlet-class><!--声明Servlet接口实现类的类路径-->

                <load-on-startup>30</load-on-startup><!!--填写一个大于0的整数-->

            </servlet>

    3、在http服务器运行期间,一个Servlet接口实现类只能被创建出一个实例对象

    4、在http服务器关闭的时候,自动将网站中所有的Servlet对象进行销毁

public class Class2 extends HttpServlet {
    public Class2(){
        System.out.println("Class2对象已经创建");
    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Class2.doGet() is running...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Class2.doPost() is running...");
    }
}
 <servlet>
        <servlet-name>Class2</servlet-name>
        <servlet-class>school.xauat.controller.review.Class2</servlet-class>
        <load-on-startup>30</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Class2</servlet-name>
        <url-pattern>/class2</url-pattern>
    </servlet-mapping>

在Tomcat服务器启动时

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_45796208/article/details/108679348
今日推荐