今天的学习涉及到了 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学习之请求和响应编码的更多相关文章

  1. Laravel学习:请求到响应的生命周期

    Laravel请求到响应的整个执行过程,主要可以归纳为四个阶段,即程序启动准备阶段.请求实例化阶段.请求处理阶段.响应发送和程序终止阶段. 程序启动准备阶段 服务容器实例化 服务容器的实例化和基本注册 ...

  2. 请求与响应编码及jsp基本原理

    1.请求转发和请求包含 (1)请求转发: this.getServletContext().getRequestDispatcher("").forward(request,res ...

  3. 各种编码问题产生原因以及解决办法---------响应编码,请求编码,URL编码

     响应编码 产生原因以及解决办法: 示例: package cn.yzu; import java.io.IOException; import javax.servlet.ServletExcept ...

  4. servlet请求编码与响应编码问题(编码不一致可能会导致乱码)

    html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g ...

  5. Django:学习笔记(4)——请求与响应

    Django:学习笔记(4)——请求与响应 0.URL路由基础 Web应用中,用户通过不同URL链接访问我们提供的服务,其中首先经过的是一个URL调度器,它类似于SpringBoot中的前端控制器. ...

  6. HeadFirst Jsp 04 (请求和响应作为servlet)

    servlet 的存在就是为了客服服务, servlet的任务是得到一个客户的请求, 再发回一个响应. 由上图可知, web 容器会在启动后就加载所有的servlet类, 并为之创建实例和初始化 注意 ...

  7. javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码

     乱码是一个经常出现的问题 请求中,参数传递的过程中也是经常出现乱码的问题 本文主要整理了请求乱码中的问题以及解决思路   先要理解一个概念前提: 编码就是把图形变成数值码所以说: 图形的字符  -- ...

  8. Django 学习第九天——请求与响应

    一.HttpRequest 对象: 服务器接收到http协议的请求后,会根据报文创建 HttpRequest 对象视图函数的第一个参数是HttpRequest 对象再django.http 模块中定义 ...

  9. jsp学习(1)jsp请求过程和生命周期

    一.服务器处理jsp请求的过程: 以下步骤表明了 Web 服务器是如何使用JSP来创建网页的: 1.浏览器发送一个 HTTP 请求给服务器. 2.Web 服务器识别出这是一个对 JSP 网页的请求,并 ...

随机推荐

  1. 图论--LCA--Tarjan(离线)

    * * 给出一颗有向树,Q个查询 * 输出查询结果中每个点出现次数 * 复杂度O(n + Q); */ const int MAXN = 1010; const int MAXQ = 500010; ...

  2. python——random.sample()的用法

    写脚本过程中用到了需要随机一段字符串的操作,查了一下资料,对于random.sample的用法,多用于截取列表的指定长度的随机数,但是不会改变列表本身的排序: list = [0,1,2,3,4] r ...

  3. 布局问题杂(html和css)

    \(一.删除线可以用一对strike标签括起来\) <p><strike>删除线可以用一对strike标签括起来</strike></p> \(\col ...

  4. 洛谷p1149

    一道很有意思的题目嘞. 这道题目看起来,用搜索似乎无疑了. 我想了这样一个办法(看了很多博客似乎都没用这种方法),可能是觉得太麻烦了吧: 1.我们先把0到9的数字排列,找出排列消耗火柴等于0的序列.这 ...

  5. INotifyPropertyChanged接口

    INotifyPropertyChanged 接口用于通知客户端,通常执行绑定的客户端,属性值已更改. 例如,考虑 Person 具有一个名为属性对象 FirstName. 若要提供通用的属性更改通知 ...

  6. mac下使用xampp中php显示1044/1045/1046(卸载xampp)

    问题描述 在mac下使用xampp,访问http://192.168.64.3/phpmyadmin/可以正常显示php页面,当创建数据库时提示1044也就是普通用户没有权限 问题猜测 猜测在使用xa ...

  7. 2020年python开发微信小程序,公众号,手机购物商城APP

    2020年最新的技术全栈,手机短信注册登陆等运用, 精准定位用户 支付宝支付 以及前后端从0到大神的全部精解 2020年最新的技术全栈,手机短信注册登陆等运用, 精准定位用户 支付宝支付 以及前后端从 ...

  8. input唤起键盘影响移动端底部fixed定位

    主要代码如下: public docmHeight = document.documentElement.clientHeight || document.body.clientHeight; // ...

  9. 【SPOJ – SUBST1】New Distinct Substrings 后缀数组

    New Distinct Substrings 题意 给出T个字符串,问每个字符串有多少个不同的子串. 思路 字符串所有子串,可以看做由所有后缀的前缀组成. 按照后缀排序,遍历后缀,每次新增的前缀就是 ...

  10. [hdu5323]复杂度计算,dfs

    题意:求最小的线段树的右端点(根节点表示区间[0,n]),使得给定的区间[L,R]是线段树的某个节点. 数据范围:L,R<=1e9,L/(R-L+1)<=2015 思路:首先从答案出发来判 ...