Ajax详解及其案例分析

2019-09-14 07:07:01王冬梅

步骤三: ActionServlet保持不变

步骤四: 运行,查看结果

6.4 完整代码

regist01.html文件代码如下:

<html>
   <head>
    <title>regist01.html</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript" src="js/my.js"></script>
    <script type="text/javascript">
      function check_name(){      
        var uname = document.getElementById("uname");
        var uri = "check_name.do?uname="+uname.value;      
        var xhr = getXhr();      
       xhr.onreadystatechange=function(){
          if(xhr.readyState==4 && xhr.status==200){          
            document.getElementById("name_msg").innerHTML 
            = xhr.responseText;
          }
        };
        xhr.open("get",encodeURI(uri),true);            
        document.getElementById("name_msg").innerHTML="正在检查。。。";
        xhr.send(null);
      }  
    </script>  
   </head>
    <body>
    <!-- GET方式提交中文用户名进行验证 -->
    <form action="" method="post">
      <fieldset>
        <legend>注册信息</legend>
        用户名:<input name="uname" id="uname"/>
        <input type="button" value="检查一下吧" onclick="check_name()"/>
        <span id="name_msg" style="color:red;"></span> 
        <br/><br/>
        <input type="submit" value="注册"/>
      </fieldset>  
    </form>
   </body>
  </html>

ActionServlet.java文件代码如下:

package web;

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 ActionServlet extends HttpServlet {

  public void service(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html;charset=UTF-8");
    request.setCharacterEncoding("UTF-8");
    PrintWriter out = response.getWriter();
    // 获取请求资源路径
    String uri = request.getRequestURI();
    String path = uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf("."));
    if (path.equals("/get_text")) {// get请求
      out.println("get请求-服务器返回的数据");
    } else if (path.equals("/post_text")) {// post请求
      String name = request.getParameter("uname");
      System.out.println(name);
      out.println("又来了一次的" + name);
    } else if (path.equals("/check_name")) {// 检查用户名
      String name = request.getParameter("uname");
      // 模拟网络延迟的操作
      if (1 == 1) {
        try {
          Thread.sleep(6000);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
      System.out.println(name);
      if ("Luffy".equals(name)) {
        out.println("该用户名不可用");
      } else {
        out.println("可以使用!");
      }
    }
    out.close();
  }

}