`

Ajax基础+Ajax开发中的编码问题

    博客分类:
  • Ajax
阅读更多

·-- 首先开发中要注意的一个问题,这个问题困扰我好几个小时,编码问题。

如果在Servlet进行如下设置时:

                     resp.setContentType("text/xml;charset=UTF-8");
         resp.setCharacterEncoding("UTF-8");

IE8和火狐时没有问题的,但是换成如下形式,

                     resp.setContentType("text/xml;charset=UTF-8");
                     resp.setCharacterEncoding("GBK");

或者
                     resp.setContentType("text/xml;charset=GBK");
                     resp.setCharacterEncoding("GBK");

时,会出现的现象是火狐操作正常,IE操作不正常。原理暂时不清楚,等待高手指点。

1、新建一个Servlet

package com.sunrex.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class AjaxServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		resp.setContentType("text/xml;charset=UTF-8");
		resp.setCharacterEncoding("UTF-8");
		resp.setHeader("Cache-Control", "no-cache");
		StringBuffer sb = new StringBuffer();
		sb.append("<nation>");
			sb.append("<detail>");
				sb.append("<address>").append("中国").append("</address>");
				sb.append("<city>").append("上海").append("</city>");
			sb.append("</detail>");
			
			sb.append("<detail>");
				sb.append("<address>").append("美国").append("</address>");
				sb.append("<city>").append("纽约").append("</city>");
			sb.append("</detail>");
			
			sb.append("<detail>");
				sb.append("<address>").append("日本").append("</address>");
				sb.append("<city>").append("东京").append("</city>");
			sb.append("</detail>");
		sb.append("</nation>");
		System.out.println(sb.toString());
		PrintWriter out = resp.getWriter();
		out.write(sb.toString());
		out.close();
	}
}

 

2、配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>ajax</servlet-name>
  	<servlet-class>com.sunrex.servlet.AjaxServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>ajax</servlet-name>
  	<url-pattern>/servlet/ajax</url-pattern>
  </servlet-mapping>  
</web-app>

 

3、jsp文件

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
<script type="text/javascript">
	var xmlHttp;
	function createXMLHTTP() {
		if(window.XMLHttpRequest) {
			xmlHttp = new XMLHttpRequest();
		} else if(window.ActiveXObject) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	function show() {
		
		createXMLHTTP();
		var url = "servlet/ajax";
		xmlHttp.open("GET", url);
		xmlHttp.onreadystatechange = callback;
		xmlHttp.send(null);
	}
	
	function callback() {
		if(xmlHttp.readyState == 4) {
			if(xmlHttp.status == 200) {
				var xmlText = xmlHttp.responseXML.getElementsByTagName("nation")[0];
				var childrenNodes = xmlText.childNodes;
				var nodeLength = childrenNodes.length;
				var tables = "<table border='1'>";
				for(var i=0; i<nodeLength; i++) {
					var address = childrenNodes[i].childNodes[0].firstChild.nodeValue;
					var city = childrenNodes[i].childNodes[1].firstChild.nodeValue;
					tables = tables + "<tr><td>" + address + "</td>";
					tables = tables +  "<td>" + city +  "</td></tr>";
				}
				tables = tables + "</table>";
				document.getElementById("showContent").innerHTML = tables;
			}
		}
	}
</script>
</head>
<body>
<input type="button" name="button1" value="显示服务器内容" id="button1" onclick="show()">
<br>
<span id="showContent"></span>
</body>
</html>

 

分享到:
评论

相关推荐

    PHP+Ajax网站开发典型实例-源代码

    实例34 数据编码 实例35 简单购物车 第5章 PEAR和正则表达式实例 实例36 PEAR管理器安装及PEAR包常见操作 实例37 HTML QuickForm完成表单验证 实例38 Calendar仓建日历 实例39 File Find搜索文件 实例40 HTTP Upload...

    PHP+Ajax网站开发典型实例

    PHP+Ajax网站开发典型实例.。。 第1章 PHP基础实例 实例1 构建PHP运行环境 实例2 “你好,PHP”实例 实例3 中文时间显示实例 实例4 删除字符串中的空白 实例5 字符串反转 实例6 字符串加密 实例7 检查日期的...

    基于JSP+Ajax+MyEclipse 2015 Java聊天室软件源码+说明文档.zip

    通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,以此来完成Java聊天室的分析、设计、编码、测试等工作。 1.2. 任务 通过认真阅读老师所给的课程设计的...

    ajax中文乱码如何解决

    今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下有同样问题的朋友们。我的开发环境:XP, eclipse,使用GB18030编码。 当遇到这个问题时,到网上去查了好多文章,提到几种解决方案,如:全站UTF-8编码;请求头...

    基于AJAX技术开发Web电子邮件客户端

    包含: 基于AJAX技术开发Web电子邮件客户端之UI篇.doc 基于AJAX技术开发Web电子邮件客户端之编码篇.txt 基于AJAX技术开发Web电子邮件客户端之与邮件服务器通讯篇.txt

    Ajax 经典案例开发大全

    1-2.EXE 根据邮政编码获取地区信息实例演示 1-3.EXE 动态树形列表实例演示 1-4.EXE 多级联动菜单实例演示 1-5.EXE 条件设置向导实例演示 1-6.EXE 页面关键词提示实例演示 2-1.EXE 无刷新显示回帖实例演示 2-2.EXE ...

    Ajax异步请求JSon数据(图文详解)

    上一篇讲了Ajax请求数据text类型,text和html都是处理比较简答的数据,而在编程过程中使用Ajax调用数据的时候,难免要进行逻辑的处理,接受的数据也变的复杂比如数组类型的数据,这时候就需要使用JSON数据类型进行...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料;本资料仅用于学习。 【课程内容】 第1周 开课介绍 python发展介绍 第一个python程序 变量 字符编码与二进制 字符编码的区别与介绍 用户交互程序 if ...

    个性化定制系统(Ajax+Spring+Hibernate)(Java EE项目案例)

    如果上面5步都没问题,你就不存在中文乱码问题。 ====================================================== 数据库使用的是MySQL,其版本为5.0.45 版本。 数据库的用户名及密码均为root。 使用的时候,请参考附件...

    在ajax应用当中的编码问题

    模型一般使用java类来开发,在开发完成乊后,可以立即测试。如果业务逻辑直接写在servlet 里面,则需要部署在服务器上面才能测试,比较麻烦。 3) 组件复用 控制器可以做成一个通用的模块。 4) 代码好维护,利亍分工...

    AJAX基础概念、核心技术与典型案例(内涵动态实例)

    程序描述:本章将介绍 GWT应用中高级应用的部分,包括各中组件和布局、如何发送XMLHttpRequest请求,以及如何解决浏览器历史记录问题等等,同时读者还将详细的了解RPC应用的开发过程。 /xmlsample/AjaxSample....

    基于AJAX技术的电子商城系统的设计与开发

    而Struts把Servlet、JSP、自定义标签和信息资源整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,更好实现了分层,并节省了时间开发;Hibernate是一个开放源代码的对象关系映射框架...

    【卷一/共两卷】AJAX实战pdf高清版90M

    1.3 真实世界中的Ajax富客户端 1.3.1 现状 1.3.2 Google Maps 1.4 Ajax的替代方案 1.4.1基于Macromedia Flash的方案 1.4.2 Java Web Start及其相关技术 1.5 小结 1.6 资源 第2章 Ajax新手上路 2.1 Aiax的关键元素 ...

    最新-客户关系管理系统-(基于SSH框架+Ajax)

    项目技术和环境简介: Struts1.2、Hibernate3、Spring2.5、Ajax、Dwr、Oracle10g/sqlserver、Tomcat6.0、Junit、Log4j全新的客户关系管理系统!从需求分析和ER图形基本设计和入手直到编码和测试结束、包含一系列文档! ...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    第14章 AJAX开发技术 14.1、AJAX技术简介 14.2、XMLHttpRequest对象 14.3、第一个AJAX程序 14.4、异步验证 14.5、返回XML数据 14.6、本章摘要 14.7、开发实战讲解(基于Oracle数据库) 第15章 ...

    毕业设计,基于SpringBoot+Vue+MySql开发的前后端分离的实习管理系统,内含完整源代码,数据库脚本,视频教程

    然后,详细设计系统的主要功能模块,通过数据库设计过程将相关的数据信息存储到数据库中,再通过使用关键的开发工具,如IDEA开发平台、AJAX技术等,编码设计相关的功能模块。接着,主要采用功能测试的方式对系统进行...

    ajax dwr 2.0 框架 jar包 中文官方文档 天涯浪子

    利用这个框架可以让AJAX开发变得很简单. DWR 是一个开放源码的使用 Apache 许可协议的解决方案,它包含服务器端 Java 库、一个 DWR servlet 以及 JavaScript 库。虽然 DWR 不是 Java 平台上唯一可用的 Ajax-RPC ...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》介绍了Web开发中客户端技术的基础知识,包括JavaScript、CSS、AJAX等,这些技术都是Web应用中常用的客户端技术。 《Java Web开发技术大全:JSP+...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》介绍了Web开发中客户端技术的基础知识,包括JavaScript、CSS、AJAX等,这些技术都是Web应用中常用的客户端技术。 《Java Web开发技术大全:JSP+...

    基于Servlet3.0+IBatis+BootStrip技术构建简单会议管理系统

    本课程针对有一定程序开发基础并有志于JAVA WEB开发的学员,理解MVC开发模式,能够熟练使用PowerDesigner 设计数据库,熟练使用mybatis进行开发,熟悉Servlet3.0的一些新特性,掌握bootstrap基本用法 课程大纲 ...

Global site tag (gtag.js) - Google Analytics