`

request.setCharacterEncoding(reqEnc)的作用问题

 
阅读更多
request.setCharacterEncoding(reqEnc);
 
这个方法要在获取参数之前调用才会有效,也就是说,如果在getParameter()或者  getReader ()之后调用,会失效。
 
jsp的动作指令<jsp: include page="relative.jsp">是在请求运行中执行,把编译之后生成的servlet代码嵌入原页面中。
 
每一个request请求访问一个jsp页面的时候,如果不手动设置request请求的编码字符,那么jsp容器都会自动设置默认的编码字符。
 
比如说当前服务器的默认编码为GBK,有一个页面common.jsp如下,想把对这个页面的请求参数转为UTF-8编码
<%@ page contentType="text/html;charset=GBK" errorPage="/common/errorPage.jsp" %><%@ 
page trimDirectiveWhitespaces="true" %>
<%@include file="/common/setCharset.jsp"%>
<jsp:include page="/common/config.jsp" /><%!
static boolean validate(HttpServletRequest request) {
if (!request.getMethod().equalsIgnoreCase("POST")) {
   return false;//false;  //TODO 正式使用时放开
}
return true;
}
%>
 
在/common/setCharset.jsp里面设置了 request.setCharacterEncoding("UTF-8");此时访问common.jsp的这个request请求的编码方式变成了UTF-8,
当执行到<jsp:include page="/common/config.jsp" />的时候,因为config.jsp里面没有手动设置编码方式,也没有进行getParameter()或者  getReader ()操作,所以,jsp容器又会把访问common.jsp的这个request请求在动态访问加载config.jsp生成的servlet代码之后,编码方式变成了GBK。
 
解决方案:
(1)在config.jsp文件的开头,手动设置请求编码为UTF-8
(2)在<%@include file="/common/setCharset.jsp"%>这句后面加一些getParameter()方法,让setCharacterEncoding()方法生效。
 
 
 
另外:
我们来总结一下两种include 两种用法的区别,主要有两个方面的不同: 
一、执行时间上: 
<%@ include file=”relativeURI”%> 是在翻译阶段执行 
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行。 
二、引入内容的不同: 
<%@ include file=”relativeURI”%> 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起。 
<jsp:include page=”relativeURI” flush=”true” /> 引入执行页面或servlet所生成的应答文本。
 
 
 
 
 
 
 

 

分享到:
评论

相关推荐

    JAVA过滤器filter request.setCharacterEncoding仅对POST提交起作用,对GET提交还是会出现乱码问题

    标题和描述中提到的问题——"JAVA过滤器filter request.setCharacterEncoding仅对POST提交起作用,对GET提交还是会出现乱码问题",是由于对HTTP协议的理解不足以及不正确的编码设置导致的。下面将详细解释这个问题...

    对Servlet 中 request.setEncoding("utf-8")的分析

    当调用`request.setEncoding("utf-8")`时,实际上是调用了`Request`类的`setCharacterEncoding`方法。这个方法首先检查一个布尔变量`usingReader`。如果`usingReader`为`true`,则意味着已经调用了`getReader()`...

    Tomcat中Get和Post出现乱码的解决办法

    1. 将 GET 请求改成 POST 请求,然后使用 request.setCharacterEncoding 方法设置编码,并使用 request.getParameter 方法直接获得中文请求参数。 2. 在 Servlet 中使用以下代码来得到中文请求参数:String name = ...

    Jsp页面中的字符编码方式与乱码解决方法

    * 是否正确地使用了 request.setCharacterEncoding 和 response.setCharacterEncoding 方法 * 浏览器的编码方式是否正确 字符编码方式的设置是 JSP 中非常重要的一方面,正确地设置字符编码方式可以避免乱码问题的...

    Jsp页面中的字符编码方式与乱码解决方法[归类].pdf

    request.setCharacterEncoding 的作用是设置对客户端请求进行编码的方式。该方法用来指定对浏览器发送来的数据进行编码的编码方式。 4. response.setCharacterEncoding response.setCharacterEncoding 的作用是...

    其他类别JSP无限级分类目录树-sorttree.zip

    request.setCharacterEncoding("gb2312"); response.setCharacterEncoding("gb2312"); out=response.getWriter(); OpenConn(dsn,user,password); //建立连接 show(sql,0); closeConn(); }

    JSP在Servlet中的几个编码的作用及原理 .txt

    具体涉及到了`pageEncoding`, `contentType`, `request.setCharacterEncoding`, `response.setCharacterEncoding`等几个关键概念。 --- ### 正文 在JSP与Servlet的实际开发过程中,中文乱码问题是非常常见的一个...

    web乱码解决web乱码解决

    3、request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码的编码。该方法用来指定对浏览器发送来的数据进行重新编码(或者称为解码)时,使用的编码。 4、response.setCharacterEncoding(...

    jsp编码 jsp乱码

    jsp编码 jsp乱码解决方案 ...通过设置pageEncoding参数、contentType参数、request.setCharacterEncoding方法和response.setCharacterEncoding方法等,可以解决jsp页面中的乱码问题,提高Web应用程序的用户体验。

    JSP用户提交页面编码

    通过合理使用`request.setCharacterEncoding()`方法并结合全局配置,可以有效地解决编码问题,提升用户体验。同时,在开发过程中还需要密切关注各种可能引起乱码的因素,确保应用能够稳定运行。

    Request、Request.Form和Request.QueryString的区别

    在探讨Request、Request.Form和Request.QueryString的区别之前,我们先来明确一下它们在Web开发中的基本概念和作用。在Web应用程序中,服务器与客户端之间通过HTTP协议进行数据交换,这一过程涉及到了请求(Request)...

    对Django 中request.get和request.post的区别详解

    Django 中request.get和request.post的区别 POST和GET差异: POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。 POST和GET都...

    request.getcontextPath()_详解

    在Web应用程序中,我们经常需要解决JSP测试和生产环境路径不同的问题,例如,我们可以使用request.getcontextPath()方法来获取当前Web应用程序的Context Path,然后使用该Context Path来解决路径问题。 例如:...

    【ASP.NET编程知识】ASP.NET Core读取Request.Body的正确方法.docx

    许多开发者在读取 Request.Body 时都会遇到一些问题,本文将详细介绍读取 Request.Body 的正确方法。 首先,在 ASP.NET Core 中,Request.Body 是一个 Stream 对象,它不能被直接读取。我们需要使用 StreamReader ...

    Request.QueryString 乱码问题

    ### Request.QueryString 乱码问题解析及解决方案 在Web开发中,经常会遇到通过URL传递参数的情况。其中,`Request.QueryString`是ASP.NET中用于获取URL查询字符串(即URL中问号后的部分)的一种常用方法。然而,在...

    用户管理系统(ums)

    request.setCharacterEncoding("GB18030"); //调用业务逻辑 UserDAO userDAO = new UserDAO(); // 返回的list值 ArrayList list=userDAO.queryAll(); //重点。。。HttpSession的用处??? HttpSession...

    JSP在Servlet中的几个编码的作用及原理

    与`request.setCharacterEncoding`相对应,`response.setCharacterEncoding`用于设定服务器响应数据的编码方式。这一步骤至关重要,因为即使前端页面和后端处理逻辑中的编码设置都正确,如果响应头中的字符集未正确...

    jsp连接MySQL实现插入insert操作功能示例

    下午终于实现了jsp连接MySQL执行插入操作的功能。在index.jsp页面输入数据,提交到mysql——insert.jsp页面进行插入... request.setCharacterEncoding(“UTF-8”); response.setCharacterEncoding(“UTF-8”); respo

    MyEclipse中文乱码问题简单解决方案,不需任何编码转化

    &lt;%request.setCharacterEncoding("utf-8");%&gt;` 这段代码设置了页面的编码方式为 UTF-8,并将 request 对象的编码方式设置为 UTF-8。 2. 如果使用 Servlet,在 doPost 或 doGet 方法的第一行添加以下代码: `...

Global site tag (gtag.js) - Google Analytics