Myeclipse+AJAX+Servlet

Posted on 2016-11-21 23:02  沙_shine  阅读(1394)  评论(0编辑  收藏  举报

 最近刚开始学AJAX的知识,这里介绍一个简单的Myeclipse+AJAX+Servlet项目。

此项目包含3个文件:index.jsp、check.java。还有一个需要配置的文件是:web.xml,此文件在/Webroot/WEB-INF目录下,在建立工程的时候选中一个复选框就会有此文件。

此项目的完成步骤:

1.建立index.jsp文件,输入以下代码:

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>My JSP 'index.jsp' starting page</title>
13     <meta http-equiv="pragma" content="no-cache">
14     <meta http-equiv="cache-control" content="no-cache">
15     <meta http-equiv="expires" content="0">    
16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
17     <meta http-equiv="description" content="This is my page">
18     
19     <link rel="stylesheet" type="text/css" href="styles.css">
20     
21         <script>  
22 var xmlHttpReq;  
23 //创建一个XmlHttpRequest对象  
24 function createXmlHttpRequest()  
25 {  
26     window.alert("进入到createXmlHttpRequest()函数");
27     if(window.XMLHttpRequest)  
28     {  
29        xmlHttpReq = new XMLHttpRequest();//非IE浏览器  
30     }else  
31     {  
32        xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器  
33     }  
34 }  
35 //检测用户名是否已经被注册  
36 function checkUser()  
37 {  
38 window.alert("进入到checkUser()函数");
39 var username = document.getElementById("user").value;  
40 if(username=="")  
41 {  
42     alert("用户名必须填写!");  
43     return false;  
44 }  
45 //首先创建对象  
46 createXmlHttpRequest();  
47 //指明准备状态改变时回调的函数名  
48 xmlHttpReq.onreadystatechange=handle;  
49 //尝试以异步的get方式访问某个URL  
50 //请求服务器端的一个servlet 
51 //var url = "/web06/Servlet/" 
52 var url = "./servlet/Check?username="+username;//+Math.random(); 
53 window.alert(username); 
54 xmlHttpReq.open("get",url,true);  
55 //向服务器发送请求  
56 xmlHttpReq.send(); 
57 window.alert("已经发送数据");  
58 }  
59 //状态发生改变时回调的函数  
60 function handle()  
61 {  
62 //准备状态为4 
63 window.alert("进入到handle()函数"); 
64     if(xmlHttpReq.readyState==4)  
65     { 
66     window.alert("响应已完成;您可以获取并使用服务器的响应了。");  
67     //响应状态码为200,代表一切正常  
68        if(xmlHttpReq.status==200)  
69        {  
70               window.alert("交易成功 "); 
71            var res = xmlHttpReq.responseText;  
72            var result = document.getElementById("result");  
73            result.innerHTML = "<font color=red>"+res+"</font>";  
74        }  
75     }  
76 }  
77 </script>  
78   </head>
79   
80   <body>
81       <center><h1>表单注册</h1></center>  
82 <hr>  
83 姓名:  
84 <input type="text" id="user">  
85 <input type="button" value="检测用户名" onclick="checkUser()">  
86 <span id="result"></span>  
87   </body>
88   </body>
89 </html>

2.建立Check.java文件,此文件所属的packet名称为com.wepull.servlet,代码如下:

 1 package com.wepull.servlet;
 2 
 3 import java.io.IOException;  
 4 import javax.servlet.ServletException;  
 5 import javax.servlet.http.HttpServlet;  
 6 import javax.servlet.http.HttpServletRequest;  
 7 import javax.servlet.http.HttpServletResponse;  
 8 //@WebServlet (name="Check",urlPatterns={"/diaocha.do"})
 9 public class Check extends HttpServlet {  
10      
11     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
12        //解决返回中文乱码问题
13         //response.getWriter().println("str");  
14         response.setCharacterEncoding("utf-8");
15         
16        String user = request.getParameter("username");  
17        response.getWriter().println(user);
18        response.getWriter().println(request);
19        System.out.println(user+"传过来是null");
20        System.out.println(request);
21       System.out.println(user+"传过来是null");
22        //解决接收中文乱码问题  
23        //user = new String(user.getBytes("iso-8859-1"),"utf-8"); 
24        if(user == "")
25        {
26            System.out.println("user is nullD!!!"); 
27        }
28        else
29        {
30        System.out.println(user); 
31        
32        String msg = null;  
33        if("jing".equals(user))  
34        {  
35            msg = "用户名已经被占用!";  
36        }else  
37        {  
38            msg = "用户名可以使用!";  
39        }  
40        response.getWriter().println(msg);  
41        }
42         
43     }       
44     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
45        doGet(request,response);  
46     }                
47 }  

3.修改web.xml文件

修改前:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>web08</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

修改后:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>web08</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
        <servlet-name>Check</servlet-name>
        <servlet-class>com.wepull.servlet.Check</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>Check</servlet-name>
    <url-pattern>/servlet/Check</url-pattern>
    </servlet-mapping> 
</web-app>

其中web08是我的项目名称。

重要提醒(因为这个错误我Debug了好几天。。。)

var url = "./servlet/Check?username="+username;//+Math.random();

一定要注意""中的第一个字符 " ." ,否则Servlet就会收不到前端发送的数据(url不正确)。

4.最后运行出来结果如下:

4.1

4.2

ps:程序运行中和运行结果会有一些调试的代码,请大家自行忽略。