正 文

Ajax铺设了更好的开发Web应用的道路


www.7dspace.com  更新日期:2005-11-4 1:44:31  七度空间


  下一步,设置XMLHttpRequest的头信息,以标志请求的内容为form-encoded。最后,将form-encoded数据作为请求体,并发送此请求。列表3中集中展示了这些步骤。

  列表3:发送一个添加到购物车XMLHttpRequest

/*
 * 通过产品编码,在购物车中添加一个条目
 * itemCode – 需要添加条目的产品编码
 */
function addToCart(itemCode)
{
  // 获取一个XMLHttpRequest实例
  var req = newXMLHttpRequest();
  // 设置用来从请求对象接收回调通知的句柄函数
  var handlerFunction =
  getReadyStateHandler(req, updateCart);
  req.onreadystatechange =
  handlerFunction;
  // 打开一个联接到购物车servlet的
  HTTP POST联接
  // 第三个参数表示请求是异步的
  req.open("POST", "cart.do", true);
// 指示请求体包含form数据
  req.setRequestHeader("Content-Type",
 "application/x-www-form-urlencoded");
// 发送标志需要添加到购物车
中条目的form-encoded数据
req.send("action=add&item="+itemCode);
}

  结合以上内容,你可以了解到Ajax处理过程的第一部分—就是在客户端创建并发送HTTP请求。下一步是用来处理请求的Java Servlet代码。

  Servlet请求处理

  通过一个servlet来处理XMLHttpRequest与处理一个来自浏览器的普通的HTTP请求基本上相似。可以通过调用HttpServletRequest.getParameter()来获取由POST请求体传送过来的form-encoded数据。

  Ajax请求也与普通的WEB请求样都成为此应用同一HttpSession会话进程的一部分。这对于购物车例子来说很有肜,因为我们可以通过会话将多个请求的状态都保存到同一个JavaBean购物车对象中,并可以序列化。

  列表4是处理Ajax请求并更新购物车的简单servlet的代码片断。从用户会话中检索出一个Cart Bean,并按请求的参数更新它。

  之后Cart Bean被序列化到XML,并被写回ServletRespone。注意,一定要将响应内容的类型设置为application/xml,否则,XMLHttpRequest将不能将响应内容解析为一个XML DOM。

  列表4:处理Ajax请求的Servlet代码

public void doPost(HttpServletRequest req,
HttpServletResponse res)
throws Java.io.IOException
{
 Cart cart = getCartFromSession(req);
String action = req.getParameter("action");
String item = req.getParameter("item");
if ((action != null)&&(item != null))
{
    // 在购物车中添加或移除一个条目
    if ("add".equals(action))
 {
      cart.addItem(item);
    } else if ("remove".equals(action))  {
      cart.removeItems(item);
    }
  }
  // 将购物车状态序列化到XML
  String cartXml = cart.toXml();
  // 将XML写入response.
  res.setContentType("application/xml");
  res.getWriter().write(cartXml);
}

6页,页码:[1] [2] [3] [4] [5] [6] 

上一篇:Linux网络安全经验谈
下一篇:Oracle实用技巧
作者:  来源:赛迪网 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