关于Ajax ,jQuery以及jQuery Ajax 编程 (四)

基于ajax+servlet+jsp的简单功能实现:

工程结构:


servlet:

package com.ajax.test;

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 DoAjaxServlet extends HttpServlet {  
     
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)  
    throws ServletException, IOException {  
        response.setContentType("text/html;charset=UTF-8");  
        PrintWriter out = response.getWriter();  
        try {  
            response.setContentType("text/html");  
            response.setHeader("Cache-Control", "no-store");  
            response.setHeader("Pragma", "no-cache");  
            response.setDateHeader("Expires", 0);  
            String name = request.getParameter("id");  
            if(name.equals("luzhu")) {  
                out.write("OK");  
            }  
            else {  
                out.write("NO");  
            }  
        } finally {   
            out.close();  
        }  
    }   
  
    @Override  
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  
    throws ServletException, IOException {  
        processRequest(request, response);  
    }   
  
    @Override  
    protected void doPost(HttpServletRequest request, HttpServletResponse response)  
    throws ServletException, IOException {  
        processRequest(request, response);  
    }  
  
    @Override  
    public String getServletInfo() {  
        return "Short description";  
    }  
  
}  

web.xml配置:

   <servlet>  
	    <servlet-name>DoAjaxServlet</servlet-name>  
	    <servlet-class>com.ajax.test.DoAjaxServlet</servlet-class>  
   </servlet>  
   <servlet-mapping>  
	    <servlet-name>DoAjaxServlet</servlet-name>  
	    <url-pattern>/validate.do</url-pattern>  
   </servlet-mapping> 
login.jsp:

 <%@page contentType="text/html" pageEncoding="UTF-8"%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
    "http://www.w3.org/TR/html4/loose.dtd">  
 <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
        <script type="text/javascript" src="<%=basePath%>js/Ajax.js" charset="utf-8"></script>        
    </head>  
    <body>  
        <h1>Ajax Test</h1><p>  
        <form action="" method="get" name="form">  
            <br>  
            用户名:  
            <input type="text" size="10" maxlength="8" id="userName" name="name" οnblur="validate()">  
            <span id="info"></span>  
            <br>  
            密码:  
            <input type="text" size="10" maxlength="8" >  
        </form>  
    </body>  
</html>

提示:这里的

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

帮助我们在启动tomcat时获取相应的http地址,这就是为什么经常有人导入绝对路径却依然无法正常显示的原因的解决方案。

Ajax.js:

    var req;  
    function validate() {  
        //获取表单提交的内容  
        var idField = document.getElementById("userName");  
        //访问validate.do这个servlet,同时把获取的表单内容idField加入url字符串,以便传递给validate.do  
        var url = "validate.do?id=" + escape(idField.value);                  
        //创建一个XMLHttpRequest对象req  
        if(window.XMLHttpRequest) {  
            //IE7, Firefox, Opera支持  
            req = new XMLHttpRequest();  
        }else if(window.ActiveXObject) {  
            //IE5,IE6支持  
            req = new ActiveXObject("Microsoft.XMLHTTP");  
        }  
        /* 
         open(String method,String url, boolean )函数有3个参数 
         method参数指定向servlet发送请求所使用的方法,有GET,POST等 
         boolean值指定是否异步,true为使用,false为不使用。 
         我们使用异步才能体会到Ajax强大的异步功能。 
         */  
        req.open("GET", url, true);  
        //onreadystatechange属性存有处理服务器响应的函数,有5个取值分别代表不同状态  
        req.onreadystatechange = callback;  
        //send函数发送请求  
        req.send(null);                  
    }  
      
    function callback() {  
        if(req.readyState == 4 && req.status == 200) {  
            var check = req.responseText;  
            show (check);  
        }  
    }  
      
    function show(str) {  
        if(str == "OK") {  
            var show = "<font color='green'>successful usename!</font>";  
            document.getElementById("info").innerHTML = show;  
        }  
        else if( str == "NO") {  
            var show = "<font color='red'>the usename is not exist!</font>";  
            document.getElementById("info").innerHTML = show;  
        }  
    }  



键入地址:http://localhost:8080/ajax_Servlet/login.jsp  
结果:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值