`

jsp中编码流程详解

    博客分类:
  • java
 
阅读更多
http://hi.baidu.com/hexcode/blog/item/693756f84ff89a50242df272.html


关键字: 页面传值 1: 最基本的乱码问题。
这个乱码问题是最简单的乱码问题。一般新会出现。就是页面编码不一致导致的乱码。
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
<head>
<title>中文问题</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
</head>
<body>
   我是个好人
</body>

三个地方的编码。

第一个地方的编码格式为jsp文件的存储格式。Eclipse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。

第二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-1,这样 如有中文肯定出乱码。也就是必须一致。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有这一行的话,“我是个好人”也会出现乱码。必须一致才可以。

第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式没有关系。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式。出现了乱码。


2:表单使用Post方式提交后接收到的乱码问题
这个问题也是一个常见的问题。这个乱码也是tomcat的内部编码格式iso8859-1在捣乱,也就是说post提交时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,(tomcat默认编码:ISO8859-1)接受的jsp却以utf-8的方式接受。导致乱码。既然这样的原因,下面有几种解决方式,并比较。
A :接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;

这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。

B :在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用String str request.getParamet("something");即可得到汉字参数。但每页都需要执行这句话。这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。

C :为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp进行编码处理。

3 :表单get提交方式的乱码处理方式

如果使用get方式提交中文,接受参数的页面也会出现乱码,这个乱码的原因也是tomcat的内部编码格式iso8859-1导致。Tomcat会以get的缺省编码方式iso8859-1对汉字进行编码,编码后追加到url,导致接受页面得到的参数为乱码。

解决办法:

A 使用上例中的第一种方式,对接受到的字符进行解码,再转码。

B Get走的是url提交,而在进入url之前已经进行了iso8859-1的编码处理。要想影响这个编码则需要在
server.xml的Connector节点增加useBodyEncodingForURI="true" 属性配置,即可控制tomcat对get方式的汉字编码方式,上面这个属性控制get提交也是用request.setCharacterEncoding("UTF-8")所设置的编码格式进行编码。所以自动编码为utf-8,接受页面正常接受就可以了。但我认为真正的编码过程是,tomcat又要根据
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true"
URIEncoding=”UTF-8”/>里面所设置的URIEncoding=”UTF-8”再进行一次编码,
但是由于已经编码为utf-8,再编码也不会有变化了。
如果是从url获取编码,接受页面则是根据URIEncoding=”UTF-8”来进行解码的。
分享到:
评论

相关推荐

    JSP用户提交页面编码

    需要检查整个流程中的所有编码设置是否一致。 - **多浏览器兼容性**:不同的浏览器对于字符编码的处理方式可能存在差异,因此在开发过程中需要测试多种浏览器,确保在所有目标用户使用的浏览器上都能正常显示。 ###...

    jsp上传文件的实例注释详解

    上述代码展示了如何在JSP中处理文件上传的基本流程。通过引入Apache Commons FileUpload库,我们可以方便地解析多部分请求,检查文件大小,并将文件保存到服务器。 7. **安全注意事项** - 验证文件类型:确保只...

    jsp网页开发详解(一本很基础的讲解资料)

    - JSP文件通过`&lt;%@ page %&gt;`指令来设置页面属性,如内容类型、字符编码、导入的Java类等。 - `&lt;% ... %&gt;`是脚本元素,用于在JSP页面中插入Java代码块。 - `&lt;%= ... %&gt;`是表达式元素,它会将Java表达式的值转换为...

    JSP编码以及乱码问题解疑

    **JSP编码与乱码问题详解** 在JSP(JavaServer Pages)开发中,编码问题是一个常见的困扰,尤其是在处理中文字符时。本文将深入探讨JSP编程过程中出现的乱码问题,包括原因分析和解决方案。 1. **基本的乱码问题**...

    Servlet JSP深入详解 基于Tomcat的Web开发

    Servlet和JSP是Java Web开发中的核心技术,它们与Tomcat服务器紧密相连,共同构成了Web应用程序的基础。本篇文章将深入探讨这三个关键概念,并介绍如何利用它们进行基于Tomcat的Web开发。 **Servlet概述** Servlet...

    jsp应用开发详解源代码

    动作如`&lt;jsp:include&gt;`、`&lt;jsp:forward&gt;`则用于页面控制流程。 2. **JSP生命周期** JSP页面经历三个主要阶段:翻译阶段、编译阶段和执行阶段。在翻译阶段,JSP被转换成Servlet源码;编译阶段,Servlet源码被编译成...

    《JSP应用开发详解》代码

    《JSP应用开发详解》这本书是面向Web开发者的一本经典教程,主要涵盖了使用Java Server Pages (JSP) 技术进行动态网站开发的各种核心概念和技术。该书的随书代码包含了一系列实例,帮助读者深入理解并实践JSP编程。...

    资料大全 JSP中文手册.

    **JSP中文手册详解** JavaServer Pages(JSP)是一种基于Java的技术,用于创建动态、交互式的Web应用程序。它将内容的生成与显示分离,提高了开发效率和维护性。本篇将围绕《JSP中文手册》展开,深入解析JSP的核心...

    JSP应用开发详解第三版 源代码 ch3

    7. **JSP的开发流程**:通常涉及需求分析、设计、编码、测试和部署等多个步骤。在"源代码 ch3"中,可能包含了示例项目,展示如何使用JSP进行实际开发,比如创建用户登录、注册功能,或者实现数据的增删改查等操作。 ...

    jsp应用开发祥解源代码

    《JSP应用开发详解》源代码是一份宝贵的资源,它为深入理解JSP(Java Server Pages)技术提供了实践基础。JSP是Java平台上的一个重要组件,用于构建动态Web应用程序。本资源包含了一系列示例和练习,旨在帮助开发者...

    jsp教程详解

    ### JSP教程详解 #### 第一章:JSP简介 **1.1 什么是JSP** JSP(Java Server Pages)是一种服务器端脚本技术,它允许在HTML文档中嵌入Java代码,使得Web页面能够根据请求动态生成内容。JSP页面在服务器上被编译成...

    jspsmart上传下载文件实例中文

    这个实例中包含了JSpsmart的源码,帮助开发者深入理解其工作原理并解决文件上传过程中的编码问题。 ### 一、JSpsmart核心功能 1. **大文件上传支持**:JSpsmart允许上传大文件,并且可以设定上传时的内存阈值,...

    图书管理系统(JSP)

    《图书管理系统(JSP)详解》 图书管理系统是一款常见的信息化应用,它可以帮助图书馆或个人进行图书的录入、借阅、归还、查询等操作。在这个系统中,我们使用了Java Server Pages(JSP)技术与MySQL数据库进行集成...

    JSP大学实用教程程序源代码

    JSP 大学实用教程程序源代码详解 本资源为 JSP 大学实用教程程序源代码的详细解释,涵盖了 JSP 的基础知识、页面结构、变量、控制结构、函数、会话跟踪、数据库交互、安全等多方面的内容。 JSP 简介 JSP(Java ...

    MyEclipse_修改Jsp模板.txt

    ### MyEclipse 修改 JSP 模板方法详解 在日常的Web开发工作中,我们经常会用到MyEclipse这款集成开发环境(IDE)。MyEclipse是一款非常强大的Java EE开发工具,它集成了Eclipse平台,并提供了丰富的插件支持,极大...

    (jsp入门)图书管理系统---支持中文不乱码

    【JSP图书管理系统详解——实现中文不乱码】 在IT领域,开发一款应用程序,特别是涉及到用户界面和数据库交互的系统,如"(jsp入门)图书管理系统",是开发者经常遇到的任务。本系统采用MyEclipse作为开发环境,...

    jsp中过滤器选择过滤器的写法详解.docx

    在Java Web开发中,JSP(JavaServer Pages)常常与Servlet和过滤器(Filter)结合使用,以实现更复杂的业务逻辑和控制流程。过滤器在请求到达目标资源(如JSP页面或Servlet)之前和之后执行,可以用来进行权限验证、...

    JSP网页模板JSP网页模板JSP网页模板

    **JSP网页模板详解** JavaServer Pages(JSP)是一种基于Java的技术,用于创建动态、交互式的Web应用程序。它将内容的生成与显示分离,提高了开发效率和代码的可维护性。JSP网页模板则是这种技术的一个关键组成部分...

Global site tag (gtag.js) - Google Analytics