JavaWeb核心篇——Request和Response

简单介绍

首先我们先了解一下客户端与服务端之间信息如何传递:

从上图,我们可以看到:

  • 客户端发送请求,而请求是以HTTP请求数据格式进行发送,因而Servlet就创建了一个Request类来封装这些接收数据
  • 服务端给出响应,而响应是以HTTP响应数据格式进行发送,因而Servlet就创建了一个Response类来封装这些返回数据

简单来说:

  • Request对象:获得请求数据
  • Response对象:设置响应数据

Request介绍

我们在介绍Request之前,应当先了解一下Request的继承体系:

我们可以看到HttpServletRequest是基于ServletRequest接口创建的针对Http协议的请求对象接口

我们在使用Request对象时,也常常使用HttpServletRequest接口

Request获得请求数据

Request对象被创建的主要目的就是获得请求数据

我们将根据HTTP请求数据对象的三种格式分开介绍获得请求数据方法

  1. 请求行:

请求行格式:

GET/request-demo/req1?username=zhangsan HTTP/1.1

请求行获得代码:

函数 解释
String getMethod() 获得请求方式(GET/POST)
String getContextPath() 获得虚拟目录(项目访问路径):/request-demo
StringBuffer getRequestURL() 获得URL(统一资源定位符): http://localhost:8080/request-demo/req1
String getRequestURI() 获得URI(统一资源标识符):/request-demo/req1
String getQueryString 获得请求参数(GET方法):username=zhangsan HTTP/1.1
  1. 请求头:

请求头格式:

User-Agent: Mozilla/5.0 Chrome/91.0.4472.106

请求头获得代码:

函数 解释
String getHeader(String name) 根据请求头名称,获得值
  1. 请求体:

请求体格式:

username=superbaby&password=123456

请求体获得代码:

函数 解释
ServletInputStream getInputStream() 获得字节输入流
BufferedReader getReader() 获得字符输入流

最后给出代码展示:

package com.itheima.web.request;

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.BufferedReader;
import java.io.IOException;

/**
 * request 获取请求数据
 */
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // String getMethod():获取请求方式: GET
        String method = req.getMethod();
        System.out.println(method);//GET
        // String getContextPath():获取虚拟目录(项目访问路径):/request-demo
        String contextPath = req.getContextPath();
        System.out.println(contextPath);
        // StringBuffer getRequestURL(): 获取URL(统一资源定位符):http://localhost:8080/request-demo/req1
        StringBuffer url = req.getRequestURL();
        System.out.println(url.toString());
        // String getRequestURI():获取URI(统一资源标识符): /request-demo/req1
        String uri = req.getRequestURI();
        System.out.println(uri);
        // String getQueryString():获取请求参数(GET方式): username=zhangsan
        String queryString = req.getQueryString();
        System.out.println(queryString);


        //------------
        // 获取请求头:user-agent: 浏览器的版本信息
        String agent = req.getHeader("user-agent");
        System.out.println(agent);


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取post 请求体:请求参数

        //1. 获取字符输入流
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值