1.服务器(Server)响应,浏览器(Brower)请求:

  对于B/S的软件,数据的传递体现在,用户利用浏览器请求,以获得服务器响应。在JavaWeb项目中,大致包含.java文件的数据处理模块,和在浏览器展示的.jsp,.html信息展示模块。这里还要区分前台和后台两个概念,前台并不代表浏览器端,后台并不代表服务器端。

  按上图的流程中,我们可以看到我们完成编码工作后,tomcat将会把我们工程中的WebRoot加载到tomcat的webapps下。浏览器请求后,服务器根据.java编码的数据处理方式进行数据处理,通过jsp将信息展示到浏览器。这里我们要注意,jsp是从服务器被传到浏览器的,那么在这个过程中,就涉及到jsp文件的服务器编码、传递、浏览器解码。同理,浏览器的请求也会包含,数据发送的浏览器编码、传递、服务器解码的过程。

  浏览器请求和服务器响应过程,都会涉及编码与解码的过程,这也是JavaWeb项目开发中,出现大量乱码的问题所在。只要出现一个流程的编码、解码错误,都可能出现乱码。

  这里引申另外一个问题:当我们在action中,通过request.setAttribute("name",name)时,按道理映射之后的jsp应该是不能通过request.getAttribute("name")访问到name的,因为action中,request请求结束后,应该要被销毁的,不应该被传到jsp页面中的。这是为什么呢?

  经试验表明,该过程是透过请求转发(forward)实现的, 而不是重定向(redirect)实现的,因为请求转发会把(request,response)都转发到jsp,所以在jsp中能访问到,在action中通过request.setAttribute("name",name)设的值!

  2.如何避免出现乱码?(参照上图)

  (1)对于同一个应用,最好统一编码,推荐为 UTF-8 ,当然 GBK 也可以。

  (2)正确设置 JSP 的三个重要编码:

     response.setCharacterEncoding("UTF-8")

     contentType="text/html;charset=UTF-8"

     pageEncoding=“UTF-8”

  (3)对于请求,可以使用过滤器或者在每个 JSP/Servlet 中设置request.setCharacterEncoding ("UTF-8") 。同时,要修改 Tomcat 的默认配置,推荐将 useBodyEncodingForURI 参数设置为 true ,也可以将 URIEncoding 参数设置为 UTF-8 (有可能影响其他应用,所以不推荐.)

  

关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题的更多相关文章

  1. java 写的能够响应浏览器请求的 http 服务器

    这只是一个小Demo,话几十分钟搞出来的. 不废话先上代码. 首先是服务端的 package com.cnryb; import java.io.IOException; import java.io ...

  2. 服务器响应HTTP请求状态码(转)

    当服务器响应HTTP请求时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明: 1.客户方错误: 100 客户必须继续发出请求 101 客户要求服务器根据请求转换HTTP协议版本 2. ...

  3. Web服务器-HTTP相关-快速整一个服务器响应浏览器(3.2.1)

    @ 目录 1.HTTP分析 2.简单服务器 关于作者 1.HTTP分析 当你去访问一个网址的时候,浏览器会发送而各种头信息给服务器 然后服务器根据信息,返回一定数据的格式 最简单的就是下面的代码 自己 ...

  4. 如何在服务器(centOS系统)上运行JavaWeb项目

    在上次的结对作业中(如果您对这几句话一头雾水的话就请忽视掉吧),因为我们小组制作的是Web版本的项目,需要布置在服务器上才算完成.故申请了一个腾讯云服务器用于运行项目,在这个过程中了解了如何在服务器上 ...

  5. 001-http协议-请求报文以及服务器响应状态

    Http协议的几个概念: 1.连接(Connection):浏览器和服务器之间传输数据的通道. 一般请求完毕就关闭,http不保持连接.不保持连接会降低处理速度(因为建立连接速度很慢),保持连接的话就 ...

  6. JSP服务器响应

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/server-response.html: 当一个Web服务器响应浏览器的HTTP请求时,响应通常包括一个 ...

  7. js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快、简单 post:安全,量大,不缓存)(服务器同步和异步区别:同步:等待服务器响应当中浏览器不能做别的事情)(ajax和jquery一起用的)

    js中ajax连接服务器open函数的另外两个默认参数get请求和默认异步(open的post方式send函数带参数)(post请求和get请求区别:get:快.简单 post:安全,量大,不缓存)( ...

  8. 客户端请求、服务器响应及其HTTP状态码

    一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...

  9. Java Web学习(1): 客户端请求、服务器响应及其HTTP状态码

    一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...

随机推荐

  1. R语言操作数据库

    以下内容出自http://www.douban.com/note/172387172/ CRAN上有很多R的数据库支持包,使R能够对数据库进行读写操作.这些包有:RODBC.DBI.RMySQL.RO ...

  2. Swig 使用指南

    如何使用 API swig.init({ allowErrors: false, autoescape: true, cache: true, encoding: 'utf8', filters: { ...

  3. Object、Function、String、Array原生对象扩展方法

    JavaScript原生对象的api有些情况下使用并不方便,考虑扩展基于Object.Function.String.Array扩展,参考了prototype.js的部分实现,做了提取和修改,分享下: ...

  4. C语言中的struct和typedef struct<转载>

    原文:http://www.nowamagic.net/librarys/veda/detail/1785 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数 ...

  5. 安装 openSUSE Leap 42.1 之后要做的 8 件事

    导读 openSUSE Leap 确实是个巨大的飞跃,它允许用户运行一个和 SUSE Linux 企业版拥有同样基因的发行版.和其它系统一样,为了实现最佳的使用效果,在使用它之前需要做些优化设置. 下 ...

  6. Stanford机器学习---第三讲. 逻辑回归和过拟合问题的解决 logistic Regression & Regularization

    原文:http://blog.csdn.net/abcjennifer/article/details/7716281 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  7. hiho #1143 : 骨牌覆盖问题·一 (运用快速幂矩阵)

    #1143 : 骨牌覆盖问题·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题:我们有一个2xN的长条形棋盘,然 ...

  8. [官方说明] 为什么ES4要分成两阶段?

    从ES4第一个版本发布到现在,已经有段时间了,绝大多数坛友都已经适应了ES4所带来的新封装模式,但仍有部分新人和坛友对ES4的两阶段模式带有不解或曲解.本帖将就ES4的两阶段意义做出解释说明,希望更多 ...

  9. PXE介绍(PXE+kickstart无人值守安装)

    PXE概念 PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端 ...

  10. twisted udp编程

    概述 Unlike TCP, UDP has no notion of connections. A UDP socket can receive datagrams from any server ...