Ajax應用(jsp例子)

來源:互聯網
上載者:User

首先是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="檢測帳號" onclick="testName('<%=request.getContextPath()%>')" />
<div id="view_name"></div>
</h1>
</body>
</html>
<script language="javascript">
  if (window.ActiveXObject && !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 && 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都能運行

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.