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. linux 运行级别与chkconfig

    一.Linux的运行级别 在装MySQL的时候,才知道了Linux的运行级别这么一回事.汗…自己太水了…下面总结一下: 什么是运行级别呢?简单点来说,运行级别就是操作系统当前正在运行的功能级别.级别是 ...

  2. 自定义 SqlHelp

    using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Data; usin ...

  3. 用开源Look&Feel (Substance)写 漂亮的Swing应用程序

    今天用Swing 做了一个模仿QQ2009的登录界面,用到了开源的Look&Feel (Substance),在使用的过程中遇到了一些问题,也学到了一些技巧.Substance (https: ...

  4. JavaScript 参数传递与变量复制

            ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值. 基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象.         5 种基本数 ...

  5. 你无法修改 Git 的历史记录

    转自:http://www.oschina.net/news/26241/you-can-not-change-git-history 有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 ...

  6. ASP.NET MVC学习笔记-----Bundles

    在网页中,我们经常需要引用大量的javascript和css文件,在加上许多javascript库都包含debug版和经过压缩的release版(比如jquery),不仅麻烦还很容易引起混乱,所以AS ...

  7. 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二 ...

  8. NGUI 学习笔记实战之二——商城数据绑定(Ndata)

    上次笔记实现了游戏商城的UI界面,没有实现动态数据绑定,所以是远远不够的.今天采用NData来做一个商城. 如果你之前没看过,可以参考上一篇博客   NGUI 学习笔记实战——制作商城UI界面  ht ...

  9. Sqli-LABS通关笔录-1

    在第一个关卡当中还是学到些知识. 1.注释语句多试试其他的几个 2.不报错可能是前面的语句没有错误,union没有得到执行. http://127.0.0.1/sql/Less-1/index.php ...

  10. 正则匹配之url的匹配

    通过这几天的学习,已经对正则有所了解了. 下面动手写一个匹配url的正则吧. <?php $str="http://www.baidu.com"; $reg="/( ...