小滴课堂-学习笔记:javaweb开发核心之Http请求-响应实战

小滴课堂-新版JavaWeb零基础到实战专题课程-2 什么是URL(统⼀资源定位符,获取服务器资源的一种)标准格式: 协议://服务器IP:端⼝/路径1/路径N ? key1=value1 & key2=value2简介:什么是Http超文本传输协议json协议协议是⼀种约定,规定好⼀种信息的格式,如果发送⽅按照这种请求格式发送信息,那么接 收端就要按照这样的格式解析数据,这就是协议 xml协议 http超文本传输协议什么是http协议即超⽂本传送协议(Hypertext Transfer Protocol ),是Web联⽹的基础,也是 阅读详情

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

目录

第1集 HttpServletRequest请求对象讲解

第2集 HttpServletRequest和用户登录表单提交

第3集 HttpServletResponse响应对象讲解

干货文档


第1集 HttpServletRequest请求对象讲解

简介:讲解 HttpServletRequest 请求对象

  • 怎样添加servlet-api源码

  • HttpServletRequest对象

    • 简介:代表浏览器客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中,通过这个对象提供的方法可以获得请求的所有信息。
    • 查看源码和类继承结构

 

  • API测试

    
    
    
    http://127.0.0.1:8080/request?userName=jack&age=11&sport=ball&sport=sleep
    ​
    //客户端请求信息
    System.out.println("应用上下文路径getContextPath="+request.getContextPath()) ;
    System.out.println("客户端发出请求时的完整URL getRequestURL="+request.getRequestURL()) ;
    ​
    System.out.println("请求行中的资源名部分 getRequestURI="+request.getRequestURI()) ;
    ​
    System.out.println("请求行中的参数部分 getQueryString="+request.getQueryString()) ;
    ​
    System.out.println("发出请求的客户机的IP地址 getRemoteAddr="+request.getRemoteAddr()) ;
    ​
    System.out.println("客户机发请求使用的网络端口号 getRemotePort="+request.getRemotePort()) ;
    ​
    //获取请求头
    System.out.println("获取请求头 getHeader(Accept)="+request.getHeader("Accept")) ;
    ​
    //获取请求参数
    System.out.println("客户端请求参数 getParameter="+request.getParameter("userName"));
    ​
    String[] sport = request.getParameterValues("sport");
    ​
    System.out.println("客户端请求参数列表,多个值 getParameterValues="+sport.toString());
    ​
    Map<String,String[]> map = request.getParameterMap();
    ​
    System.out.println("客户端请求参数封装成的map类型 getParameterMap="+map.toString());
    
    
    

     

  • 四大作用域对象:PageContext->【ServletRequest】->HttpSession->ServletContext;​

    
    
    
    //ServletRequest作用域:对像生命周期存在一次请求里面
    //存储java对象到request作用域
    request.setAttribute("name","jack");
    
    

     

 

第2集 HttpServletRequest和用户登录表单提交

简介:讲解 HttpServletRequest和表单提交实战

  • 使用jsp编写form表单提交
  • UserServlet, doPost里面调用doGet



​
  <form action="/user/loin" method="post">
    <div>用户名: <input type="text" name="userName" /> </div>
    <div>密码: <input type="password" name="pwd"/> </div>
    <div> <input type="submit"  value="登录"> </div>
  </form>
​
​
​
   @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
​
        resp.setContentType("text/html;charset=utf-8");
​
        String userName = req.getParameter("userName");
        String pwd = req.getParameter("pwd");
​
        if(userName.equals("xdclass") && pwd.equals("123")){
            resp.getWriter().write("登录成功");
        }else {
            resp.getWriter().write("账号密码错误");
        }
​
​
    }
  • 关于乱码问题



//POST方式遇到中文乱码,如果客户端是以UTF-8字符编码,需要服务器以UTF-8的编码接收数据,
req.setCharacterEncoding("UTF-8");
​
​
//对于以get方式传输的中文数据乱码需要另外一种方式,默认的还是使用ISO8859-1这个字符编码来接收数据
//办法:对接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题
​
String name = request.getParameter("name");//接收数据
name =new String(name.getBytes("ISO8859-1"), "UTF-8")
  • 乱码问题解决的核心:通过字节数组以指定的编码构建字符串,这里指定的编码是根据客户端那边提交数据时使用的字符编码来定

 

 

第3集 HttpServletResponse响应对象讲解

简介:讲解HttpServletResponse知识点

  • HttpServletResponse对象

