今天的学习涉及到了 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. ZABBIX自动发现Redis端口并监控

    由于一台服务器开启许多Redis实例,如果一台一台的监控太耗费时间,也非常容器出错.这种费力不讨好的事情我们是坚决杜绝的,幸好ZABBIX有自动发现功能,今天我们就来用该功能来监控我们的Redis实例 ...

  2. andorid jar/库源码解析之retrofit2

    目录:andorid jar/库源码解析 Retrofit2: 作用: 通过封装okhttp库,来进行web通讯,并且使用动态代理的方式,来调用接口地址,通过回调赋值结果. 栗子: 定义一个接口,用于 ...

  3. 解决php获取不到Authorization问题

    我用的是thinkphp3.2.3, 在使用jwt的时候通过Authorization传递token,但是每次都接收不到,通过修改..htaccess文件,问题成功解决了,下面是的.htaccess文 ...

  4. 使用JDBC连接oracle数据库

    需要jar包:ojdbc6.jar

  5. boost在Qt中的使用

    一.说明 理论上,Qt和boost是同等级别的C++库,如果使用Qt,一般不会需要再用boost,但是偶尔也会有特殊情况,比如,第三方库依赖等等.本文主要介绍boost在windows Qt(MinG ...

  6. 【译】Using .NET for Apache Spark to Analyze Log Data

    .NET for Spark可用于处理成批数据.实时流.机器学习和ad-hoc查询.在这篇博客文章中,我们将探讨如何使用.NET for Spark执行一个非常流行的大数据任务,即日志分析. 1 什么 ...

  7. Day_09【常用API】扩展案例7_验证QQ号是否正确

    需求说明 请用户输入一个"QQ号码",我们来判断这个QQ号码是否正确 要求:使用方法来完成判断功能 验证规则: 1)必须是5-12位数字: 2)首位不能是0: package co ...

  8. python工业互联网应用实战1—SQL与ORM

    从sql到ORM应该说也是编程体系逐步演化的结果,通过类和对象更好的组织开个过程中遇到的各种业务问题,面向对象的解耦和内聚作为一套有效的方法论,对于复杂的企业应用而言确实能够解决实践过程中很多问题. ...

  9. [hdu4713 Permutation]DP

    题意:将一个数拆成若干数的和使得它们的最小公倍数最大 思路:一个数x可以拆成p1k1 + p2k2 + ... + pnkn形式,其中pi是质数或1.对于最小公倍数最大的情况,一定可以表示成这种形式. ...

  10. Python基础语法day_03——列表

    day_03 列表是什么 在Python中,用[]来表示列表,并用逗号来分隔其中的元素.下面是一个简单的列表示例: >>> bicycles = ['treak','cannonda ...