Servlet学习

一、什么是Servlet?

    Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,它是一种运行在服务器端的程序,主要的功能在于交互式的浏览和修改数据,生成动态的web内容。从原理上讲Servlet可以响应任何类型请求,但是大多数情况下,都是用来扩展基于HTTP协议的web服务器。

二、Servlet简介

Servlet是sun公司提供的一种用于开发动态web资源的技术。
sun公司在其API中提供了servlet接口,用户如果需要开发一个动态的web资源,就必要要实现这个接口,并把开发好的类,部署到服务器内。
tips:我们把实现了Servlet接口的Java程序,称为servlet。

三、Servlet的运行过程。

1、客户端向web服务器发送一个Servlet请求

2、web服务器检查是否已经装载并创建了一个servlet如果没有则依次向下执行,如果有则跳到第五步

3、web服务器装载并创建于一个Servlet的实例对象

4、调用Servlet的init()方法进行初始化

5、创键一个用于封装Http请求的HttpServletRequest的对象和用于封装Http响应的HttpServletResponse对象,并通过servle中的service方法将对象作为参数传递进去。

6、Servlet对客户端的请求做出响应

7、web应用程序终止,调用servlet的destroy()方法,servlet引擎卸载该Servlet程序。

四、servlet的生存周期。


--加载:把一个Servlet.class的文件load进来放到web容器中
--实例化:new一个Servlet的实例出来
--初始化:调用init()来初始化对象
||该初始化的目的是为了让Servlet在处理请求前完成一些初始化的工作
--处理服务:调用Service方法 如HttpServlet中的doGet(),doPost()方法
--销毁:当整个服务器退出时,自动销毁,解除掉占用的内存

package com.luther.ServletStudy;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ser")
public class ServletLifeCycle extends HttpServlet {

    @Override
    public void init() throws ServletException {
        System.out.println("初始化方法执行");
    }
    @Override
    public void destroy() {
        System.out.println("销毁方法执行");
    }
    public ServletLifeCycle(){
        System.out.println("构造方法执行");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("doget方法执行");
    }

}


理解servelt的生命周期测试代码总结:

(1)测试这几个方法先后的执行顺序,经过测试先构建对象

(2)只是构建一个对象,不管你访问多少次,只是由这一个对象提供服务,在初始化,最后调用doGet方法

(3)servlet不管你访问多少次,只构建一个对象,访问几次调用几次doGet()方法,init方法只执行一次,第一次初始化的时候执行

(4)当webapp退出时,会调用destroy方法,也就是说servlet对象真正的从内存中消失时,才会调用destroy方法

(5)ServletConfig 中的config对象可以读取web.xml中的初始化参数,得到servlet的配置信息

五、Servlet的映射配置

  由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。
  <servlet>元素用于注册Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注  册名称和Servlet的完整类名。 
一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径。

<?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>same</servlet-name> 两次名称要相同
        <servlet-class>com.luther.ServletStudy.ServletLifeCycle</servlet-class>这里一定要是完整的路劲,包名加上类名
    </servlet>
    <servlet-mapping>
        <servlet-name>same</servlet-name>
        <url-pattern>/ser</url-pattern>前面一定要有 / !!!
    </servlet-mapping>
</web-app>

tips:我们也可以使用注解来进行对servlet的配置,servlet3.0以上。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值