//这是前台的代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 <%
 String path = request.getContextPath();
 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
   <head>
     <base href="<%=basePath%>">
     
     <title>My JSP 'index.jsp' starting page</title>
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">    
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
  <!--
  <link rel="stylesheet" type="text/css" href="styles.css">
  -->
  <script type="text/javascript">
   /*onload = function (){
     //这是判断浏览器是IE还是FireFox
     if(navigator.appName == 'Netscape'){
      alert('这是火狐浏览器');
     }else if(navigator.appName == 'Microsoft Internet Explorer')
     {
      alert('这是IE浏览器');
     }
      if(window.XMLHttpRequest)//判断浏览器是否属于Mozilla,Sofari
        {
            alert("firefox");
        }
         else if(window.ActiveXObject)//判断浏览器是否属于IE
        {
     alert('这是IE浏览器'); 
     }
    }*/
    
    
    
    //这是最传统的ajax
    //第一步:创建核心对象
    onload = function(){
    var xmlRequest = null;
    if (window.XMLHttpRequest)
       {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlRequest=new XMLHttpRequest();
       }
    else if(window.ActiveXObject)
      {// code for IE6, IE5
      
       xmlRequest=new ActiveXObject("Microsoft.XMLHTTP");
      }
    if(!xmlRequest)
    {
      
     alert("创建核心对象错误!!!");
     return fasle;
    }
    //第二部:打开并发送请求
    //1、这是get发送请求的方式,并且还带有参数
    /*
     第一个参数是请求的方式,最好的大写,第二个参数是请求的路径(这里的路径千万不要用到${pageContext,request.contextPath),也不要
     在前面加上'/',例如:/test?p=test&namecaohuan,这也会访问不到路径,第三个参数表示是异步进行还是同步进行,XMLHttpRequest
     对象如果要用于AJAX的话其open()方法的第三个参数必须设置为 true,一般我们ajx都是进行异步的操作,所以一般是true
    */
   /* xmlRequest.open('GET','test?p=test&name=caohuan',true);
    //发送请求,get发送请求并带有参数send中并不带有参数,只有post请求才带有参数
    xmlRequest.send();*/
    //2、这是post发送请求,并且带有参数
    xmlRequest.open('POST','test?p=test',true);
    //注意这里post发送请求带有参数的形式,要用post发送请求带有参数,必须要加上下面的第一行的代码,否则后台根本接收不到参数
    xmlRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlRequest.send("name=caohuan&id=2");
    //第三部:接受返回数据
    xmlRequest.onreadystatechange = function(){
    
     //判断请求是否发送成功,并且返回数据,这里注意readyState的state的s是大写,我经常犯这种错误
     if(xmlRequest.readyState == 4 && xmlRequest.status == 200)
     {
      //responseText这是接受字符窜的数据,responseXML是接受xml格式的数据
      var  value = xmlRequest.responseText;
      alert(value);
     }
    }
    
   }
   
   
  </script>
   </head>
   
   <body>
    
   </body>
 </html> 
//这是后台的代码
package cn.itcast.servlets;
 import java.io.IOException;
import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;public class AjaxTestServlet extends HttpServlet {
  
  @Override
  protected void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=utf-8");
    String p = request.getParameter("p");
    if("test".equals(p))
    {
     doTest(request, response);
    }
  }
  
  protected void doTest(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
   String name = request.getParameter("name");
   String id = request.getParameter("id");
   response.getWriter().print(name+"-->" +id);
   
  }
  }