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

java服务器端开发-servlet:202、Servlet执行过程介绍:get请求与post请求、编码相关等

声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!

文章目录

4、get请求与post请求

(1)哪一些情况下,浏览器会发送get请求?

(2)哪一些情况下,浏览器会发送post请求?

(3)get请求的特点

(4)post请求的特点

5、如何获得请求参数值?

6、编码相关的问题

(1)servlet如何输出中文?

a,乱码问题产生的原因

b,解决方式

(2)表单有中文参数,如何处理?

a,乱码问题产生的原因

b,解决方式:

7、常识: 编码、解码、unicode编码

8、练习:

9、初学-注意点:


 

4、get请求与post请求

(1)哪一些情况下,浏览器会发送get请求?

a,直接在浏览器地址栏输入某个地址。

b,点击链接

c,表单默认的提交方式

(2)哪一些情况下,浏览器会发送post请求?

a,设置表单method="post"。

(3)get请求的特点

a,请求参数会添加到请求资源路径的后面,只能添加

少量的参数(因为请求行只有一行,大约只能存放2K

左右的数据)。

b,请求参数会显示在浏览器地址栏(路由器会记录

请求地址)。

(4)post请求的特点

a,请求参数添加到实体内容里面,可以添加大量的

参数。

b,相对安全,但是,post请求不会对请求参数进行

加密处理(可以使用https协议来保证数据安全)。

5、如何获得请求参数值?

1) String request.getParameter(String paramName);

注意:如果paraName对应的值不存在,返回null。

2) String[] request.getParameterValues(String paramName);

当有多个参数名相同的时候,用该方法。

6、编码相关的问题

(1)servlet如何输出中文?

a,乱码问题产生的原因

默认情况下,out.println会使用"iso-8859-1"

来进行编码。

b,解决方式

response.setContentType("text/html;charset=utf-8");

注意,编码格式只要支持中文即可,比如,还可以设置为 gbk。

这行代码的作用有两个:

作用1:生成一个消息头(content-type),告诉

浏览器,服务器返回的数据类型和编码格式

作用2:也设置了out.println在输出时使用的编码格式。

(2)表单有中文参数,如何处理?

注意:

这里说的是表单有中文参数,表单post/get提交方式的编码处理问题。

初学者容易,直接写一个类似带中文的地址,在浏览器上进行测试,如

http://localhost:8080/web02/hello?name=yyh_帅气华

这样就不对了,说的不是一回事。

a,乱码问题产生的原因

当表单提交时,浏览器会对表单中的中文使用

浏览器打开表单所在的页面时的编码格式进行编码。

b,解决方式:

方式一:

step1,要保证表单所在的页面按照指定的编码格式打开。

<meta http-equiv="content-type"

content="text/html;charset=utf-8">

step2,让服务器按照指定的编码格式进行解码。

 request.setCharacterEncoding("utf-8");

只对post请求有效。

方式二:

step1,同上。

step2,

name = new String(

name.getBytes("iso-8859-1"),"utf-8");

7、常识: 编码、解码、unicode编码

a,java语言在内存当中以unicode编码格式(字符集)

来保存一个字符。

b,编码:将unicode编码格式对应的字节数组转换成

某种本地编码格式(gbk,utf-8,gb2312)对应的字节

数组。

c,解码:将某种本地编码格式对应的字节数组转换成

unicode编码格式对应的字节数组。

8、练习:

9、初学-注意

  1. 修改Servlet里面代码,无需重启tomact,但要重新部署
  2. 修改项目名:项目名,Properties,MyEclipse,Web,Web Context-root,“/当前项目名”
  3. 测试地址,多在浏览器上尝试。不要在MyEclipse上
  4. Open With,System Editor,即会打开“光影看图”等软件【方便查看编辑、复制粘贴】
  5. Web项目中:包名里面有汉字和下划线,并没有报错

相关文章:

  • yara 分析器
  • 数据结构(三) -- 栈
  • 神策数据发布融媒行业版,驱动媒体深度融合转型
  • 解决安装GDAL库报错问题(Windos)
  • 数据逻辑校验机制
  • Linux关于jar包的基本操作
  • 用什么软件可以提高视频批量剪辑的效率
  • 搜索替换 csv 文件中的文本
  • DBCO-PEG-Casein/Ovalbumin/Lectins点击化学DBCO偶联络蛋白/卵清蛋白/凝集素
  • 【JetPack Compose】声明式UI 、组合、重组
  • jquary样式操作、动画
  • Apollo配置语法——Apollo配置List和Map以及组合应用——非常详细
  • ESP8266-Arduino编程实例-MAX30102脉搏和心率监测传感器驱动
  • Connor学Android - Bitmap的加载和缓存策略
  • 最新Unity如何打包发布到Android
  • 2019年如何成为全栈工程师?
  • Flannel解读
  • golang中接口赋值与方法集
  • JavaScript函数式编程(一)
  • js面向对象
  • js算法-归并排序(merge_sort)
  • Nacos系列:Nacos的Java SDK使用
  • Next.js之基础概念(二)
  • Objective-C 中关联引用的概念
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • SpiderData 2019年2月25日 DApp数据排行榜
  • SQL 难点解决:记录的引用
  • STAR法则
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • uva 10370 Above Average
  • vue 配置sass、scss全局变量
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 从tcpdump抓包看TCP/IP协议
  • 复杂数据处理
  • 计算机在识别图像时“看到”了什么?
  • 离散点最小(凸)包围边界查找
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 第二十章:异步和文件I/O.(二十三)
  • 进程与线程(三)——进程/线程间通信
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #单片机(TB6600驱动42步进电机)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (十一)c52学习之旅-动态数码管
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)3D模板阴影原理
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Oracle存储过程编写经验和优化措施
  • (转载)从 Java 代码到 Java 堆
  • .“空心村”成因分析及解决对策122344
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .Net Winform开发笔记(一)