关于JSP页面中的pageEncoding和contentType两种属性的区别:
pageEncoding是jsp文件本身的编码
contentType的charset是指服务器发送给客户端时的内容编码
JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是在客户端浏览器里看到的网页, 用的是contentType。
第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。
第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。
JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。
第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效
而include指令就是在第一阶段之前执行的,注意这个是在第一阶段之前,所以,如果包含文件和被包含文件的文件编码不是utf-8,那么,该指令就会工作不太正常,不能正确的把被包含的文件从原来编码转换为包含文件的编码,就会出现乱码现象.
解决的方法有很多,一种很简单的方法就是,把包含文件的pageEncoding设置为utf-8,同时,把被包含文件的pageEncoding也设置
为utf-8,如果被包含文件为html的话,如果你使用的ide是eclipse的话,那么,可以这么做,在被包含文件名上右键单击,选择属性
(properties),Resource下,在text file
encoding里选择utf-8,这样就可以做到正常显示了.如果用的是其他的编辑工具,比如Dream
weaver,也有响应的修改页面编码的地方.
另外一种方法比较麻烦点,但是也挺好用,支持各种编码方式,只需要修改web.xml文件就可以了.
方法为:在web.xml里添加(注意我所使用的javaee版本2.5为
<web-app xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5″>
<jsp-config>
<jsp-property-group>
<description>jsp encoding example</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>gbk</page-encoding>
<scripting-invalid>false</scripting-invalid>
<include-prelude></include-prelude>
<include-coda></include-coda>
</jsp-property-group>
<jsp-property-group>
<description>html encoding example</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.html</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>gbk</page-encoding>
<scripting-invalid>false</scripting-invalid>
<include-prelude></include-prelude>
<include-coda></include-coda>
</jsp-property-group>
</jsp-config>
</web-app>
分享到:
相关推荐
在JSP中,页面的编码、包含的文件的编码以及服务器的默认编码如果设置不统一,就可能出现乱码现象。 1. **JSP页面编码设置**: JSP页面默认的编码是ISO-8859-1,若内容包含中文或其他非ASCII字符,需要在页面头部...
要解决 JSP include 文件时的乱码问题,需要在被包含文件中再次声明 `contentType`。例如,在 Tomcat 5.x 版本中,需要在被包含文件中声明 `@page contentType="text/html; charset=gbk"`,且这里声明的内容必须跟...
在多个页面通过`include`指令合并时,需要确保所有包含的页面都保持一致的编码设置。 6. **数据库操作** 在数据库操作中,乱码问题通常出现在输入和输出。确保数据库连接的字符集设置与你的应用中使用的编码匹配。...
文件中的`<%@ include file="../common/header.jsp" %>`和`<%@ include file="../common/footer.jsp" %>`分别包含了页面的头部和尾部内容。这是常见的做法,可以提高代码的重用性和维护性。在`header.jsp`中可能...
如果页面中包含其他被`include`指令引入的文件,则这些文件也必须设置相同的`pageEncoding`值,避免出现类似`org.apache.jasper.JasperException`异常。 为了更好地管理这些配置,可以在`web.xml`文件中集中设置...
jsp中include指令静态导入和动态导入的区别详解JSP编译指令page、include详解JSP中动态include与静态include的区别介绍JSP指令元素(page指令/include指令/taglib指令)复习整理基于jsp:included的使用与jsp:param乱码...
### JSP内置对象之域对象和JSP指令详解 #### JSP内置对象之域对象 在JSP技术中,有几种内置对象被称为“域对象”,它们用于存储数据,并且具有不同的作用范围。这些域对象包括`pageContext`、`request`、`session`...
JSP指令主要分为三类:页面指令、包含指令和标签库指令。这些指令在JSP文件中以`<%@>`开头,它们不是HTML标签,而是用于配置JSP页面和引入外部资源的元数据。 1. **页面指令**(Page Directive):页面指令用于设置...
本文中涉及到的核心知识点包括了JSP标签库中的<jsp:include>标签的使用以及解决通过<jsp:param>标签传递参数时出现的乱码问题。 首先,让我们来了解<jsp:include>标签的使用。在JSP页面中,<jsp:include>标签被用来...
当使用`jsp:forward`或`jsp:include`等JSP动作指令传递中文参数时,应在原页面中设置`request`对象的字符编码,确保中文参数的正确传递。 例如,在`param.jsp`中: ```java <%@ page contentType="text/html;...
在将HTML文件转换为JSP文件之前,需要在HTML文件的头部添加JSP指令,告知服务器这是一个JSP页面,并指定字符编码和内容类型。这一步骤的代码如下: ```jsp <%@ page language="java" contentType="text/html; ...
五、jsp 动作指令传递中文乱码解决 在使用 jsp 动作指令(如 jsp:forward、jsp:include)时,只需在原页面中设置 request 的字符编码格式为当前网页编码即可。例如: 原页面 param.jsp 代码(设网页编码为 gb2312...
在搭建JSP开发环境时,还需要设置项目的编码格式为UTF-8,确保文件编码一致性,避免出现乱码问题。通过配置,可以在Eclipse或MyEclipse中设置默认的字体大小,提升代码阅读和编辑的舒适度。 总的来说,JSP是一种...
因此,为了解决request中文乱码问题,JSP提供了一种使用过滤器(Filter)的方法。 在JSP中使用过滤器来解决中文乱码问题的步骤大致如下: 首先,要创建一个过滤器类,该类需要实现javax.servlet.Filter接口。在该...
在JSP文件中,可能使用了JSP指令(如`<%@ page %>`, `<jsp:include>`等)和脚本元素(如`<% %>`)来控制页面行为和导入必要的Java类。 10. **响应编码与字符集** 在JSP页面中,确保正确的响应编码和字符集是非常...
- **指令元素**:如`<%@ page %>`, `<%@ include %>`, `<jsp:include>`, `<jsp:useBean>`, `<jsp:setProperty>`等,它们提供有关JSP页面的元信息,例如设置页面编码、导入Java包等。 - **动作元素**:如`<jsp:...
### JSP指令元素 JSP提供了三种基本的指令元素:`page`、`include`和`taglib`。这些指令用于控制JSP页面的行为,如设置脚本语言、导入包、指定错误处理页面、包含其他资源等。 #### page指令 `<%@ page %>` 这个...
### JSP基础知识与应用详解 #### 一、JSP概述 JSP(JavaServer Pages)是一种基于Java技术的服务器端动态网页开发技术。它通过在HTML文档中嵌入Java代码来实现动态页面的生成。JSP文件在服务器上被编译成Servlet,...
包括`<jsp:include>`、`<jsp:forward>`、`<jsp:param>`等,用于在JSP页面中进行页面包含、转发等操作。`<% %>`用于插入Java代码,`<%= %>`用于输出表达式的值。 10. **JSP与HTML结合**: JSP允许在HTML中嵌入Java...
- `<%@ include %>`指令:用于包含其他文件,语法格式为`<%@ include file="relativeURL" %>`,其中`relativeURL`为相对路径。 - `<%@ taglib %>`指令:用于指定自定义标签库的位置,语法格式为`...