Java Servlet 基础知识

Servlet

Servlet基本介绍

Servlet是javaEE规范之一,规范就是接口

javaWeb三大组件:Servlet程序、Filter过滤器、Listener监听器

Servlet是运行在服务器的java程序,可以接收客户端发来的请求,并相应数据给客户端。


Servlet.service()

Servlet接口中service方法是负责处理请求和响应的

<servlet>
    <!--servlet-name:程序别名
    servlet-class:程序的全类名-->
    <servlet-name>hello</servlet-name>
    <servlet-class>com.example.Servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <!--servlet-name:程序别名
    url-pattern:配置访问地址
    http://ip:port/工程路径/访问地址-->
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

配置web.xml文件

Servlet生命周期

Servlet程序生命周期:1. servlet构造器、2. init方法、3. service方法、4. destroy方法

1、2步 第一次访问的时候调用

3步 访问的时候调用

4步 web工程结束的时候调用


请求分发

请求分发:通过HttpServletRequest.getMethod()获取方法判断

分发的请求doxx()负责抛出异常


Servlet继承体系

Interface Servlet<—Class GenericServlet<—Class HttpServlet<—自定义Servlet程序

Interface Servlet:只是负责定义Servlet程序访问规范

Class GenericServlet:实现了Servlet接口,但是基本都是空实现。持有一个ServletConfig的引用,对ServletConfig的使用做了一些方法

Class HttpServlet:抽取实现了service()方法,并实现了分发处理(强转ServletRequest,ServletResponse为HttpServletRequest,HttpServletResponse,通过get方法判断分发处理(其方法全部在抛出错误。)

自定义Servlet: 重写相关方法使其支持相关请求

ServletConfig

是Servlet的配置信息类

Servlet程序和ServletConfig对象都是由Tomcat负责创建

Servlet程序默认被访问的时候创建,ServletConfig是每个Servlet程序创建时创建一个与之对应的ServletConfig对象。

一个ServletConfig对象只属于一个Servlet。

三大作用:

  • 可以获取servlet程序的别名servlet-name的值

    • 一般是类名
  • 获取初始化参数init-param

    • 需要在对应得web.xml文件中得对应得servlet中添加如下

    • 可以配多个键值对

      <init-param>
          <param-name>key</param-name>
          <param-value>value</param-value>
      </init-param>
      
  • 获取ServletContext对象

@Override
public void init(ServletConfig servletConfig) throws ServletException {
    System.out.println("获取servletName: " + servletConfig.getServletName());
    System.out.println("获取init-parame: " + servletConfig.getInitParameter("name"));
    System.out.println("获取servlerContext对象: "+servletConfig.getServletContext());
}

ServletContext

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

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

ServletContext对象是一个域对象

域对象

是可以像Map一样存取数据的对象,这里的域是指存取数据操作的范围

Map: put() get() remove()

域对象: setAttribute() getAttribute() removeAttribute()

功能作用

  • 获取web.xml中配置的上下文参数context-param
  • 获取当前工程路径,/工程路径
  • 获取工程部署后服务器硬盘上的绝对路径。“/”→工程项目的web文件夹位置。
  • 像Map一样存取数据

请求

GET请求

请求头

  • 方式 GET
  • 请求的资源路径 /a.html
  • 请求的协议和版本号 HTTP/1.1

请求行

GET /a.html HTTP/1.1 请求行,下面部分为请求头

Host: localhost:8080告诉服务器请求的ip和端口

Connection: keep-alive 告诉服务器回传数据不要马上关闭,保持一小段时间的链接

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9 告诉服务器客户端可以接受的数据类型

Accept-Encoding: gzip, deflate, br 告诉服务器客户端可以接受的数据编码(压缩)格式

Accept-Language: zh-CN,zh;q=0.9告诉服务器客户端可以接受的语言

Cookie: Idea-9a938345=917f1ad2-d83b-4a72-8a8d-6535e0fe3695

POST请求

请求头

请求行

空行

请求体(包含发送给服务器的数据)

请求行常见:

Accept:表示客户端可以接受的数据类型

Accept-Language: 表示客户端可以接受的语言类型

Referer:表示发起请求的时候,浏览器中的地址(从哪来)

User-Agent:表示浏览器信息

Content-Type:表示数据类型

​ application/x-www-form-urllencoded

​ 表示提交的数据格式:name=value&,然后对其进行url编码

​ multipart/form-data

​ 表示以多段的形式提交数据给服务器(流)

Content-Length:发送数据长度

Cache-Control: 表示控制缓存

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值