简介:代表服务器的响应,封装了向客户端发送数据、发送响应头,发送响应状态码的方法

 

  • 常见API

    
    
    
    //设置有多个值的http响应头,参数name表示响应头名称,参数value表示响应头的值,
    //比如:response.addHeader("name", "java");response.addHeader("name", "spring");
    addHeader(String name,String value) 
    ​
    //设置只有一个值的http响应头,参数name表示响应头名称,参数value表示响应头的值
    setHeader(String name,String value) 
    ​
    //设置http状态码
    response.setStatus(200);
    

     

  • getOutputStream():

    • 创建的字节输出流对象,可以按字节形式输出响应正文,直接输出字节数组中的二进制数据,更多用于下载输出文件流
    
    
    
    //设置编码格式为UTF-8
    ​
    response.setCharacterEncoding("UTF-8");
    ​
    //通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码
     response.setHeader("Content-Type","text/html;charset=utf-8");
    ​
    String data = "小滴课堂java高级工程师成长系列";
    ​
    //获取OutputStream输出流
    OutputStream outputStream = response.getOutputStream();
    ​
    //将字符转换成字节数组,指定以UTF-8编码进行转换
    byte[] dataByteArr = data.getBytes("UTF-8");
    ​
    //使用OutputStream流向客户端输出字节数组
    outputStream.write(dataByteArr);
    
    
    

     

  • getWriter():

    • 创建的字符输出流对象,可以按字符形式输出响应正文,只能输出输出字符文本内容,和上面的互斥
    
    
    
    //设置编码格式为UTF-8
    response.setCharacterEncoding("UTF-8");
    ​
    //通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码
    response.setHeader("content-type", "text/html;charset=UTF-8");
    String data = "小滴课堂java高级工程师成长系列";
    ​
    //获取PrintWriter输出流
    PrintWriter out = response.getWriter();
    ​
    //使用PrintWriter流向客户端输出字符
    out.write(data);
    
    
    

     

干货文档

                                                        关注公众号发送:“优快云干货文档”  即可领取

【计算机网络】HTTP协议以及简单的HTTP服务器实现 HTTP协议以及简单的HTTP服务器实现 阅读详情

相关推荐

【项目实战】HTTP协议入门介绍之HTTP请求和响应

HTTP协议即超文本传输协议,是用于从互联网服务器传输超文本到本地浏览器的传送协议,基于TCP/IP协议通信协议来传递HTML 文件、图片文件、查询结果等数据。HTTP协议不涉及数据包(Packet)的传输,主要规定了客户端和服务器之间的通信格式,一般来说默认使用80端口。

奶爸的编程之路,也就一周冷个三天 350

HTTP协议基础-6-HTTP请求(实战)

前面把HTTP 消息和HTTP请求和HTTP响应理论的知识点都学完了,很多概念记不住没关系,我们在实战里面会复习前面学习过的知识点,然后结合实战中的图片来加深对前面知识点的巩固。在实战之前,我们需要搭建一套本地环境,这套环境其实重点是后面cookies和session的学习会用到。还需要安装一个抓包工具,这里就采用fiddler这个免费的工具。 1.本地搭建XAMPP+Phpwind环境 ...

Anthony_tester的博客 2382

GD32单片机引脚复用指南:如何让JTAG接口的PA15/PB3发挥第二功能?

本文详细介绍了GD32F103Cx系列单片机如何通过AFIO模块进行引脚复用,特别是将默认用于JTAG调试接口的PA15、PB3等引脚释放为普通IO或复用功能引脚。文章从原理出发,结合代码实践,讲解了如何配置调试端口重映射,将JTAG引脚安全地转换为GPIO或定时器通道,并提供了常见问题排查与最佳实践,帮助开发者高效利用有限的引脚资源。

nept的博客 807

用简单的方法实战演练搭建http服务器(Windows上)------专为http新手

在之前的博文中, 我陆续说过如何搭建ftp, sftp, tftp服务器, 在本文中, 我们来继续聊如何实战搭建一个http服务器。 http服务器有很多种, 如tomcat,apache等, 然而, 很多新手无法搭建和配置成功, 颇为受挫, 内心不爽。 我保证, 本文搭建http服务器的过程极简化。 搭建http服务器的步骤: 1. 下载

认知 行动 坚持 4万+

树莓派4B保姆级教程:从零配置Python虚拟环境到PySide2开发全流程(含避坑指南)

本文提供树莓派4B上配置Python虚拟环境及PySide2 GUI开发的完整教程。针对armv7l架构的特殊性,详细讲解了从系统准备、虚拟环境创建到PySide2安装的避坑指南,并重点解决了跨平台UI文件处理等常见难题,帮助开发者构建稳定高效的开发环境。

9q8w7e6r5的博客 822

嵌入式系统(一):鸿蒙系统

