Ajax详解及其案例分析

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

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");

    PrintWriter out = response.getWriter();

    //获取请求资源路径

    String uri = request.getRequestURI();

    String path = uri.substring(

        uri.lastIndexOf("/"),

        uri.lastIndexOf("."));

    if(path.equals("/get_text")){//get请求

      out.println("来自星星的你");

    }

    out.close();

  }

 

}

web.xml文件代码:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

  xmlns="http://java.sun.com/xml/ns/javaee"

  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 <display-name></display-name>

 <servlet>

  <servlet-name>ActionServlet</servlet-name>

  <servlet-class>web.ActionServlet</servlet-class>

 </servlet>

 <servlet-mapping>

  <servlet-name>ActionServlet</servlet-name>

  <url-pattern>*.do</url-pattern>

 </servlet-mapping>  

</web-app>

3 使用Ajax对象发送POST请求

3.1 问题

使用Ajax对象发送POST类型的请求,并向服务器提交一小段文本,显示从服务器端返回的文本。

3.2 方案

遵循GET请求方式的4步基础上,多增加一个设定,设定请求头中的content-type属性的值为application/x-www-form-urlencoded

3.3 步骤

步骤一: 新建my.js文件

在WebRoot节点下,新增一个文件夹“js”。在该文件夹中新增一个文件,名为my.js。将获取XMLHttpRequest对象的方法拷贝到该文件中,便于更多页面重用该方法。

my.js 代码:

function getXhr() {
  var xhr = null;
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  } else {
    xhr = new ActiveXObject("Microsoft.XMLHttp");
  }
  return xhr;
}

步骤二: 新建ajax03.html页面

步骤三: 编写getText()方法

<html>
  <head>
    <title>ajax03.html</title>
    <meta http-equiv="Content-Type" content="type=text/html;charset=UTF-8">
    <script type="text/javascript" src="js/my.js"></script>
    <script type="text/javascript">
    function getText(){
      var xhr = getXhr();
      xhr.onreadystatechange=function(){
        if(xhr.readyState==4 && xhr.status==200){
          alert(xhr.responseText);
        }
      };
     xhr.open("post","post_text.do",true);
      xhr.setRequestHeader('content-type',
        'application/x-www-form-urlencoded');
      xhr.send("uname=daliu_it");
    }
  </script>
  </head>
  <body>
    <!-- 使用Ajax对象发送POST类型请求,并获取文本 -->
    <input type="button" onclick="getText()" value="POST请求" />
  </body>
</html>