当前位置: 首页 > news >正文

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

在写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输出如下

 

相关文章:

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

在写servlet时需要实现5个方法&#xff0c;在一个service方法里面有两个参数request和response。 浏览器向服务器发送请求会发送HTTP的请求数据——字符串&#xff0c;这些字符串会被Tomcat所解析&#xff0c;然后这些请求数据会被放到一个对象(request)里面保存。 相应的Tom…...

JMeter压测文件上传接口和中文乱码

一、压测文件上传接口 新建测试计划&#xff0c;然后添加需要的元件。 1、添加HTTP信息头管理器 可以在测试计划中添加&#xff0c;也可以在线程组里面添加。 我的接口使用到 token信息。这里在测试计划中添加。 2、添加线程组 上图解释&#xff1a;会在 2秒钟之内启动起来 5…...

CSRF漏洞复现

目录标题原理如何实现和xss区别危害CSRF实战&#xff08;pikachu&#xff09;dvwa靶场CSRF&#xff08;Cross Site Request Forgery&#xff09;。跨站请求伪造原理 攻击者会伪造一个请求&#xff08;一般是一个链接&#xff09;&#xff0c;然后让用户去点击&#xff0c;然后…...

Google Colab导入GitHub python项目进行运行

本文介绍包含 ipynb后缀文件的github项目&#xff0c;导入到GitHub上进行运行的方法。 导入项目 Colab是需要梯子的。 访问网址&#xff1a;https://colab.research.google.com 输入github网之后回车&#xff0c;下面的内容是从github上自动获取的。 选择项目要打开的ipynb文…...

Qss样式表语法

QSS样式表语法 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;QSS样式学习 &#x1f448;文章目录QSS样式表语法[toc]概述一、样式规则二、选择器类型三、子控件四、伪状态五、样式表冲突解决六、级联七、继承八、命名空间中的控件概述 Qt样式表的概念…...

「Python 基础」异步 I/O 编程

I/O 密集型应用程序大大提升系统多任务处理能力&#xff1b; 异步 I/O 模型 一个消息循环&#xff0c;主线程在消息循环中不断重复 读取消息-处理消息&#xff1b; # 获取线程池 loop get_event_loop() while True:# 接收事件消息event loop.get_event()# 处理事件消息pro…...

通配符的匹配很全面, 但无法找到元素 ‘tx:advice‘ 的声明

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 通配符的匹配很全面, 但无法找到元素 ‘tx:advice’ 的声明 错误原因&#xff1a; xmlns和xsi:schemaLocation未书写约束或者书写错误 正确书写 <beans xmlns:tx&q…...

响应式编程详解,带你熟悉Reactor响应式编程

文章目录一、什么是响应式编程1、Java的流和响应式流2、Java中响应式的使用3、Reactor中响应式流的基本接口4、Reactor中响应式接口的基本使用二、初始Reactor1、Flux和Mono的基本介绍2、引入Reactor依赖3、响应式类型的创建4、响应式类型的组合&#xff08;1&#xff09;使用m…...

踩坑篇之WebSocket实现类中无法使用@Autowired注入对象

大家好&#xff0c;我是小简&#xff0c;今天我又大意了&#xff0c;在WebSocket这个类上踩坑了。 接下来我讲讲我踩坑的经历吧&#xff01; package cn.donglifeng.shop.socket.endpoin;import cn.donglifeng.shop.common.context.SpringBeanContext; import cn.donglifeng.s…...

QT CTK插件框架 (一 下载编译)

CTK 为支持生物医学图像计算的公共开发包&#xff0c;其全称为 Common Toolkit。为医学成像提供一组统一的基本功能&#xff1b;促进代码和数据的交互及结合&#xff1b;避免重复开发&#xff1b;在工具包&#xff08;医学成像&#xff09;范围内不断扩展到新任务&#xff0c;而…...

【Java版oj】day10 井字棋、密码强度等级

目录 一、井字棋 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 二、密码强度等级 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 一、井字棋 &a…...

JavaScript的事件传播机制

你在学习和编写JavaScript时可能听说过事件冒泡&#xff08;event bubbling&#xff09;。它会发生在多个元素存在嵌套关系&#xff0c;并且这些元素都注册了同一事件(例如click)的监听器时。 但是事件冒泡只是事件机制的一部分。它经常与事件捕获(event capturing)和事件传播…...

队列的定义及基本操作实现(链式)

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️数据结构与算法】 学习名言&#xff1a;天子重英豪&#xff0c;文章教儿曹。万般皆下品&#xff0c;惟有读书高 系列文章目录 第一章 ❤️ 学前知识 第二章 ❤️ 单向链表 第三章 ❤️ 递归 文章目录…...

集成方法!

目录 关注降低variance,选择bias较小的基学习器 Bagging Stacking Random Forest 关注降低bias,选择variance较小的基学习器 Adaboost Boosting 关注降低variance,选择bias较小的基学习器 Bagging 给定m个样本的数据集&#xff0c;利用有放回的随机采样法&#xff0c;得…...

20年程序员生涯,读了200多本技术书,挑了几本精华好书分享给大家

不知不觉已经又走过了20个年头了&#xff0c;今年已经44了&#xff0c;虽然我已经退休在家&#xff0c;但一直都保持着读书的习惯&#xff0c;我每年平均要读10本技术书籍&#xff0c;保持不让自己的技术落伍。 这些年读的技术书不下200本&#xff0c;很多好书我都会保存在家&a…...

