Servlet介绍

18 篇文章 0 订阅

1.Tomcat服务器的 目录结构
-bin (存放启动和关闭Tomcat的脚本文件)
-conf (存放Tomcat服务器的各种配置文件)
-lib (存放Tomcat服务器的支持jar包)
-logs (存放Tomcat的日志文件)
-temp (存放Tomcat运行时产生的临时文件)
-webapps (web应用所在的目录,即外界访问的web资源的存放目录)
-work (Tomcat的工作目录)
-LICENSE
-NOTICE
-RELEASE-NOTES
-RUNNING.txt

2.Servlet : Server 与 Applet 的缩写,是服务端程序的意思。使用java语言编写的服务器端程序,可以生成动态的web 页 ,Servlet 主要运行在服务器端,并由服务器调用执行,是一种按照Servlet 标准来开发的类。其本质也是java类,但要遵循Servlet 规范进行编写,没有main()方法,类的创建,使用,销毁都由Servlet 容器进行管理和调用(如Tomcat).

3.Servlet和http协议紧密联系,可以处理http协议相关的所有内容,常见的提供Servlet功能的服务器有: Tomcat, Jetty,WebLogic Server, WebSphere , JBoss,Apache等等。

4.Servlet的基础实现

 package com.StartSL;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author Vodka
 * @date 2021/08//22:15
 */
//注解@WebServlet的常用方式
//@WebServlet("/SLTest")
//@WebServlet(name="Vodka",value={"/SLTOne" ,"/SLTTwo"})
@WebServlet(name="Vodka",urlPatterns={"/One","/Two"})
public class ServletTest extends HttpServlet {
    @Override
    protected void  service(HttpServletRequest req, HttpServletResponse res){
    //控制台输出
        System.out.println("恭喜您成功连接服务器!");
        try{
        //通过数据流输出到浏览器
            res.getWriter().write("Congratulation!");
        }catch(Exception e){
            e.printStackTrace();
        }

    }
}


实现Servlet的其他几种方式

方式一
@WebServlet(urlPatterns = {"/One","/Two"})
public class ServletImpl extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("继承抽象类HttpServlet的基类GenericServlet,实现Servlet");
    }
}

方式二: 实现Servlet 接口
 @WebServlet(urlPatterns = {"/One","/Two"})
public class ServletImpl implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("重写service!");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}


方式三:继承HttpServlet抽象类,并重写service()方法

方式四:继承HttpServlet抽象类,重写doGet,doPost方法
public class ServletImpl extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }

}

5.Servlet的生命周期
Servlet没有main()方法,不能独立运行,它的运行完全由Servlet引擎来控制和调度。所谓生命周期,指的是servlet容器何时创建servlet实例,何时调用其方法进行请求处理,何时销毁实例的整个过程。
-实例和初始化时机:
当请求到达容器时,容器查找该servlet对象是否存在,如果不存在,则会创建实例进行初始化。
-就绪/调用/服务阶段:
有请求到达容器,容器调用servlet对象的service()方法,处理请求的方法在整个生命周期中可以被多次调用,HttpServlet的service ()方法则会根据请求方式来调用doGet()或doPost()方法。但是,这两个do方法默认情况下会抛出异常,需要子类去override。
-销毁时机:
容器关闭时(应用程序停止时),会将程序中的Servlet实例进行销毁。

-容器会在特定时期自动调用观察Servlet生命周期的三个方法,不用用户手动调用。

//生命周期:servlet类加载--> 实例化 --> 服务 --> 销毁
    //init 方法,在Servlet实例创建之后执行
    public void init(ServletConfig config) throws ServletException{
        System.out.println("实例创建了。。。");
    }

    //service方法,每次有请求到达某个Servlet方法时执行,用来处理请求
    protected void service(HttpServletRequest req , HttpServletResponse res) throws ServletException , IOException{
         System.out.println("实例销毁了。。。");
    }

    //destroy方法,Servlet实例销毁时执行
    public void destroy(){
       System.out.println("实例销毁了。。。");
    }

在这里插入图片描述
1.Web Client 向 Servlet 容器(Tomcat) 发出Http请求。
2.Servlet 容器接收Web Client 的请求。
3.Servlet 容器创建一个HttpServletRequest 对象,将Web Client 请求的信息封装到这个对象中
4.Servlet容器创建一个HttpServletResponse 对象
5.Servlet容器调用HttpServlet对象 service 方法, 把Request与Response 作为参数,传递给HttpServlet
6.HttpServlet 调用 HttpServletRequest 对象的有关方法,获取Http请求信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值