Servlet

一、Servlet

       是和平台无关的服务器组件,运行在Servlet容器中,可完成如下功能:

       1、创建并返回基于客户请求的动态HTML页面

       2、创建可嵌入到现有HTML页面的HTML页面片段

       3、与其他服务器资源进行通信(如数据库或基于java的应用程序)

   

二、Servlet容器

      运行 Servlet、JSP、Filter 等的软件环境. 
     1、 可以来创建 Servlet, 并调用 Servlet 的相关生命周期方法. 
     2、 JSP, Filter, Listener, Tag ...


三、Servlet 生命周期的方法:  以下方法都是由 Serlvet 容器负责调用. 
     1、构造器: 只被调用一次. 只有第一次请求 Servlet 时, 创建 Servlet 的实例. 调用构造器. 

     2、init 方法: 只被调用一次. 在创建好实例后立即被调用. 用于初始化当前 Servlet. 
     3、service: 被多次调用. 每次请求都会调用 service 方法. 实际用于响应请求的.
     4、destroy: 只被调用一次. 在当前 Servlet 所在的 WEB 应用被卸载前调用. 用于释放当前 Servlet 所占用的资源.

 

好了 现在皮皮开始写第一个Servlet程序啦   老规矩  HelloWorld

    新建Servlet后  可在web.xml文件中看到Servlet的配置信息:

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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_3_1.xsd">
    <servlet>
        <servlet-name>NewServlet</servlet-name>                       servlet的注册名字
        <servlet-class>com.pipi.first.NewServlet</servlet-class>      Servlet 的全类名
    </servlet>
    <servlet-mapping>
        <servlet-name>NewServlet</servlet-name>                       需要和servlet 节点的 serlvet-name 子节点的文本节点一致
        <url-pattern>/HelloWorld</url-pattern>                        映射具体的访问路径
    </servlet-mapping>
    <session-config>
        <session-timeout>      
            30
        </session-timeout>
    </session-config>
</web-app>

关于serlvet-mapping

1、同一个Servlet可以被映射到多个URL上,即多个 <servlet-mapping> 元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。

2、在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式:
一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。

 

好  现在我们开始编辑NewServlet.java文件  来看一下sevlet 的生命周期   看看几个方法的调用情况。

编辑一下几个方法

 @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.service(req, resp); //To change body of generated methods, choose Tools | Templates.
         System.out.println("service!");
    }
    

    @Override
    public void init() throws ServletException {
        super.init(); //To change body of generated methods, choose Tools | Templates.
        System.out.println("init!");
    }
    public NewServlet(){
        System.out.println("hello world!");
    }

    @Override
    public void destroy() {
        super.destroy(); //To change body of generated methods, choose Tools | Templates.
        System.out.println("destory!");
    }


运行后是这样的

多次刷新 会打印多次 service   

关闭服务器后   会打印destroy

可见 :

     1、构造器: 只被调用一次. 只有第一次请求 Servlet 时, 创建 Servlet 的实例. 调用构造器. 

     2、init 方法: 只被调用一次. 在创建好实例后立即被调用. 用于初始化当前 Servlet. 
     3、service: 被多次调用. 每次请求都会调用 service 方法. 实际用于响应请求的.
     4、destroy: 只被调用一次. 在当前 Servlet 所在的 WEB 应用被卸载前调用. 用于释放当前 Servlet 所占用的资源.

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值