当前位置: 首页 > 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输出如下

 

http://www.lryc.cn/news/40445.html

相关文章:

  • JMeter压测文件上传接口和中文乱码
  • CSRF漏洞复现
  • Google Colab导入GitHub python项目进行运行
  • Qss样式表语法
  • 「Python 基础」异步 I/O 编程
  • 通配符的匹配很全面, 但无法找到元素 ‘tx:advice‘ 的声明
  • 响应式编程详解,带你熟悉Reactor响应式编程
  • 踩坑篇之WebSocket实现类中无法使用@Autowired注入对象
  • QT CTK插件框架 (一 下载编译)
  • 【Java版oj】day10 井字棋、密码强度等级
  • JavaScript的事件传播机制
  • 队列的定义及基本操作实现(链式)
  • 集成方法!
  • 20年程序员生涯,读了200多本技术书,挑了几本精华好书分享给大家
  • C++ 手写一个WebServer
  • Elasticsearch 简介与安装
  • Qt5.12实战之QByteArray与字符指针及字符串转换
  • 二、ElasticSearch基础语法
  • Yolov8详解与实战
  • 多线程案例——阻塞队列
  • 学习优秀博文(【国产MCU移植】手把手教你使用RT-Thread制作GD32系列BSP)有感 | 文末赠书5本
  • 写用例写的焦头烂额?看看摸鱼5年的老点工是怎么写的...
  • 基于深度学习的鸟类检测识别系统(含UI界面,Python代码)
  • 零基础搭建Tomcat集群(超详细)
  • 机器学习自学笔记——聚类
  • 注意下C语言整形提升
  • Go panic的学习
  • 讲解Linux中samba理论讲解及Linux共享访问
  • 【C++笔试强训】第三十二天
  • OpenAI GPT-4震撼发布:多模态大模型