Servlet&Request详细总结

本文详细介绍了Servlet和Request的相关知识,包括WEB相关概念、Servlet的生命周期、HTTP协议、Request对象的使用方法及其在登录案例中的应用。讲解了Servlet的创建、配置、执行原理,以及Request的请求行、请求头、请求体数据的获取。此外,还提到了BeanUtils工具类在数据封装中的简化作用。
摘要由CSDN通过智能技术生成

目录

WEB相关概念

 WEB服务器软件

 Servlet

 servlet快速入门

servlet原理

 Servlet生命周期

 Servlet注解配置

 Servlet体系结构

 HTTP

 请求消息数据格式

请求行

请求头

请求空行

请求体

Request

Request原理

 request继承的体系结构

 request对象方法

 获取请求消息数据

获取请求行数据

获取请求头

 获取请求体数据

 其他方法

共享数据

 获取ServletContext

 登录案例

需求及实现

BeanUtils工具类

引入

 相关概念


WEB相关概念

软件架构:

1.C/S架构:客户端/服务器端

2.B/S架构:浏览器/服务器端

资源分类:

1.静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源。如html,css,JavaScript。静态可以直接被浏览器解析。

2.动态资源:每个用户访问相同资源后,得到的结果可能不一样。称为动态资源。如servlet/jsp,php。动态资源被访问后,需要先转换为静态资源,再返回给浏览器(响应)。

网络通信三要素:

IP:电子设备(计算机)在网络中的唯一标识。

端口:计算机上的某个指定应用程序的唯一标识。0~65536之间。

传输协议:规定了数据传输的规则。(可以看作服务器和浏览器交流要用一种语言,即遵循相同的规则,协议)

基础协议:

1.tcp:安全协议,三次握手,速度较慢

2.udp:不安全协议,速度快

 WEB服务器软件

服务器:安装了服务器软件的计算机

服务器软件:接收用户的请求,处理请求,做出响应

WEB服务器软件

1.让用户通过浏览器访问,接收用户的请求,处理 请求,做出响应。

2.在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目。

3.web服务器又称为web容器,因为动态资源在web容器中才可以运行。

常见的WEB服务器软件:

1.webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费。

2.webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费。

3.JBOSS:JBOSS公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费。

4.Tomcat:Apache基金组织,中小型的JavaEE服务器,仅仅支持少量的javaee规范。

JAVAEE:Java语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范。

 Servlet

概念:server applet运行在服务器端的小程序

1.servlet就是一个接口,定义了java类被浏览器访问到(tomcat识别)的规则

2.将来我们自定义一个类,实现servlet接口,复写方法。

注:我们写的实现逻辑的java类不需要使用Main方法运行,tomcat来执行它。

 

 servlet快速入门

步骤:

1.创建一个javaee项目

2.定义一个类,实现servlet接口中的抽象方法

3.配置servlet

为什么需要配置servlet呢?

用户通过Url来访问动态资源,所以我们需要将我们动态资源中的类映射为一个资源路径。

查看api文档:

 

 在web.xml中配置servlet:

注意:是在根标签里边配置的

  <servlet>
        <servlet-name>demo01</servlet-name>
        <!--相当于给类起了别名-->
        <servlet-class>web.servlet.ServletDemo01</servlet-class>
        <!--这里需要填入被映射类的全类名-->
    </servlet>
        <servlet-mapping>
            <servlet-name>demo01</servlet-name>
            <url-pattern>/demo1</url-pattern>
<!-- /demo1是类(别名demo01)映射为资源路径的路径名字-->
        </servlet-mapping>

 实现逻辑的类:

import javax.servlet.*;
import java.io.IOException;

public class ServletDemo01 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("hello servlet");//会在控制台输出
    }

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

    @Override
    public void destroy() {

    }
}

servlet原理

 执行原理:

1.当服务器接收到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径

2.查找web.xml文件,是否有对应的<url-pattern>标签体内容

3.如果有,则在找到对应的<servlet-class>全类名

4.tomcat会将字节码文件加载进内存,并且创建其对象

5.调用其方法

 Servlet生命周期

servlet接口中的方法:

public void init()方法:在Servlet被创建时执行,只会执行一次。

public service()方法:提供服务的方法,每一次servlet被访问时,被执行,执行多次

public void destory()方法:在服务器正常关闭时执行,只会执行一次。

public ServletConfig getServletConfig():获取servletConfig对象。

ServletConfig:Servlet的配置对象。

public String getServletInfo():获取Servlet的相关信息。

servlet的生命周期:

1.被创建:执行init方法,只执行一次,说明servlet在内存中只存在一个对象,即servlet是单例的。通常用于创建资源。

注意:多个用户同时访问时,可能存在线程安全问题(有的线程对数据进行修改,导致数据错乱)

解决方案:尽量不要在servlet中定义成员变量,局部变量不能共享。即使定义了成员变量,但是不要赋值及修改。

2.提供服务:执行service方法,执行多次。即每一次访问Servlet时,Service方法都会被调用一次。

3.被销毁:执行destroy方法,只执行一次。服务器被正常关闭时,才会执行该方法。servlet被销毁前执行destory方法,通常用于释放资源

Servlet被创建

创建时间:

默认情况下,第一次访问时,Servlet被创建

可以配置执行Servlet的创建时机

指定创建时间:在<servlet>标签下配置。

    <servlet>
        <servlet-name>demo02</servlet-name>
        <!--相当于给类起了别名-->
        <servlet-class>web.servlet.ServletDemo02</servlet-class>
        <!--这里需要填入被映射类的全类名-->
<!--        指定Servlet的创建时机-->
<!--        1.第一次访问时,创建。
             <load-on-startup>的值为负数,默认为负数-->
<!--        2.在服务器启动时,创建。
            <load-on-startup>的值为0或正整数
-->
        <load-on-startup>-1</load-on-startup>
    </servlet>

 Servlet注解配置

servlet3.0支持注解配置。可以不需要web.xml配置。

步骤:

1.创建JavaEE项目,选择servlet


3.0以上的版本,可以不创建web.xml

2.定义一个类,实现servlet接口,复写方法。

3.在类上使用@webServlet("类对应的资源路径名")注解,进行配置。

虚拟目录:URL上的项目路径

 Servlet体系结构

查看API文档寻找servlet的继承关系:

 

 三者的关系:

 GenericServlet:  继承该类时,只需要实现service方法即可,其他的方法该类默认已经空实现只将service设置为静态方法。想要实现其他方法手动添加即可。

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/demo04")
public class ServletDemo04 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("只需要实现service方法哦");
    }
}
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值