Ajax应用(jsp例子)

首先是jsp页面和脚本,为了方便写在一个里面 

这是一个很常见的检测用户名是否存在的功能 

这里用的是struts 

<%@ page contentType="text/html; charset=GBK" %>
    <html>
    <head>
    <title>
    ajax
    </title>
    </head>
    <body bgcolor="#ffffff">
    <h1>
    <input name="username" type="text" maxlength="20" />
    <input id="chk-name-btn" type="button" value="检测帐号"  />
    <div id="view_name"></div>
    </h1>
    </body>
    </html>
    <script language="javascript">
    if (window.ActiveXObject &;amp;&;amp; !window.XMLHttpRequest) {
    window.XMLHttpRequest=function() {
    return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
    };
    }//取得XMLHttpRequest对象

function testName(path){

//path是取得系统路径
    var view_name=document.getElementById("view_name");
    var req=new XMLHttpRequest();
    if (req) {
    req.onreadystatechange=function() {
    if (req.readyState==4 &;amp;&;amp; req.status==200) {//判断状态,4是已发送,200已完成
    if(req.responseText==0){
    view_name.style.color='green';
    view_name.innerHTML='该用户名可以正常使用';
    }else if(req.responseText==1){
    view_name.style.color='red';
    view_name.innerHTML='该用户名已经被使用';
    }else{
    view_name.style.color='red';
    view_name.innerHTML='该用户名含有非法字符!';
    }
    }
    }
    req.open('POST', path '/ajax.do');//struts

//req.open('POST', path '/ajax.servlet');//servlet

//req.open('POST', path '/ajax.action');//webwork
   
   
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    req.send("");//发送参数如果有参数req.send("username=" user_name);用request取得
    }
    }
    </script>

这个jsp页面并没有取得用户名,就是演示一下。还有<div>可以换span,具体作用问美工吧。 

接受ajax请求的action。 

import org.apache.struts.action.*;
    import javax.servlet.http.*;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.PrintWriter; 

/**
    * <p>Title:AjaxAction </p>
    */ 

public class AjaxAction extends Action {
    public ActionForward execute(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws Exception {
    PrintWriter out = response.getWriter();
    out.print(1);//ajax取得都是字符的输出。如果数据量大的话,还可以用xml来发送和接受
    return null;
    }
    } 

struts-config.xml 

<action type="test.whw.upload.AjaxAction" validate="false" scope="request" path="/ajax"/>
    ---------------------------- 

如果是servlet 

web.xml 

<servlet>
    <servlet-name>AjaxServlet </servlet-name>
    <servlet-class>servlet.AjaxServlet </servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>AjaxServlet </servlet-name>
    <url-pattern>/AjaxServlet .servlet</url-pattern>
    </servlet-mapping> 

AjaxServlet.java 

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 AjaxServlet extends HttpServlet {
    Logger log = Logger.getLogger(this.getClass());
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException,IOException {
    response.setContentType("text/xml; charset=GBK");
    PrintWriter out = response.getWriter();
    out.print(2);
    }
    }
    //Process the HTTP Post request
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doGet(request, response);
    } 

//Process the HTTP Put request
    public void doPut(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    } 

//Process the HTTP Delete request
    public void doDelete(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    } 

//Clean up resources
    public void destroy() {
    }
    }
   
    ------------------------------------- 

如果是webwork 

xwork.xml 

<action name="ajax" class="com.whw.upload.action.webwork.AjaxAction" method="ajax"/> 


    AjaxAction.java 

import java.io.PrintWriter; 

public class AjexAlbumAction extends ActionSupport implements Action{
   
    public void ajax()throws IOException {
    PrintWriter pw = ServletActionContext.getResponse().getWriter();
    ServletActionContext.getResponse().setContentType("text/html;charset=GBK");
    pw.print(1);
    pw.close();
    }
    



本例子在winXPsp2、JB9、Eclipse3,j2sdk1.4.1 、Tomcat5、Tomcat4.1都能运行

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Ajax] 的这些文章也感兴趣:

用AJAX J2EE实现一个网上会议室系统
理解Ajax及其工作原理,构建网站的一种有效方法
AJAX开发工具Atlas:实现机制浅析(二)
怎么让你的Ajax程序在客户端上健步如飞
专访AJAX创始人:AJAX并不适合所有网站
SOA硬件与Ajax
Ajax简介
雅虎、网易ajax标签导航效果实现
Ajax应用场景
AJAX应用程序开发七宗罪