本文为期末复习笔记,内容仅供参考???? 鸿蒙系统是一款面向万物互联时代的、全新的分布式操作系统 鸿蒙提出了基于同一套系统能力、适配多种终端形态的分布式理念 提供全场景(移动办公、运动健康、社交通信、指挥出行、媒体娱乐等)业务能力 华为是OpenHarmony开源项目的共建者、也是共享者之一 鸿蒙技术特性 分布式设计 一次开发,多端部署 系统与硬件解耦,弹性部署 三大分布式能力 分布式软总线 设备间互联互通提供分布式通信能力 从手动发现,进化成自发现 传输高带宽关键技术-极简协议 分布式数据管

weixin_45608532的博客 4306

HTTP案例学习:用户登录&验证码

本笔记包括两个案例,分别是用户登录、验证码。 案例:用户登录接着 《HTTP:超文本传输协议》 、 《HTTP请求信息数据 - Request》 的学习,现在记录一份案例学习。 用户需求 编写 login.html 登录页面,并且有 username & password 两个输入框 使用 Druid 数据库连接池技术,操作 MySQL,day14数据库中user表...

喜欢前端的后端 MelodyJerry 2492

覆冰监测系统服务器,基于分布式光纤振动传感的电缆覆冰舞动监测系统

监测意义我国高压输电网络已经形成了全国联网的格局,总规模世界第一。2018年底,全国发电装机容量已达19.0亿千瓦,全国 220kV及以上输电线路回路长度超过71万公里。我国电力能源集中在西北,而用户则集中在华东华南,所以高压输电网络的特点是长距离,大跨度,途径的自然环境多种多样。在高湿高寒的恶劣环境中,输电线非常容易发生覆冰舞动事故,由于覆冰形成的规则的非圆断面的缆线在风的激励下形成谐振,造成低...

weixin_32566055的博客 1547

吹爆这份HTTP顶级教程,从入门到核心实战,技术总监都拍手叫好

认识 SSL/TLSHTTPS 的内核是 HTTP基础知识是前端一面必问的,如果你在基础知识这一块翻车了,就算你框架玩的再6,webpack、git、node学习的再好也无济于事,因为对方就不会再给你展示的机会,千万不要因为基础错过了自己心怡的公司。前端的基础知识杂且多,并不是理解就ok了,有些是真的要去记。当然了我们是牛x的前端工程师,每天像背英语单词一样去背知识点就没必要了,只要平时工作中多注意总结,面试前端刷下题目就可以了。什么?你问面试题资料在哪里,这不是就在你眼前吗(滑稽。

2401_84150107的博客 949

MLC-LLM框架在安卓设备上的模型编译与部署全流程解析

本文详细解析了如何利用MLC-LLM框架在安卓设备上编译与部署大语言模型。从环境搭建、模型获取与量化编译,到最终的安卓应用打包与调试,提供了完整的实战流程。重点介绍了如何通过MLC-LLM将大型模型优化为适合移动端运行的格式,实现本地、低延迟、隐私安全的AI应用部署。

weixin_29251337的博客 475

Vue 实现华视身份证读卡器功能

在www.downcc.com下载“华视cvr100驱动”安装程序; 华视电子官网有相应的文档说明和程序下载 一、服务安装 选择安装目录: 启动读卡服务: 安装成功会有如图所示: 注意事项: 安装开发包必须使用管理员权限,因为windows服务和读卡器设备驱动程序均需要管理员权限,否则会安装失败。 win10需要修改组策略才有管理员权限。 二、服务的使用 打开浏览器,输入地址http://127.0.0.1:19196/mainpage,回车 点击openDevice: 点.

zyqgt960812的博客 6501

小滴课堂-新版JavaWeb零基础到实战专题课程-1

简介:讲解javaweb课程介绍和适合人群课程介绍 学Javaweb可以做什么和发展趋势不要说没有实战!!!! 前面先学怎么用,后续会有项目实战,跟着老师的步骤走,然后再跑课程学后水平项目体验适合人群学习形式github地址:GitHub - jackxy/javaweb-servlet5.0: 使用servlet5.0开发javaweb+小滴课堂开发者论坛实战 简介:javaweb课程目录浏览和课程服务 简介:介绍javase、javaweb、javaee联系javase: j

xdclass888的博客 397

《测绘综合能力》——大地测量

《测绘综合能力》大地测量 部分重要(常考)知识点(精简版)。

C_xxy's blog 803

小滴课堂-新版JavaWeb零基础到实战专题课程-7

简介:讲解 HttpServletRequest 请求对象怎样添加servlet-api源码下载:Apache Tomcat® - Apache Tomcat 9 Software Downloads ,选择:Source Code Distribution添加:解压包,然后idea选择chose source code,选择java这层包就可以HttpServletRequest对象API测试 四大作用域对象:PageContext->【ServletRequest】->HttpSession->Se

xdclass888的博客 203

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

小滴课堂-学习笔记:javaweb开发核心之玩转Servlet4.0

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 什么是Servlet-开发你的第一个动态网站 第2集 Servlet里面的doPost-doGet和路径匹配讲解 第3集 【原理面试题】Servlet生命周期你知道多少 第4集 新版Servlet3.0~5.0和旧版配置的区别你知道吗 干货文档 第1集 什么是Servlet-开发你的第一个动态网站 简介:什么是Servlet,开发第一个动态网站 什么是Servlet .

dev666的博客 298

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

小滴课堂-新版JavaWeb零基础到实战专题课程-5

简介:什么是Servlet,开发第一个动态网站什么是Servlet简介:是JavaServlet的简称,用Java编写的运行在Web服务器或应用服务器上的程序,具有独立于平台和协议的特性, 主要功能在于交互式地浏览和生成动态Web内容作用:接收用户通过浏览器传来的表单数据,或者读取数据库信息返回给浏览器查看,创建动态网页接口路径:package javax.servlet1)创建Class,继承HttpServlet2) 重写doGet方法,返回HTML内容 3) 配置web.xml 4)启动tom

