今天的学习涉及到了 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. 可运行的Java RMI示例和踩坑总结

    简述 资料参考: https://docs.oracle.com/javase/tutorial/rmi/overview.html https://blog.csdn.net/bigtree_372 ...

  2. CodeForces - 1047B Cover Points

    B. Cover Points time limit per test1 second memory limit per test256 megabytes inputstandard input o ...

  3. 迁移WPF项目到.NET CORE

    综述 .NET CORE 3.0开始,桌面端支持WPF了.很多.NET FRAMEWORK的项目已经跑了一阵子了,不是很有必要支持.NET CORE,不过最近用一个程序,为了贯彻一些C# 8的特性,需 ...

  4. Python 记录日志文件

    1.打印到控制台 # -*- coding: UTF-8 -*- import logging def logFileTest(): logging.debug('This is debug') lo ...

  5. 解密C语言编译背后的过程

    我们大部分程序员可能都是从C语言学起的,写过几万行.几十万行.甚至上百万行的代码,但是大家是否都清楚C语言编译的完整过程呢,如果不清楚的话,我今天就带着大家一起来做个解密吧. C语言相对于汇编语言是一 ...

  6. 【Scala】关于集合的各种知识点

    目录 映射Map 不可变Map 概述 操作实例 可变Map 概述 操作实例 Map的遍历 for循环遍历 格式 操作实例 模式匹配遍历 格式 操作实例 Tuple 元祖 概述 定义格式 获取元素方法 ...

  7. Altium Designer PCB封装bug,元件焊盘位置偏移解决方法

    1.问题描述:在拖动几个电阻位置时,意外发现Altium designer20版本软件的一个bug——0805的电阻两焊盘位置发生了偏移,如下图所示. 2.解决办法: ①选中焊盘偏移的封装,右键剪切掉 ...

  8. 一句话+两张图搞定JDK1.7HashMap,剩下凑字数

    JDK1.7 HashMap一探究竟 HashMap很简单,原理一看散列表,实际数组+链表;Hash找索引.索引若为null,while下一个.Hash对对碰,链表依次查.加载因子.75,剩下无脑扩数 ...

  9. VMware Centos7 NAT 无法上网的解决方法

    问题描述: VMware下CentOS7使用NAT上网方式无法连网 解决方案: 网络设置为DHCP自动获取IP 查看主机(不是虚拟机)的相关服务是否打开,主要是VMware DHCP 和VMware ...

  10. 20184302 2019-2020-2 《Python程序设计》实验一报告

    20184302 2019-2020-2 <Python程序设计>实验一报告 课程:<Python程序设计> 班级: 1843 姓名: 李新锐 学号:20184302 实验教师 ...