C++ 手写一个WebServer

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

Elasticsearch 简介与安装

简介 Elasticsearch 是一个开源的搜索引擎&#xff0c;建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库—​无论是开源还是私有。 但是 Lucene 仅仅只是一个库。为了充分发挥其功能&#xff0c;你需要使用 Java…...

Qt5.12实战之QByteArray与字符指针及字符串转换

示例源码:#include <QCoreApplication> #include <QDebug> #include <QTextStream> static QTextStream cout (stdout,QIODevice::WriteOnly); #include <iostream> #include <QtGlobal> #include <QByteArray>void test() {qDebug() <…...

二、ElasticSearch基础语法

目录一、简单了解ik分词器(分词效果)1.standard(单字分词器&#xff0c;es默认分词器)2.ik_smart分词(粗粒度的拆分)3.ik_max_word分词器&#xff08;最细粒度拆分&#xff09;二、指定默认分词器1.为索引指定默认分词器三、ES操作数据1.概述2.创建索引3.查询索引4.删除索引5.添…...

Yolov8详解与实战

文章目录摘要模型详解C2F模块Losshead部分模型实战训练COCO数据集下载数据集COCO转yolo格式数据集&#xff08;适用V4&#xff0c;V5&#xff0c;V6&#xff0c;V7&#xff0c;V8&#xff09;配置yolov8环境训练测试训练自定义数据集Labelme数据集摘要 YOLOv8 是 ultralytics …...

【图像去噪】基于自适应掩码和稀疏表示的自监督图像去噪研究(含PSNR)附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。&#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f3…...

Logseq AI助手插件:在知识管理笔记中集成ChatGPT智能写作与编辑

1. 项目概述&#xff1a;在Logseq中引入你的AI副驾驶 如果你和我一样&#xff0c;是个重度依赖Logseq来构建个人知识库的笔记爱好者&#xff0c;同时又对AI辅助写作和思考的潜力充满好奇&#xff0c;那么你肯定不止一次想过&#xff1a;要是能把ChatGPT的能力无缝集成到Logseq…...

ECharts地图可视化踩坑实录:从GeoJSON数据获取到本地开发跨域问题的全链路解决

ECharts地图可视化实战指南&#xff1a;从数据获取到跨域问题解决的全流程解析 地图可视化是现代数据展示的重要手段之一&#xff0c;而ECharts作为国内最流行的可视化库之一&#xff0c;其地图功能被广泛应用于各类项目中。但在实际开发过程中&#xff0c;从数据获取到最终呈现…...

026环形链表II

环形链表II 题目链接&#xff1a;https://leetcode.cn/problems/linked-list-cycle-ii/description/?envTypestudy-plan-v2&envIdtop-100-liked 我的解答&#xff1a; public ListNode detectCycle(ListNode head) {ListNode slowhead, fasthead;while(fast!null&&…...

从零打造机甲战士:我的STM32 RoboMaster开发实战入门

1. 从玩具到战士&#xff1a;为什么选择STM32开发RoboMaster机器人 第一次看到RoboMaster比赛视频时&#xff0c;我被那些灵活移动、精准射击的机甲深深震撼。作为一个电子爱好者&#xff0c;我立刻萌生了自己打造参赛机器人的想法。但在选择开发平台时&#xff0c;我遇到了所有…...

强力揭秘:Windows热键冲突诊断神器,一键揪出“热键小偷“

强力揭秘&#xff1a;Windows热键冲突诊断神器&#xff0c;一键揪出"热键小偷" 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-d…...

如何快速提升游戏体验:Starward开源启动器完整使用指南

如何快速提升游戏体验&#xff1a;Starward开源启动器完整使用指南 【免费下载链接】Starward Game Launcher for miHoYo - 米家游戏启动器 项目地址: https://gitcode.com/gh_mirrors/st/Starward Starward是一款专为米哈游游戏玩家设计的免费开源第三方启动器&#xf…...

LocalAI私有化部署指南:兼容OpenAI API的本地AI引擎实战

1. 项目概述&#xff1a;LocalAI&#xff0c;你的私有化AI引擎 如果你和我一样&#xff0c;对把AI模型部署到自己的硬件上这件事充满热情&#xff0c;同时又对公有云API的成本、延迟和隐私问题感到头疼&#xff0c;那么LocalAI这个项目绝对值得你花时间深入研究。简单来说&…...

手把手教你为Rockchip Buildroot添加自定义软件包(附CMake/Makefile实例)

手把手教你为Rockchip Buildroot添加自定义软件包&#xff08;附CMake/Makefile实例&#xff09; 在嵌入式Linux开发中&#xff0c;Buildroot因其高度定制化和轻量级特性成为Rockchip平台的热门选择。但当你需要集成自己的驱动程序或应用程序时&#xff0c;官方文档往往显得过于…...

OpenAI API 工程化落地:稳定可控的生产级接入指南

1. 这不是“调用一个接口”那么简单&#xff1a;一个真实从业者眼中的 OpenAI API 入门真相 我带过十几支从零起步的业务团队落地 AI 功能&#xff0c;见过太多人把 OpenAI API 当成“复制粘贴几行代码就能上线的魔法按钮”。结果呢&#xff1f;第一天跑通 gpt-3.5-turbo 返回…...