`
jay88489
  • 浏览: 70550 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JSP/Servlet编码问题总结

    博客分类:
  • J2EE
阅读更多

设置编码的方式分为:
pageEncoding="UTF-8"、contentType="text/html;charset=UTF-8"、request.setCharacterEncoding("UTF-8")、

response.setCharacterEncoding("UTF-8")


1、pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。
   注意:如果JSP文件是以GBK为编码保存的,而在JSP中却指定pageEncoding="UTF-8",会引起JSP内部定义的字符串为乱码。
2、contentType="text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码。
3、request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码的编码。
4、response.setCharacterEncoding("UTF-8")的作用是指定对服务器响应进行重新编码的编码。


发送数据:

对于发送数据,服务器按照response.setCharacterEncoding—contentType—pageEncoding的优先顺序,对要发送的数据进行编码,浏览器也是根据这个参数来对其接收到的数据进行重新编码(或者称为解码)。

      
接收数据:

一种是浏览器直接用URL提交的数据,另外两种是用表单的GET和POST方式提交的数据。
无论使用那种方式提交,如果参数中包含中文,浏览器都会使用当前浏览器编码对其进行URL编码。

对于表单中POST方式提交的数据:
在接收数据的JSP中正确request.setCharacterEncoding参数,指定编码。如果不指定,则默认使用ISO-8859-1编码,需要进一步处理。
值得注意的是在执行setCharacterEncoding()之前,不能执行任何getParameter()。而且,该指定只对POST方法有效,对GET方法无效。

对于URL提交的数据和表单中GET方式提交的数据:
在接收数据的JSP中设置request.setCharacterEncoding 参数是不行的,因为默认情况下使用ISO-8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码),而不使用该参数对URL提 交的数据和表单中GET方式提交的数据进行重新编码(解码)。
解决方法有两种。一种是在配置中间件相应的参数。另一种是对其中出现的字符,预先编码,在javascript中对encodeURI(string),其采用的是浏览器编码,jsp可以自动识别。


总结:
1、 对于同一个应用,最好统一编码,推荐为UTF-8,当然GBK也可以。
2、 正确设置JSP的pageEncoding参数
3、 在所有的JSP/Servlet中设置contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8"),从而间接实现对浏览器编码的设置。
4、 对于请求,可以使用过滤器或者在每个JSP/Servlet中设置request.setCharacterEncoding("UTF-8")。同时, 要修改Tomcat的默认配置,推荐将useBodyEncodingForURI参数设置为true,也可以将URIEncoding参数设置为 UTF-8(有可能影响其他应用,所以不推荐)。

 

附:
Tomcat 相关设置:
在Tomcat的配置文件的Connector标签中设置useBodyEncodingForURI或者URIEncoding属性。
其 中useBodyEncodingForURI参数表示是否用request.setCharacterEncoding参数对URL提交的数据和表单中 GET方式提交的数据进行重新编码,在默认情况下,该参数为false(Tomcat4.0中该参数默认为true);
URIEncoding参数指定对所有GET方式请求(包括URL提交的数据和表单中GET方式提交的数据)进行统一的重新编码(解码)的编码。
URIEncoding 和useBodyEncodingForURI区别是,URIEncoding是对所有GET方式的请求的数据进行统一的重新编码(解码),而 useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新 编码(解码),不同的页面可以有不同的重新编码(解码)的编码。
所以对于URL提交的数据和表单中GET方式提交的数据,可以修改 URIEncoding参数为浏览器编码或者修改useBodyEncodingForURI为true,并且在获得数据的JSP页面中 request.setCharacterEncoding参数设置成浏览器编码。

分享到:
评论

相关推荐

    基于jsp/servlet/JavaBean的网上交易系统

    【基于jsp/servlet/JavaBean的网上交易系统】 在IT领域,基于jsp/servlet/JavaBean的网上交易系统是Web开发中的一个经典架构,尤其适用于初学者了解和学习Web应用程序的构建。这种架构利用了Java的强大功能和灵活性...

    jsp/servlet内置方法详解

    总结来说,理解JSP/Servlet的内置方法以及HttpServletRequest对象的使用是构建高效Web应用程序的关键。正确地运用这些方法,可以帮助开发者更好地控制数据的输出,处理用户请求,以及实现复杂的交互功能。通过不断...

    JSP/Servlet 中的汉字编码问题

    JSP/Servlet 中的汉字编码问题 网上就 JSP/Servlet 中 DBCS 字符编码问题有许多优秀的文章和讨论,本文对它们作一些整理,并结合 IBM WebSphere Application Server 3.5(WAS)的解决方法作一些说明,希望它不是多余...

    jsp/servlet个人学习笔记

    **JSP(JavaServer Pages)/Servlet 知识详解** JSP 和 Servlet 是 Java Web 开发中的核心组件,它们在构建动态网站时起着至关重要的作用。以下是对这两个技术及其相关概念的详细解释: 1. **JSP 基础** JSP 是一...

    jsp/servlet综合实训《线上考试》

    本例使用jsp/servlet技术模拟线上考试系统,其中涉及到jsp内置对象、servlet技术、JSTL标签、EL表达式、validate.js校验框架、MySQL数据库等知识。该项目十分适合做课题报告和期末作业,为方便读者开通源码,拥有...

    北大青鸟河北天泰JSP/Servlet第四章项目新闻发布系统-主题管理及首页新闻展示

    【北大青鸟河北天泰JSP/Servlet第四章项目新闻发布系统——主题管理及首页新闻展示】是针对Java Web开发的一项教学内容,旨在帮助学习者深入理解并熟练运用JSP(JavaServer Pages)和Servlet技术来构建一个实际的...

    基于jsp/servlet的DAO设计模工下的留言管理系统

    【基于jsp/servlet的DAO设计模工下的留言管理系统】是一个使用Java Web技术开发的应用程序,主要涉及的技术包括JavaServer Pages(JSP)、Servlet以及Data Access Object(DAO)设计模式。这个系统旨在实现对用户...

    JSP与Servlet复习

    ### JSP与Servlet复习知识点详解 #### 一、JSP与Servlet基础知识 **1. JSP简介** - **定义**: Java Server Pages (JSP) 是一种基于Java技术的服务器端脚本语言,用于创建动态网页。 - **特点**: JSP页面可以将...

    accp5.0-y2-jsp/servlet/javabean-指导学习1

    通过"我听我购唱片网"的实践,学员不仅能深化对jsp、servlet和javabean的理解,还能体验到软件开发的全过程,从需求分析、设计、编码到测试和部署。这是一个对提升IT专业技能非常有价值的项目。

    基于JSP/Servlet的公交管理系统

    这个项目对于学习JSP和Servlet的学生来说,是一个很好的实践机会,能够让他们深入理解Web应用的开发流程,从需求分析、设计、编码到测试和部署。通过完成这样的项目,学生可以掌握Web开发的基本技能,为未来的职业...

    使用JSP/Servlet技术开发新闻发布系统.zip

    课后习题则可以检验学员对课程内容的理解程度,通过解决问题进一步加深对JSP/Servlet的理解。 【项目】:完成新闻发布系统的开发,学员需要综合运用所学知识,这涉及到需求分析、数据库设计、前后端交互等多个环节...

    jsp/servlet javamail 发送邮件 可发送多个附件

    在Java Web开发中,JSP(JavaServer ...总的来说,这个JSP/Servlet邮件系统利用JavaMail API实现了发送多附件邮件的功能,但也需要注意编码问题和安全性。通过不断优化和调试,可以构建出稳定且功能丰富的邮件服务。

    JSP_Servlet 中的汉字编码问题.pdf

    ### JSP/Servlet中的汉字编码问题详解 #### 一、问题背景及重要性 在互联网技术的发展历程中,字符编码一直是影响多语言支持的关键因素之一。对于中文等双字节字符集(DBCS)而言,正确的编码处理尤为重要。《JSP_...

    JSP+SERVLET教程

    综上所述,通过学习JSP和Servlet,我们可以构建出高效、安全且可扩展性强的Web应用程序。这些技术不仅是Java Web开发的基础,也是现代Web应用的重要组成部分。掌握这些知识点对于开发者来说至关重要。

    JSP-Servlet中的汉字编码问题-JSP教程

    ### JSP-Servlet中的汉字编码问题详解 #### 一、引言 在Web开发中,尤其是在使用JavaServer Pages (JSP) 和 Servlet 进行页面处理时,字符编码问题是经常遇到的技术难题之一。本文将围绕“JSP-Servlet中的汉字编码...

    JSPServlet 中的汉字编码问题

    ### JSP Servlet 中的汉字编码问题详解 #### 一、问题背景 在计算机科学领域,尤其是在Web开发中,字符编码问题一直是开发者面临的一个常见难题。特别是在处理非英文字符时,如中文字符,很容易遇到编码不匹配导致...

    20130424AJSP/SERVLET

    综上所述,"20130424AJSP/SERVLET"很可能包含了关于这两项技术的基础知识、实例代码、可能的项目结构或者问题解决方案,对于学习和理解JSP与Servlet如何协同工作,以及如何构建动态Web应用具有重要价值。通过深入...

    JSP Servlet学习资料--全套PPT

    **JSP(JavaServer Pages)和Servlet是Java Web开发中的两个核心技术,它们是构建动态Web应用程序的基础。** **JSP** 是一种服务器端脚本语言,允许开发者在HTML页面中嵌入Java代码,使得网页能够动态生成内容。JSP...

    JQuery Ajax 仿google suggest 自动补全功能 支持中文(jsp / Servlet)

    本示例将深入解析如何使用jQuery Ajax实现一个仿Google Suggest的自动补全功能,特别针对中文输入进行了优化,并且结合了Java后端技术如jsp和Servlet。 首先,让我们理解这个功能的核心概念。Google Suggest的自动...

Global site tag (gtag.js) - Google Analytics