解决JavaScript 与Servlet之间的通讯
来源:互联网 发布:游戏编程 编辑:程序博客网 时间:2024/05/10 01:32
转贴地址:http://blog.csdn.net/dxmdxs/archive/2006/03/23/636170.aspx
http://blog.csdn.net/crackcell/archive/2007/09/03/1769654.aspx
解决JavaScript 与Servlet之间的通讯.通过测试,得出如下代码不会出现中文问题,当然这断代码有很多不足之处,或许是巧合.由此,系统可以通过JavaScript直接访问JavaBeans 读取数据库的记录并进行操作.
JavaScript代码如下:
URL="http://localhost:8080/xml/servlet/xml"
function SendXML()
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.Open("GET",URL,false);
xmlhttp.setRequestHeader("Charset","gb2312");
xmlhttp.send("唯思");
// 测试发送是否成功?
if ( xmlhttp.status == 200 )
{
alert(xmlhttp.responseText);
} else{
alert("服务器错误,状态代码:"+xmlhttp.status+",原因:"+xmlhttp.reason);
}
}
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;
public class xml extends HttpServlet {
public xml() {
super();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.print(request.getReader().readLine());
out.flush();
out.close();
}
}
解决JavaScript 通过XML与Servlet之间的通讯.即可以传递一个XMLDOM交给Servlet进行处理.
JavaScript源代码如下:
<script>
URL="http://localhost:8080/xml/servlet/xml"
var xml="<?xml version='1.0' encoding='utf-8'?><root>唯思</root>"
function SendXML()
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.Open("POST",URL,false);
xmlhttp.setRequestHeader("charset", "utf-8");
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(xml);
xmlhttp.send(xmlDoc);
// 测试发送是否成功?
if ( xmlhttp.status == 200 )
{ //alert(SendMessage);
xmlDoc.loadXML(xmlhttp.responseText); document.getElementById("ws").innerHTML=xmlDoc.selectSingleNode("/root").text;
} else
{
alert("服务器错误,状态代码:"+xmlhttp.status+",原因:"+xmlhttp.reason);
}
}
</script>
Servlet代码如下:
public class xml extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
Document doc;
try {
doc = factory.newDocumentBuilder().parse(request.getInputStream());
DOMSource source = new DOMSource(doc);
Result result = new StreamResult(out);
Transformer xformer = TransformerFactory.newInstance()
.newTransformer();
xformer.transform(source, result);
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
e.printStackTrace();
}
out.flush();
out.close();
}
}
测试结果:唯思. 由此,我们可以通过javax.xml.parsers和org.w3c.dom在Servlet内部解析XML并将所要求的请求发送到Hibernate操作MySQL实现更方便快速的进行查询及更改.
注意: 1.在写JavaScript验证的时候,并不能完全代替后台的数据验证,这是因为攻击者完全可以伪造浏览进行非法递交. 对于安全非常重要的环节,绝对不可以忽略这一点. 2.在写JavaScript生成XML于Servlet进行通讯的时候,当递交和返回都含有整个数据库的内容时,此方法并不可取. 这是因为,当需求发生更改时,将导致大理代码的修改. 所以,此方法只比较合适用于简单操作上,如用户名是否重复,删除某一用户等,只需要简单数据,并且这些数据的变更非常小.
- 解决JavaScript 与Servlet之间的通讯
- javascript 与 actionscript 之间的通讯
- AS3与JavaScript之间的通讯
- Servlet与Client之间的http协议通讯
- J2me和Servlet之间的相互通讯
- javascript与applet之间相互通讯
- javascript与applet之间通讯一
- javascript与applet之间通讯二
- javascript与applet之间通讯三
- javascript与applet之间通讯四
- javascript与applet之间相互通讯
- javascript与applet之间相互通讯
- flash和javascript之间的通讯
- flash javascript之间的通讯方法小结
- Fragment与Activity之间的通讯(解决Android中Fragment调用startactivityforresult不能返)
- applet 与 servlet 通讯的问题.
- Portlet之间通讯与传统的通讯方式不一样
- asp.net与javacript之间的通讯
- 单片机实验——0到60秒的计时器
- 新问题新方法 旧方法新问题
- java WebService例子
- 最新修正省市县级联下拉菜单 JavaScript
- 剑雨
- 解决JavaScript 与Servlet之间的通讯
- Boost在VS2008下的正确编译
- MySQL 服务器调优
- 怎么让别人喜欢你
- Fltk1.1.10在vs2008下面编译通过~
- 数据结构(3树)
- 读入n个数,并把他存入一个数组,并且数字不能重复
- 清除系统垃圾 一键清除系统垃圾.bat
- Save could not be completed. Reason: some characters cannot be mapped using “ISO-8859-1“ character encoding.的解决方案分析