JavaWeb——Request(请求)和Response(响应)介绍

news/2025/1/11 0:45:12/

在写servlet时需要实现5个方法,在一个service方法里面有两个参数request和response。

浏览器向服务器发送请求会发送HTTP的请求数据——字符串,这些字符串会被Tomcat所解析,然后这些请求数据会被放到一个对象(request)里面保存。

相应的Tomcat也会发送一些响应数据给浏览器

Request——获取请求数据(比如用户名和密码等等)

Response——设置响应数据

入门案例实现

创建一个如下的Servlet对象

@WebServlet("/demo99")
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {//使用request对象 获取请求数据String name=request.getParameter("name");//使用response对象 设置相应数据response.setHeader("content-type","text/html;charset=utf-8");response.getWriter().write("<h1>"+name+",欢迎您!</h1>");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException , IOException{System.out.println("Post....");}
}

通过request里面的getParameter方法获取请求参数,比如//url?name=zhangsan 这种键值对的形式通过name这个键可以获取参数的值

通过response.setHeadr设置响应头。

如下通过在url中加键值对的方式获取数据并设置相应数据

到此,完成了简易的客户端浏览器和服务器的交互过程。

Resquest相关

Request继承体系

 Tomcat解析了请求数据,因此由Tomcat来提供Resquest的实现类,resquest是由Tomcat创建。

 Request获取请求数据

请求数据分为3部分

1.请求行

请求行的组成:请求方式/访问路径?参数 请求协议

2.请求头

3.请求体(只有post请求才有请求体)

post请求会把表单参数放到请求体里面封装提交

请求体数据的获取,request对象使用了流的方式

如果是纯文本使用字符输入流

用到文件上传比如图片之类就要用到字节输入流

 对上面的6个方法进行简单的演示

/*** request 获取请求数据*/
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// String getMethod():获取请求方式: GETString method = req.getMethod();System.out.println(method);//GET// String getContextPath():获取虚拟目录(项目访问路径):/request-demoString contextPath = req.getContextPath();System.out.println(contextPath);// StringBuffer getRequestURL(): 获取URL(统一资源定位符):http://localhost:8080/request-demo/req1StringBuffer url = req.getRequestURL();System.out.println(url.toString());// String getRequestURI():获取URI(统一资源标识符): /request-demo/req1String uri = req.getRequestURI();System.out.println(uri);// String getQueryString():获取请求参数(GET方式): username=zhangsanString queryString = req.getQueryString();System.out.println(queryString);//------------// 获取请求头:user-agent: 浏览器的版本信息String agent = req.getHeader("user-agent");System.out.println(agent);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取post 请求体:请求参数//1. 获取字符输入流BufferedReader br = req.getReader();//2. 读取数据String line = br.readLine();System.out.println(line);}
}

输出如下(成功输出)

 获取请求体

准备一个html页面,准备表单使用post请求提交

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="/request-demo/req1" method="post"><input type="text" name="username"><br><input type="password" name="password"><br><input type="checkbox" name="hobby" value="1"> 游泳<input type="checkbox" name="hobby" value="2"> 爬山 <br><input type="submit">
</form>

post输出如下

 


http://www.ppmy.cn/news/32622.html

相关文章

女子举重问题

一、问题的描述 问题及要求 1、搜集各个级别世界女子举重比赛的实际数据。分别建立女子举重比赛总成绩的线性模型、幂函数模型、幂函数改进模型&#xff0c;并最终建立总冠军评选模型。 应用以上模型对最近举行的一届奥运会女子举重比赛总成绩进行排名&#xff0c;并对模型及…

网格搜索多个监督学习模型上的超参数,包括神经网络、随机森林和树集合模型(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 我们在选择超参数有两个途径&#xff1a;1)凭经验&#xff1b;2)选择不同大小的参数&#xff0c;带入到模型中&#xff0c;挑选…

exe反编译为.py文件

介绍公司以前的一个exe包&#xff0c;我们需要查看里面python源码&#xff0c;但是以前的py源码文件找不到&#xff0c;所以只能反编译&#xff0c;介绍一下反编译的过程。首先准备&#xff1a;pyinstxtractor.py这个文件&#xff0c;网上很多&#xff0c;自己下载准备查看二进…

金三银四,我猜你需要这套网络安全工程师面试题合集

2023年已经开始了&#xff0c;先来灵魂三连问&#xff0c;年初定的目标是多少&#xff1f;薪资能涨吗&#xff1f;女朋友能找到吗&#xff1f; 好了&#xff0c;不扎大家的心了&#xff0c;接下来进入正文。 由于我之前写了不少网络安全技术相关的文章和回答&#xff0c;不少…

【Linux】网络编程套接字(下)

&#x1f387;Linux&#xff1a; 博客主页&#xff1a;一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 看似不起波澜的日复一日&#xff0c;一定会在某一天让你看见坚持…

【YOLO】YOLOv8训练自定义数据集(4种方式)

YOLOv8 出来一段时间了&#xff0c;继承了分类、检测、分割&#xff0c;本文主要实现自定义的数据集&#xff0c;使用 YOLOV8 进行检测模型的训练和使用 YOLOv8 此次将所有的配置参数全部解耦到配置文件 default.yaml&#xff0c;不再类似于 YOLOv5&#xff0c;一部分在配置文件…

C++ 手写一个WebServer

文章目录 前言一、WebServer的原理刨析二、HTTP协议基础三、C++代码实战四、运行测试前言 本文由:我不会画饼呀 提供建议 大家如果有什么想看的文章(想了解的知识点),都可以在本专栏文章底部评论,或者私信我,在有能力的前提下,我都会尽量给大家写出来,供大家学习参考 …

【JavaEE进阶篇2】spring基于注解开发1

在上一篇文章当中&#xff0c;我们提到了怎样使用spring来创建一个bean对象。下面&#xff0c;我们继续来研究一下&#xff0c;更加优胜的开发方式&#xff1a;基于注解开发【JavaEE进阶篇1】认识Spring、认识IoC、使用spring创建对象_革凡成圣211的博客-CSDN博客springIoc、使…