JSP学习之请求和响应编码
今天的学习涉及到了 jsp中的两大函数 request(请求) 和 response(响应),这应该是大家学习jsp时最先碰到的两个对象,具体有什么作用呢?应该怎么用呢?请继续往下面看.
一.request介绍
(1) request对象 是 javax.serlvet.httpServletRequest类型的对象 .是一个域对象, 该对象代表了客户端的请求信息 , 主要用于接受通过HTTP协议传送到服务器的数据.(包括头信息 , 系统信息 , 请求方式以及请求参数) , request对象的作用域是一次请求
二.request的请求编码
(1) 涉及到服务端和客户端还有浏览器之间的传值与显示问题,那么不可避免的我们需要聊到编码问题,也就是解码或者转码 , 在我们使用的Tomcat中 , 它的默认编码是 <iso-8859-1> ,而众所周知的我们的中文编码用的比较多的是<UTF-8>,那么我们在通过request传值的时候就必须要考虑到解码的问题 , 否则迎接我们的就是那些花里胡哨的乱码 . 这个转码怎么转呢 ?
就拿我们的请求参数的传值来说 , 我们通过<form>表单的的name属性来设置取值 , 其中还要通过 它method中的'get'和'post'两种传值方式来进行不同的解码,我们先说post
下面是一个Servlet类中的doPost方法
public void doPost(HttpServletRequest req, HttpServletResponse reps) throws ServletException, IOException
{
req.setCharacterEncoding("UTF-8"); //设置请求编码为 UTF_8
.......
}
这个 setCharachterEncoding()方法就是 [post]传值方式的解码方式 , 作用就是让服务器把它那个 <iso-8859-1>的编码按照我我们需要的<UTF-8>的编码 解码后再给放到我们手上,这也是说为什么我们说这个 req.setCharacterEncoding("UTF-8") 是请求编码 ,这是我们给服务器发送请求 ,服务器按照我们的请求编码回应我们.
我们再看 get传值方式
下面是一个Servlet类中的doGet方法
public void doGet(HttpServletRequest req, HttpServletResponse reps)
throws ServletException, IOException
{
//假设jsp页面有一个 name名为 'Sex'的值传过来 ,我们先接收 并且转码
String SexStr = req.getParameter("Sex");
String Sex = new String(SexStr.getBytes("iso-8859-1"), "UTF-8");
}
这是什么意思呢 , 这个是我们先通过服务器的 <iso-8859-1>的方法获得Sex的底层字节数组 ,我们那用"UTF-8"的方式对字节数组进行加密,得到的就是我们要的中文字符了. 至于为什么 get和post两个解码方式不一样,我们可以通过测试看看地址栏就大概想到了,这个我就不细说了........
说完 request这个请求编码问题,我们再来看看 response响应编码
三 , response介绍
response 对象用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面有效。
四, response 响应编码
还是上代码
public void doPost(HttpServletRequest req, HttpServletResponse reps) throws ServletException, IOException
{
reps.setContentType("text/html; charset=UTF-8");
.......
}
以上代码还是一个Servlet类的的doPost方法 ,它的作用更直接 ,就拿表单里的下拉框来说我们可以给下拉框一个默认选中的选项 , 它的重要有点类似 ,就是给服务器和网页定了一个标准, 我给你的数据 还有你在网页上首先默认加载的数据必须是 <UTF-8>的编码格式 , 这个是它一个主要作用 ,大家不知道会不会经历过 ,有时候自己写的网页测试时候 ,加载出来 , 所有的中文变为了韩文亦或者问号 , 这样的情况对我们开发人员来说很简单,在浏览器中
有一个文字编码,我们在这里设置一下就可以了,不过如果对于一些小白的客户来说,我来逛你网站我只想买东西 , 你一出来就给我一个群看不懂的东西, 那么这个人的第一个感觉就是很差, 用户体验很差 , 所以 , 这个对浏览器的默认显示文字编码进行代码设置 还是很有必要的,因为我们这一行 用户体验是很重要的一个东西 .
在说完请求和响应编码的设置时候,再来补充一下细节,这两个语句必须放在你使用的方法的最上面,不管你是现在 doGet 还是 doPost中 , 它都要在最上面 ,上代码示例
public void doGet(HttpServletRequest req, HttpServletResponse reps)
throws ServletException, IOException
{
doPost(req, reps);
}
public void doPost(HttpServletRequest req, HttpServletResponse reps)
throws ServletException, IOException
{
//设置请求响应编码
req.setCharacterEncoding("UTF-8");
reps.setContentType("text/html; charset=UTF-8");
}
JSP学习之请求和响应编码的更多相关文章
- Laravel学习:请求到响应的生命周期
Laravel请求到响应的整个执行过程,主要可以归纳为四个阶段,即程序启动准备阶段.请求实例化阶段.请求处理阶段.响应发送和程序终止阶段. 程序启动准备阶段 服务容器实例化 服务容器的实例化和基本注册 ...
- 请求与响应编码及jsp基本原理
1.请求转发和请求包含 (1)请求转发: this.getServletContext().getRequestDispatcher("").forward(request,res ...
- 各种编码问题产生原因以及解决办法---------响应编码,请求编码,URL编码
响应编码 产生原因以及解决办法: 示例: package cn.yzu; import java.io.IOException; import javax.servlet.ServletExcept ...
- servlet请求编码与响应编码问题(编码不一致可能会导致乱码)
html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g ...
- Django:学习笔记(4)——请求与响应
Django:学习笔记(4)——请求与响应 0.URL路由基础 Web应用中,用户通过不同URL链接访问我们提供的服务,其中首先经过的是一个URL调度器,它类似于SpringBoot中的前端控制器. ...
- HeadFirst Jsp 04 (请求和响应作为servlet)
servlet 的存在就是为了客服服务, servlet的任务是得到一个客户的请求, 再发回一个响应. 由上图可知, web 容器会在启动后就加载所有的servlet类, 并为之创建实例和初始化 注意 ...
- javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码
乱码是一个经常出现的问题 请求中,参数传递的过程中也是经常出现乱码的问题 本文主要整理了请求乱码中的问题以及解决思路 先要理解一个概念前提: 编码就是把图形变成数值码所以说: 图形的字符 -- ...
- Django 学习第九天——请求与响应
一.HttpRequest 对象: 服务器接收到http协议的请求后,会根据报文创建 HttpRequest 对象视图函数的第一个参数是HttpRequest 对象再django.http 模块中定义 ...
- jsp学习(1)jsp请求过程和生命周期
一.服务器处理jsp请求的过程: 以下步骤表明了 Web 服务器是如何使用JSP来创建网页的: 1.浏览器发送一个 HTTP 请求给服务器. 2.Web 服务器识别出这是一个对 JSP 网页的请求,并 ...
随机推荐
- 让pomelo可以获取到反向代理websockets的真实用户IP
/node_modules/pomelo/lib/connectors/hybridsocket.js 找到 var Socket = function(id, socket) { 给remoteAd ...
- Fiddler 弱网测试
1.设置上传下载速率 在Fiddler Script选项中查找uploaded,找到设置网络上传和下载设置值 分析一下这几行代码: 首先来判断 m_SimulateModem 是否为 true,也就是 ...
- Android EventBus踩坑,Activity接收不了粘性事件。
注解问题 EventBus 的 粘性事件,可以让 成功注册后的 Activity.Fragment 后再接收处理 这一事件. 但是今晚写代码时,突然发现粘性事件,发送不成功了.??? 具体情况是:我在 ...
- python post protobuf
本文主要讲述如何使用Python发送protobuf数据. 安装protobuf .tar.gz cd protobuf- ./configure make make install 安装成功. // ...
- JavaScript 循环判断练习题
JavaScript 循环判断练习题 小明有一组水果("苹果","梨子","香蕉","葡萄","西瓜" ...
- CSS的基本语法及页面引用
CSS的基本语法及页面引用 CSS基本语法 CSS的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个 ...
- 你离高薪 offer 只差一个Redis入门,我是认真的
说起来,可能有些小伙伴会不相信,我是第一次用 Redis,真的.因为公司小,业务量小,Redis 根本派不上用场.不过,最近打算把系统升级一下,顺带把当下时髦的技术入个门,"与时俱进&quo ...
- 13_JavaScript基础入门(3)
条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的. 1.if--else-- 条件分支的主力语法,这个主力语法能够书 ...
- 性能测试之数据库监控分析工具PMM
PMM(Percona Monitoring and Management) 是一个用于管理和监控数据库性能的开源平台. . 它能提供全面的基于时间和各类监控指标.计数器的分析. 性能测试中,是做数据 ...
- 【HBase】快速了解上手rowKey的设计技巧
目录 为什么要设计rowKey 三大原则 长度原则 散列原则 唯一原则 热点问题的解决 加盐 哈希 反转 时间戳反转 为什么要设计rowKey 首先要弄明白一点,Regions的分区就是根据数据的ro ...