httpservletrequest 设置请求头_请求和常用对象

ce7f8c48c974f2c4ebcf7f3d928315db.png

## 一、主要内容

![](https://raw.githubusercontent.com/Cushier/picture-java/master/middle/20190712150414.png)

## 二、核心目标

理解几个常用对象的意义和作用

掌握几种请求的发出方式

掌握数据的发送和接收方式

掌握跳转方式

掌握乱码的解决

## 三、请求的方式

要访问服务器首先需要由客户端主动发出请求,在实际的操作中,我们可以通过多种方式向服务器发起请求。根据不同的场景需求,使用不同的请求方式可以达到不同的效果。

### 3.1 地址栏输入

在浏览器地址栏直接输入要访问的地址即可,此种方式可以看做是访问服务器的起始操作。

http://ip:port/path

### 3.2 超链接

使用超链接也可以向服务器发出请求

```html

<a href="百度一下,你就知道">百度</a>

```

### 3.3 Form表单

当需要向服务器发送请求,并且传输一些用户输入的数据时,我们优先选择form表单的方式发起请求。

![](https://raw.githubusercontent.com/Cushier/picture/master/middle/20190312154014.png)

### 3.4 ajax

通过ajax发起的请求,属于异步请求,能实现局部刷新的效果,是一种比较常用的请求方式。

通过jQuery中的ajax(),get(),post(),getJSON()等方法都能发送请求

### 3.5 请求转发

通过服务器内部将请求进行一次转发,可以请求到其他资源(后面讲)

### 3.6 重定向

服务器通过给定一个新资源的地址,响应回客户端后,客户端自动再次发送一个请求到新资源的地址处。(后面讲)

## 四、HttpServletRequest 对象

### 4.1 介绍

HttpServletRequest 对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service()方法中形参接收的是 HttpServletRequest 接口的实例化对象,表示该对象主要应用在 HTTP 协议上,该对象是由 Tomcat 封装好传递过来。

HttpServletRequest 是 ServletRequest 的子接口,ServletRequest 只有一个子接口,就是 HttpServletRequest。既然只有一个子接口为什么不将两个合并为一个?

从长远上讲:现在主要用的协议是 HTTP 协议,但以后可能出现更多新的协议。若以后想要支持这种新协议,只需要直接继承 ServletRequest 接口就行了。

在 HttpServletRequest 接口中,定义的方法很多,但都是围绕接收客户端参数的。但是怎么拿到该对象呢?不需要,直接在 Service 方法中由容器传入过来,而我们需要做的就是取出对象中的数据,进行分析、处理。

### 4.2 常用形式

#### 1) 常用方法

| 常用方法 | 描述 |

| ---------------- | ------------------------------------------ |

| getRequestURL() | 获取客户端发出的请求时的完整 URL |

| getRequestURI() | 获取请求行中的资源名称部分(项目名称开始) |

| getQueryString() | 获取请求行中的参数部分 |

| getMethod() | 获取客户端请求方式 |

| getProtocol() | 获取 HTTP 版本号 |

| getContextPath() | 获取 webapp 名字 |

#### 2) 获取请求头

| 方法 | 描述 |

| -------------------------------------- | ------------------------ |

| getHeader(String) | 获取单个请求头内容 |

| Enumeration<String> getHeaderNames() | 获取所有的请求头名称集合 |

#### 3) 获取客户端请求参数(客户端提交的数据)

| 方法 | 描述 |

| ------------------------------- | ----------------------------------------------------- |

| getParameter(name) | 获取指定名称的参数 |

| getParameterValues(String name) | 获取指定名称参数的所有值 |

| getParameterNames() | 获取一个包含请求消息中的所有参数名的 Enumeration 对象 |

| getParameterMap() | 返回一个保存了请求消息中的所有参数名称和值的 Map 对象 |

### 4.3 请求乱码解决

![](https://raw.githubusercontent.com/Cushier/picture-java/master/middle/20190712151734.png)

由于现在的 request 属于接收客户端的参数,所以必然有其默认的语言编码,主要是由于在解析过程中默认使用的编码方式为 ISO-8859-1(此编码不支持中文),所以解析时一定会出现乱码。要想解决这种乱码问题,需要设置 request 中的编码方式,告诉服务器以何种方式来解析数据。或者在接收到乱码数据以后,再通过相应的编码格式还原。

#### 1)方式一:

```java

req.setCharacterEncoding("UTF-8");

```

这种方式只针对 POST 有效(必须在接收所有的数据之前设定)

#### 2)方式二:

```java

new String(request.getParameter(name).getBytes("ISO-8859-1"),"UTF-8");

```

借助了String 对象的方法,该种方式对任何请求有效,是通用的。

**Tomcat8起,以后的GET方式请求是不会出现乱码的。**

### 4.4 请求转发

请求转发,是一种**服务器的行为**,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保存,地址栏中的 URL 地址不会改变,得到响应后,服务器端再将响应发送给客户端,**从始至终只有一个请求发出**。实现方式如下,达到多个资源协同响应的效果

```java

req.getRequestDispatcher("转发的路径").forward(req,resp);

```

### 4.5 request作为域对象

通过该对象可以在一个请求中传递数据,作用范围:**在一次请求中有效**,即服务器跳转有效。

```java

request.setAttribute(String name, Object o); // 设置域对象内容

request.getAttribute(String name); // 获取域对象内容

request.removeAttribute(String name); //删除域对象内容

```

request 域对象中的数据在一次请求中有效,经过请求转发,request 域中的数据依然存在,则在请求转发的过程中可以通过 request 来传输/共享数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter文章索引贴

一、基础部分&#xff1a; 使用Jmeter进行http接口测试Jmeter之Http Cookie ManagerJmeter之HTTP Request DefaultsJmeter之逻辑控制器(Logic Controller)Jmeter属性和变量Jmeter组件执行顺序与作用域Jmeter参数化Jmeter关联Jmeter分布式测试Jmeter代理录制脚本Jmeter调试工具-…

from mysql partition select_爬虫(九十九)mysql详解二

**mysql中字段的常见类型: **二进制位 bit(长度)tinyint[(长度)] [有无符号unsigned] [位数低于长度时候是否填充零zerofill] 有符号表示范围-128 ~ 127, 无负号表示范围 0 ~ 255; 可用tinyint(1)来模拟boolean类型; *整型中的长度不做限制用, 仅仅做显示用, 即长度大于位数时候…

服务器训练数据 关闭终端,一文明白使用nohup将服务器训练程序后台运行不关闭+随时通过查看训练情况输出与visdom可视化...

使用nohup将训练程序后台不间断运行随时查看训练情况输出与可视化使用服务器进行远程训练由于笔者经常需要使用服务器进行训练&#xff0c;且有些模型训练起来需要很长的时间&#xff0c;如Mask模型&#xff0c;故经常需要长期跑程序。由于我使用的是ssh登录&#xff0c;因此断…

v-for 获取数组key value_Vue之路 | 05von、vif、vfor

点击左上方“熊吱”关注我们吧&#xff01;1事件监听在开发中&#xff0c;需要监听用户发生的事件&#xff0c;如点击、拖拽、键盘操作等&#xff0c;在Vue中&#xff0c;使用v-on指令绑定事件监听器。v-on的语法糖为&#xff1a;v-on基本操作在下面代码中&#xff0c;使用了v-…

华为:明明的随机数

明明的随机数明明想在学校中请一些同学一起做一项问卷调查&#xff0c;为了实验的客观性&#xff0c;他先用计算机生成了N个1到1000之间的随机整数&#xff08;N≤100&#xff09;&#xff0c;对于其中重复的数字&#xff0c;只保留一个&#xff0c;把其余相同的数去掉&#xf…

c++输出txt格式循环一组数据后换行再循环一次_numpy、pandas以及用pandas做数据分析的案例...

本文也是秦路老师python教程的学习笔记。这篇也是发给超哥看的&#xff1a;很多人说python很简单很好学&#xff0c;也有很多人说python没有java和c的功能强大。但是这都不重要&#xff0c;重要的是我们想学了&#xff0c;想画图也好做数据分析也罢&#xff0c;想学了就直接开始…

国内qq邮箱服务器,qq邮箱的服务器在国内吗(注册qq邮箱的服务器是什么)

2006年11以前的163用户&#xff0c;可以使用pop功能&#xff0c;以后申请的就不行了&#xff0c;楼主要是是后来申请的&#xff0c;你就别指望能用pop功能了&#xff0c;换邮箱吧&#xff0c;gmail.com &#xff0c;或者qq邮箱也可以的。。邮箱地址是有个人喜好起名的&#xff…

python支持向量机回归_机器学习实战-支持向量机原理、Python实现和可视化(分类)...

支持向量机&#xff08;SVM&#xff09;广泛应用于模式分类和非线性回归领域。 SVM算法的原始形式由Vladimir N.Vapnik和Alexey Ya提出。自从那以后&#xff0c;SVM已经被巨大地改变以成功地用于许多现实世界问题。 1.什么是支持向量机&#xff08;SVM&#xff09;&#xff1f;…

ajax保存乱码,Ajax 乱码详细

前面说了 Ajax 乱码的原因&#xff0c;以及解决乱码的示例&#xff0c;下面来个全面的分析。XMLHTTP 返回的数据默认的字符编码是 UTF-8&#xff0c;如果前台页面是 GB2312 或者其它编码数据就会产生乱码。POST 方法提交数据默认的字符编码是 UTF-8&#xff0c;如果后台是 GB23…

gin context和官方context_Go语言gin框架从入门到精通(3)

gin的渲染1 各种数据格式的响应json、结构体、XML、YAML类似于java的properties、ProtoBuf分别对所有数据格式举个列子func main() {r : gin.Default() ​//1. json响应r.GET("/someJSON", func(c *gin.Context) {c.JSON(200,gin.H{"message":"someJS…

JavaScript开发中几个常用知识点总结

最近在做项目的时候自己写了一些JavaScipt代码&#xff0c;于是自己又进行简单的查阅资料整理了一下&#xff0c;发现了如下几个比较有用的知识点&#xff1a; 1、三种声明函数的方式 2、jQuery $(document).ready() 与window.onload的区别 3、location.href 4、获取url中的参数…

cas .net 重定向循环_接口测试平台接入企业cas(一)

cas系统简介提供运营系统的 SSO 和 access control功能。类似百度的UC。CAS 是 Yale 大学发起的一个开源项目&#xff0c;旨在为 Web 应用系统提供一种可靠的单点登录方法&#xff0c;CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。官方网站&#xff1a;https://www.apereo…

虚拟机安装rsync服务器配置,虚拟机安装rsync服务器配置

虚拟机安装rsync服务器配置 内容精选换一换在分布式HA部署场景下&#xff0c;ASCS主备节点通过共享盘实现数据同步。本章节指导用户将ASCS主节点的数据盘绑定给ASCS备节点并为ASCS主备节点绑定浮动IP。已在SAP ASCS主备节点之间进行过相互的SSH跳转操作。绑定共享盘创建浮动IP并…

程序包android.support.annotation不存在_efcore技巧贴也许有你不知道的使用技巧

前言.net 环境近些年也算是稳步发展。在开发的过程中&#xff0c;与数据库打交道是必不可少的。早期的开发者都是DbHelper一撸到底&#xff0c;到现在的各种各样的ORM框架大行其道。孰优孰劣谁也说不清楚&#xff0c;文无第一武无第二说的就是这个理。没有什么最好的&#xff0…

MySql数据库表类型MYISAM与InnoDB的区别

InnoDB与Myisam的六大区别 MyISAM InnoDB 构成上的区别&#xff1a; 每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始&#xff0c;扩展名指出文件类型。 .frm文件存储表定义。 数据文件的扩展名为.MYD (MYData)。 索引文件的扩展名是.MYI…

centos系统云服务器,Centos系统怎么进云服务器

Centos系统怎么进云服务器 内容精选换一换CentOS 7.5版本操作系统的弹性云服务器默认关闭SELinux功能。通过/etc/selinux/config开启SELinux功能后&#xff0c;在输入密码时&#xff0c;会出现无法登录的问题。如果业务需要开启SELinux 功能&#xff0c;请参照本节内容进行配置…

applicationproperties不是小叶子_为何“砂糖桔”是带着叶子出售?原来其中有着“猫腻”,涨知识了...

大家好&#xff0c;我是你们的好朋友童童&#xff0c;生活中不止有眼前的苟且&#xff0c;还有诗和梦想。童童每天都给大家分享有趣实用的小知识&#xff0c;有什么意见或者建议都可以和童童交流&#xff0c;喜欢我们的可以关注呦。一起和童童来看看今天的小知识吧。随着春节的…

用android制作一个记事本app_用扁平化呈现一个天气APP

作为当下最火的设计风格之一&#xff0c;扁平化设计其实是一种简约的Ul 设计理念&#xff0c;现被广泛应用于图形用户界面上&#xff0c;在图形材料&#xff0c;例如海报&#xff0c;艺术作品&#xff0c;指导文档&#xff0c;各类出版物等方面尤为常用。今天为大家带来了我最近…

hbase hdfs外部表_硬核干货长文!Hbase来了解一下不?

本文公众号来源&#xff1a;互联网侦察 作者&#xff1a;channingbreeze最近我也在入门大数据相关的基础&#xff0c;这篇文章非常通俗易懂讲解了什么是Hbase&#xff0c;推荐阅读&#xff01;等我学所成&#xff0c;我也来写写大数据相关的入门知识。今天&#xff0c;小史的…

springboot自动配置的原理_SpringBoot实战:详解SpringBoot自动配置原理

SpringBoot 自动配置主要通过 EnableAutoConfiguration, Conditional, EnableConfigurationProperties 或者 ConfigurationProperties 等几个注解来进行自动配置完成的。EnableAutoConfiguration 开启自动配置&#xff0c;主要作用就是调用 Spring-Core 包里的 loadFactoryName…