xdclass888的博客 182

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Http协议和解析实战

维护和使用,但是会依赖网络环境,UI动画等需要网络加载快,使用才不会卡顿。Cookie: 表示服务端给客户端传的http请求状态,也是多个key=value形式组合,比如登录后的令牌等(后续请求会把Cookie带过去,服务端就会看http这个请求头的Cookie是否是正确的,是的话才给访问对应的资源)1、C-S架构:客户机-服务器,简单点就是需要下载的软件,相关资源(图片、视频等会比较流畅),但是也缺少通用性(各种手机兼容),系统维护性,升级需要重新设计和开发,增加了维护和管理的难度。

xiaojieceo的博客 368

HTTP协议编程实战(二)实战二

r\n表示请求头部已经结束了,HTTP/1.1是版本号,200 ok表示请求响应成功。waitForReadyRead()里面参数是毫秒,失败返回false;使用析构函数主要是在里面关闭套接字(socket);关闭的话就在前面加/

m0_62909934的博客 527

编程实战:自己编写HTTP服务器(系列2:请求)

编程实战:自己编写HTTP服务器(系列2:请求)

编程之道在明明德在亲民在止于至善 723

自主实现HTTP

本项目实现的是一个HTTP服务器,项目中将会通过基本的网络套接字读取客户端发来的HTTP请求并进行分析,最终构建HTTP响应并返回给客户端。HTTP在网络应用层中的地位是不可撼动的,无论是移动端还是PC端浏览器,HTTP无疑是打开互联网应用窗口的重要协议。该项目采用C/S(BS)模型,实现支持较为小型应用的http服务。做完项目后可以明显的对打开浏览器上网、关闭浏览器中,很多技术上细节的实现这样的概况有一定的了解。

piaozii的博客 1146

【项目实战】自主实现 HTTP 项目(四)——处理请求和构建相应

在前面的章程之中,我们学习到了如何来进行读取向客户端发来的请求以及提取这些请求当中的有效信息进行分析,而本篇我们将介绍的是如何来对请求的客户端构建相应的响应。这里我们可以看一下一般网站是如何对我们的客户端发来相应的,我们这里以百度为例。

2021级大一程序白一枚,记录学习的每一步的脚印 1150

项目实战-Http服务器

目录 从main函数开始 初始化函数startup(&port) 请求处理accept_request(&client_sock) 请求行的处理 本地处理 测试结果 服务器功能测试 使用webbench测试 Tinyhttpd是一个小型的http服务器实现,代码仅仅500行,我在大致过了一下unix环境编程之后就想找一个web服务器来练练手,这个就作为俺第一个web方向的小项目吧。 看完这个代码后准备研究一下muduo库、Nginx和Redis,上.

Jiangtagong的博客 430

HTTP协议解析与实战

HTTP(HyperText Transfer Protocol)超文本传输协议,它是用于从服务器传输超文本到本地浏览器的一种传输协议。按照七层传输协议,HTTP位于应用层协议,在TCP协议之上。如下图所示。

恐龙弟旺仔的博客 916

HTTP攻击实战以及防御手段

http攻击实战以及简略的防御手段

爱吃仡坨的Blog 1355

HTTP协议请求实战-POST请求

如何使用爬虫通过POST表单传递消息,我们要构造POST请求,实现思路: 设置好URL网站 构建表单数据,并使用urllib.parse.urlencode对数据进行编码处理 创建Request对象,参数包括URL地址和要传递的数据 使用add_header()添加头信息,模拟浏览器进行爬取 使用urllib.request.urlopen()打开对应的Request,完成信息的传递 ...

小菜鸟的博客 1071
上一篇: 小滴课堂-学习笔记:javaweb开发核心之应用上下文和JSP核心知识
下一篇: 小滴课堂-学习笔记: Javaweb核心里面的转发-重定向和EL表达式你知道多少
dev666
博客等级 码龄9年 100粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值