在上一章节提到了Get()请求方式在Servlet处理中出现乱码的问题,使用的解决方案是字符串的强制编码方式。Post()请求可以通过HttpServletRequest对象的request.setCharacterEncoding("字符集,GBK或者UTF-8");来解决。
那么,为什么在Servlet中对两种请求方式的乱码处理需要区别对待呢?这就是本次要跟大家来讲解的内容。是不是除了强制转码的方式,Get()就不能使用和Post()一样的处理方式来解决了么?答案当然是否定的。
我们先来看一下原来两种请求的解决方案。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String uname = request.getParameter("name");
System.out.println(uname);//乱码
if(uname!=null){
//将uname的值通过原来的编码方式(ISO-8859-1)转换成可显示中文的编码(GB2312)
uname=new String(uname.getBytes("ISO-8859-1"),"GB2312");
}else{
uname="游客";
}
System.out.println(uname);//输出中文“琳达”
// 省略
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//请求的页面设置了GBK方式进行编码,那么通过request来设置获取的对应编码
//如果请求式为Get()则此代码无效
request.setCharacterEncoding("GBK");
String uname = request.getParameter("name");
System.out.println(uname);//正常的文字
// 省略
}
为什么在Servlet中对两种请求方式的乱码处理需要区别对待呢?
Post()请求下URL encode的方式取决于Jsp和Html页面的字符集设置,这是开发人员可以指定的,但是Get()请求下的URL encode对上面的做法却不予理会。
看servlet的官方API说明有对request.setCharacterEncoding("字符集,GBK或者UTF-8");方法的解释:Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader().那么Get()请求在Servlet中使用request.getParameter("name");即使对setCharacterEncoding("字符集")进行了设置,还是会出现乱码。可以看出对于Get()方法他是无能为力的。
网上有这样的处理方法,介绍给大家。
<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK"/>
这样Tomcat的解码方式就从默认的“ISO-8859-1”变成现在的“GBK”,让Tomcat使用指定的方式进行URL decode(解码)。
Get()、Post()请求下都适用的处理方法:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//请求的页面设置了GBK方式进行编码,那么通过request来设置获取的对应编码
//如果请求方式为Get()这样也有效了!
request.setCharacterEncoding("GBK");
String uname = request.getParameter("name");
System.out.println(uname);//正常的文字
// 省略
}
本章的讲解,主要对Get()方式乱码的解决方案提出了补充的方法——对Tomcat的URL encode进行指定。原来使用强制转码来还原数据就是因为Tomcat的默认解码方式ISO-8859-1。问题出在哪里,我们就在哪里进行解决。
期待大家的关注,也希望得到宝贵的建议。
分享到:
相关推荐
通过以上方法,基本可以解决servlet和jsp在接收和显示中文时的乱码问题。但在实际开发中,可能还需要根据具体环境和需求进行调整。了解这些知识点,对于Java Web开发者来说是非常必要的,能够提高项目的稳定性和用户...
本文将深入探讨JSP和Servlet中文乱码问题的根源、解决方案以及预防策略。 ### JSP和Servlet中的中文乱码问题根源 中文乱码问题通常源于字符编码不一致或配置错误。在Web应用中,数据流经多个环节,包括客户端...
本文将深入探讨如何解决Servlet页面显示乱码的问题,这对于初学者来说是至关重要的知识点。 首先,我们需要理解乱码的根源。在Web应用中,乱码通常出现在两个阶段:输入(如POST表单数据)和输出(如HTML页面的响应...
jsp 传参 servlet 接收中文乱码问题的解决方法 jsp 传参 servlet 接收中文乱码问题是一个经常遇到的问题,特别是在使用 Hibernate+Servlet 框架时。当我们在 jsp 页面传参到 servlet 时,中文字符经常会出现乱码...
### Servlet + Tomcat 中文乱码问题解析及解决方案 #### 一、中文乱码问题概述 在使用Servlet和Tomcat进行Web开发时,经常会遇到中文乱码的问题。这主要是因为客户端(如浏览器)与服务器之间使用的字符编码不一致...
二、乱码问题分析 当Servlet需要输出JS代码,尤其是包含中文字符时,可能会遇到乱码问题。这主要是因为浏览器和服务器之间存在编码不一致的情况。在默认情况下,Servlet容器会使用ISO-8859-1编码来处理HTTP请求和...
本文将深入探讨Servlet和JSP中的乱码问题及其解决方法。 首先,我们需要理解字符编码的基础知识。在计算机中,字符编码是用来表示文本的方式,常见的有ASCII、GBK、UTF-8等。不同的编码格式可能导致相同字符的二...
### 解决JSP+Servlet开发中的中文乱码问题 #### 概述 在基于JSP(Java Server Pages)和Servlet技术的Java Web应用开发过程中,中文乱码问题一直是困扰开发者的一大难题。由于Java Web应用程序涉及多个组件之间的...
### javaweb servlet(jsp)的乱码问题原理及解决 #### HTTP协议的基本理解与乱码问题背景 HTTP协议作为互联网应用中最为广泛使用的通信协议之一,它定义了客户端和服务端之间的交互规则。HTTP请求主要分为GET和...
### Servlet及JSP解决中文乱码问题 #### 一、引言 在Web开发中,中文乱码问题一直是困扰开发者的一大难题。特别是在使用Java技术栈(如Servlet与JSP)进行开发时,如果处理不当,很容易出现中文字符显示乱码的情况...
jsp+servlet+mysql乱码解决方案是指在使用jsp+servlet+mysql开发web应用程序时,如何解决中文乱码问题的解决方案。该方案通过设置每个页面的编码格式为utf-8,控制器servlet中的请求编码格式为utf-8,数据库连接url...
在Web开发中,尤其是涉及到Java和JSP的项目,中文乱码问题常常困扰着开发者。本文将深入探讨这个问题,提供解决方案。 首先,我们需要理解乱码的根源。乱码通常由于字符编码不一致导致,尤其是在JSP文件中,不同的...
jsp乱码问题是jsp开发中常见的问题之一,该问题可能会导致jsp页面显示乱码,影响用户体验。解决jsp乱码问题的方法有多种,以下是一些常见的解决方案: 1. 设置pageEncoding参数 设置pageEncoding参数可以解决jsp...
本文将深入探讨“JSP乱码”的多种解决方案,并提供实用的解决策略。 1. **理解字符编码的基本概念** - 字符编码是计算机对文字进行存储和处理的标准,常见的有ASCII、GBK、UTF-8等。 - JSP页面默认使用ISO-8859-1...
### Servlet过滤器解决乱码问题 在Web应用开发过程中,字符编码问题经常出现,尤其是在处理中文等多字节字符时。如果不正确地设置字符编码,可能会导致页面显示乱码。本文将详细介绍如何通过Servlet过滤器来解决这...
在开发基于JSP和Servlet的Web应用时,中文乱码问题是一个常见的困扰许多开发者的难题。尤其是当JSP页面向Servlet传递中文参数时,如果不正确地处理,很容易出现乱码的情况,影响用户使用体验和数据准确性。下面,我...
### jspservlet取参数乱码问题分析 #### 一、问题本质及原因分析 在Java Web开发中,尤其是在处理中文参数时,经常会遇到一个常见问题——**jspservlet取参数乱码**。这一现象通常发生在当用户从客户端提交包含...
在Java Web开发中,尤其是使用JSP和Servlet技术时,字符编码问题——即所谓的“乱码”问题,是开发者常遇到的挑战。本篇将详细解析如何在Java Web项目中彻底解决乱码问题,确保数据在各个环节都能正确地显示和处理。...
本文将深入探讨JSP乱码的原因及其解决方案,帮助开发者有效地处理这类问题。 ### 1. JSP乱码的成因 - **字符集设置不一致**:JSP文件、HTML页面、HTTP头、Servlet输出以及数据库存储等环节的字符集设置不一致,...
- **POST请求**:可以通过在JSP页面或Servlet中设置请求编码来解决POST请求中的乱码问题。例如: ```java ("UTF-8"); %> ``` - **GET请求**:由于GET请求的参数直接包含在URL中,因此不能通过`request.set...