页面代码:
script type="text/javascript">
function sendXML(){
//获取参数
var name = document.getElementById("nm").value;
var pwd = document.getElementById("pwd").value;
var xhr = null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else{
xhr = new ActiveXObject("Microsoft.XMLHttp");
}
var url = "<c:url value='/AjaxOneServlet' />";
xhr.open("POST",url,true);
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
if(xhr.status==200){
//接收后台xml格式数据
var xmlDomObj = xhr.responseXML;
var users = xmlDomObj.getElementsByTagName("user");
for(var i=0;i<users.length;i++){
var id = users[i].getAttribute("id");
var name = users[i].childNodes[0].firstChild.data;
var age = users[i].childNodes[1].firstChild.data;
alert(id+","+name+","+age);
}
}
}
}
//向后台发送xml格式数据
var xml = "<user><name>"+name+"</name><pwd>"+pwd+"</pwd></user>";
xhr.setRequestHeader("ContentType","application/x-www-form-urlencoded");
xhr.send(xml);
}
</script>
后台代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
InputStream in = request.getInputStream();
//注意,转换流要指定编码,否则会出现乱码
BufferedReader br = new BufferedReader(new InputStreamReader(in,"utf-8"));
String line = "";
StringBuilder sb = new StringBuilder();
while((line=br.readLine())!=null){
sb.append(line);
}
String str = sb.toString();
System.out.println(str);
SAXReader sax = new SAXReader();
try {
Document dom = sax.read(new StringReader(str));
Element root = dom.getRootElement();
String name = root.elementText("name");
String pwd = root.elementText("pwd");
System.out.println(name+","+pwd);
List<User>users = new ArrayList<User>();
users.add(new User("U001","Jack",22));
users.add(new User("U002","张三",24));
users.add(new User("U003","李四",27));
StringBuilder sb2 = new StringBuilder("<users>");
for(User u:users){
sb2.append("<user id=\""+u.getId()+"\"><name>"+u.getName()+"</name><age>"+u.getAge()+"</age></user>");
}
sb2.append("</users>");
response.setContentType("text/xml;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.println(sb2.toString());
} catch (DocumentException e) {
e.printStackTrace();
}
}