Servlet

一、Servlet基础

1.什么是Servlet

   ①javaEE的规范(接口)之一;

   ②Java Web的三大组件(Servlet程序、Filter过滤器、Listener监听器)之一;

   ③运行在服务器上的一个java小程序,可以接收客户端发来的请求,并相应数据给客户端;

2.手动实现Servlet接口

   ①编写一个类实现Servlet接口; 

   ②实现service方法,处理请求,并响应数据;

@Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Hello Servlet 被访问了");
    }

   ③到WEB_INF-----web.xml中配置servlet程序的访问地址,其配置如下:

    <servlet>
        <!--给Servlet程序起别名,一般是类名-->
        <servlet-name>HelloServlet</servlet-name>
        <!--Servlet程序的全类名-->
        <servlet-class>servlet.HelloServlet</servlet-class>
    </servlet>
    <!--servlet-mapping标签给servlet程序配置访问地址-->
    <servlet-mapping>
        <!--告诉服务器当前配置的地址给哪个Servlet程序使用,故传入Servlet的别名即可-->
        <servlet-name>HelloServlet</servlet-name>
        <!--
        1.斜杠/表示地址为:http://ip:port/工程路径
        2./hello表示地址为:http://ip:port/工程路径/hello
        3.设为hello的原因是要与类名有个简单的对应关系
        -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

3.Servlet的生命周期

    ①执行Servlet构造器方法

    ②执行init初始化方法

    ③执行service方法

    ④执行destroy销毁方法

注:①和②会执行1次,③每次访问都会执行,④只有在web工程停止时才会调用。

4.Servlet请求的分发处理

将service方法中的ServletRequest对象强制转换为其子类对象HttpServletRequest,调用子类的getMethod()方法,然后判断是get请求还是post请求,分别执行对应的doGet或doPost方法;

5.通过继承HttpServlet实现Servlet程序(常用)

    ①编写一个类继承HttpServlet类

    ②根据业务需要重写doGet或doPost方法

    ③到web.xml中配置Servlet程序的访问地址

6.使用idea创建Servlet程序

点击ok后①生成类名为HelloServlet2的java程序,它继承了HttpServlet,且有doPost()和doGet()方法,②web.xml中添加了相关的配置信息,但需手动给出访问地址;

7.整个Servlet类的继承体系

8.ServletConfig类

  • 初始化参数配置
<servlet>
        <!--给Servlet程序起别名,一般是类名-->
        <servlet-name>HelloServlet</servlet-name>
        <!--Servlet程序的全类名-->
        <servlet-class>servlet.HelloServlet</servlet-class>
        <!-- init-param是初始化参数,可以配置多个 -->
        <init-param>
            <param-name>username</param-name>
            <param-value>root</param-value>
        </init-param>

</servlet>
  • ServletConfig类的作用(用于Servlet程序的初始化)
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

        //1.可以获取Servlet程序的别名servlet-name的值,这个别名就是在web.xml中定义的名字
        System.out.println("HelloServlet程序的别名是:" + servletConfig.getServletName());
        //2.可以获取初始化参数init-param,获取这个参数需要在web.xml配置信息
        System.out.println("初始化参数username的值是:" + servletConfig.getInitParameter("username"));
        //3.可以获取ServletContext对象
        System.out.println(servletConfig.getServletContext());
    }
  • 注意事项

    ①每个ServletConfig对象对应一个Servlet程序,也就是说HelloServlet2中的config对象不能访问HelloServlet中config对象的信息;

    ②当在Servlet程序中重写了init方法时,必须调用super.init(config),因为子类重写父类的方法会导致父类的方法不可用,我们需要用父类的init方法来保存config对象;

9.ServletContext类

  • 基本知识

    ①ServletContext是一个接口,表示Servlet上下文对象;

    ② 一个web工程,只有一个ServletContext对象实例;

    ③ServletContext对象是一个域对象,类似于Map,其作用范围是整个web工程;

  • ServletContext类的作用

    ①获取 web.xml 中配置的上下文参数 context-param,这个上下文参数是属于整个工程的,和ServletConfig对象中的init-parap不一样;

    ②获取当前的工程路径,格式:/工程路径

    ③获取工程部署后在服务器硬盘上的绝对路径

    ④像 Map 一样存取数据

二、http协议

1.什么是http协议

协议是指双方,或多方,相互约定好,大家都需要遵守的规则。所谓http协议是指客户端和服务器之间通信时,发送数据需要遵守的规则,http协议中的数据又叫做报文

2.请求的http协议格式

  • Get请求格式

  1.请求行:①请求的方式(GET);②请求的资源路径(+?+请求参数);③请求的协议版本号(HTTP/1.1);

  2.请求头:(key:value),其中不同的键值对表示不同的含义;

  • Post请求格式

  1.请求行:①请求的方式(POST);②请求的资源路径(+?+请求参数);③请求的协议版本号(HTTP/1.1);

  2.请求头:(key:value),其中不同的键值对表示不同的含义;

  (请求头与请求体之间有一空行)

  3.请求体:就是发送给服务器的数据;

3.响应的http协议格式

  1.响应行:①响应的协议和版本号(HTTP/1.1);②响应状态码(200);③响应状态描述符(OK)

   2.响应头:(key:value),其中不同的键值对表示不同的含义;

   (响应头与响应体之间有一空行)

   3.响应体:回传给客户端的数据;

4.常用的响应码

  ①200:表示请求成功;

  ②302:表示请求重定向;

  ③404:表示请求服务器已经收到,但是你要的数据不存在(请求地址错误或服务器中不存在数据);

  ④500:表示请求服务器已经收到,但是服务器内部错误(代码错误);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值