Handles the HTTP POST method

  String line;

  while((line = reader.readLine()) != null){

  out.println(line);

  }

  reader.close();

  }

  }

  /**

  * Handles the HTTP POST method.

  *

  * @param request servlet request

  * @param response servlet response

  * @throws ServletException if a servlet-specific error occurs

  * @throws IOException if an I/O error occurs

  */

  @Override

  protected void doPost(HttpServletRequest request, HttpServletResponse response)

  throws ServletException, IOException {

  //获取参数,最后得到请求url地址类似于:url = http://192.168…/AJAX/AJAXServer?aa=11&bb=22&cc=33

  String url = request.getParameter("url");

  //获取访问的跨域地址url = http://192.168…/AJAX/AJAXServer

  StringBuffer paramBuffer = new StringBuffer();

  Enumeration enu = request.getParameterNames();

  boolean flag = false; //定义标志变量,表示是否为拼接的第一个参数

  while(enu.hasMoreElements()){

  String paramName = (String) enu.nextElement();

  if(!paramName.equals("url")){

  String paramValue = request.getParameter(paramName);

  paramValue = URLEncoder.encode(paramValue,"utf-8");

  if(!flag){

  paramBuffer.append(paramName)。append("=")。append(paramValue);

  flag = true;

  } else {

  paramBuffer.append("&")。append(paramName)。append("=")。append(paramValue);

  }

  }

  }

  response.setContentType("text/html;charset=utf-8");

  PrintWriter out = response.getWriter();

  if(url != null && url.trim()。length() > 0){

  URL connectUrl = new URL(url);

  URLConnection connection =connectUrl.openConnection();

  connection.setDoOutput(true);

  OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());

  writer.write(paramBuffer.toString());

  writer.flush();

  BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));

  String line;

  while((line = reader.readLine()) != null){

  out.println(line);

  }

  writer.close();

  reader.close();

  }

  }

  对于问题2

  (1)响应数据解决中文乱码的方法:保证页面端定义的charset和http响应头的Content-Type中定义的charset一致。

  ①http响应头的Content-Type中charset设置为utf-8

  ②仅仅使用"MSXML2.XMLHTTP","Miscrosoft.XMLHTTP"这两个中的一个来创建XMLHttpRequest对象。

  (2)请求数据中文乱码解决方法:由于服务器端getParameter()方法会自动进行一次ISO8859规则解码,因此页面端应使用javascript中的encodeURI()方法对请求数据进行两次编码,服务器端使用URLDecode(utf-8)进行一次解码。

  总结  Ajax异步交互主要通过XMLHttpRequest对象实现,搜索Suggest、GoogleMap等应用的友好体验使得此对象的使用愈显重要,希望本文对读者更好的使用XMLHttpRequest提供了一定帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值