Junky's IT Notebook

          統(tǒng)計

          留言簿(8)

          積分與排名

          WebSphere Studio

          閱讀排行榜

          評論排行榜

          體驗(yàn)Struts(3)---加上點(diǎn)ajax

          你問我什么叫ajax,我也不太了解,我了解的是那支培養(yǎng)了無數(shù)荷蘭足球精華的Ajax,誰知道怎么有人用幾個單詞的頭字母也能湊出這個單詞來,不過感覺用它來做東西,應(yīng)該會挺有意思的
          比如當(dāng)用戶在注冊的時候,用戶點(diǎn)一個按紐不用刷新界面就可以獲得一句提示,是有這人還是沒有這人啊?這次我嘗試了用ajax技術(shù)來做一個三級關(guān)鍵的下拉列表,而這是我要講的關(guān)鍵。
          其實(shí)現(xiàn)在一般的ajax都是向Servlet發(fā)出請求,之后服務(wù)器響應(yīng),再偷摸的把結(jié)果傳給它,之后顯示出來,而換到Struts,有人會發(fā)甍,也一樣,Action是Servlet,DispatchAction也是,只要把代碼往這里寫,讓它往.do那里請求就行了。
          在接下來我就向大家介紹我是怎樣實(shí)現(xiàn)上述功能的
          因?yàn)榇髮W(xué)里面的結(jié)構(gòu)是這里的
          學(xué)院-專業(yè)-班級-學(xué)生
          在學(xué)生注冊的時候他是依賴于上述對象的,所以用戶注冊就需要一個三級的下拉選擇
          而ajax就能象變魔術(shù)一樣,從服務(wù)器那里偷摸弄來您需要的列表
          下面我先給大家展示一下第一個功能是怎么實(shí)現(xiàn)的吧?
          當(dāng)用戶在注冊的時候,點(diǎn)一個按紐,之后會彈出一個alert來告訴你這個用戶是否有人用了,下面就讓我們來看看這個功能是怎么實(shí)現(xiàn)的吧?

          <html:button styleClass="cancel" property="submit" value="驗(yàn)證用戶是否存在" onclick="teacherCheck()"/>
          這里定義了按紐,用來測試?yán)蠋熓欠褚呀?jīng)存在了
          大體的ajax的JS代碼都上面這四部分,
          先是創(chuàng)建XMLHttpRequest,
          var xmlHttp;
          function createXMLHttpRequest()
          {
          ?if (window.XMLHttpRequest)
          ?{
          ??xmlHttp = new XMLHttpRequest();
          ?}
          ?else if (window.ActiveXObject)
          ?{
          ??xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
          ??? }
          }
          之后是客戶響應(yīng)部分的代碼
          function teacherCheck()
          {
          ?var f = document.TeacherRegisterForm 從表單里讀字段
          ?var user = f.user.value
          ?if(user=="")
          ?{
            ?window.alert("用戶名不能為空!")
          ??f.user.focus()
            ?return false
          ? ?}
          ?else
          ?{
          ??createXMLHttpRequest()??????? 這里都是精華了
          ??var url = "ajax.do?method=checkUserIsExist&user="+user?? 定義響應(yīng)地址
          ??xmlHttp.open("GET",url, true)??? 發(fā)出響應(yīng)
          ??xmlHttp.onreadystatechange = checkUser? 把從服務(wù)器得到的響應(yīng)再傳給另個函數(shù)
          ??xmlHttp.send(null)
          ? ?}
          }

          function checkUser()
          {
          ?if (xmlHttp.readyState == 4)
          ?{
          ??if (xmlHttp.status == 200)
          ??{
          ???alert(xmlHttp.responseText)??????? 這里是對響應(yīng)結(jié)果的操作,在這里我們是灘出對話框,并把服務(wù)器發(fā)來的信息顯示出來
          ??}
          ?}
          }

          我把所有亂七八糟的操作都放到了一個DispatchAction里,所以它也不例外的在這個DA中了
          public ActionForward checkUserIsExist( ActionMapping mapping,
          ??????????? ActionForm form, HttpServletRequest req, HttpServletResponse res )
          ??????????? throws Exception
          ??? {
          ??????? Service service = getService();
          ??????? res.getWriter().write(service
          .checkUserIsExistForAjax( req.getParameter( "user" ) ) );
          ??????? return null;
          ??? }
          它僅僅是把業(yè)務(wù)邏輯部分的結(jié)果發(fā)送回去,而真正的判斷是在業(yè)務(wù)邏輯那里實(shí)現(xiàn)的,
          public String checkUserIsExistForAjax( String user )把結(jié)果弄成String的形式傳回去
          ??? {
          ??????? Connection connection = null;
          ??????? PreparedStatement pstmt1 = null;
          ??????? ResultSet rs = null;
          ??????? try
          ??????? {
          ??????????? connection = getConnection();
          ??????????? pstmt1 = connection
          ??????????????????? .prepareStatement( "select * from user where user=?" );
          ??????????? pstmt1.setString( 1, user );
          ??????????? rs = pstmt1.executeQuery();
          ??????????? rs.last();
          ??????????? if ( rs.getRow() > 0 )
          ??????????? {
          ??????????????? return ID.M_EXIST; 用戶存在
          ??????????? }
          ??????? }
          ??????? catch ( Exception e )
          ??????? {
          ??????????? e.printStackTrace();
          ??????? }
          ??????? finally
          ??????? {
          ??????????? close( rs );
          ??????????? close( pstmt1 );
          ??????????? close( connection );
          ??????? }
          ??????? return ID.M_NOEXIST;用戶不存在
          ??? }

          posted on 2006-05-25 20:27 junky 閱讀(245) 評論(0)  編輯  收藏 所屬分類: struts

          主站蜘蛛池模板: 海伦市| 喀喇| 清徐县| 大埔区| 乡宁县| 牙克石市| 久治县| 西畴县| 马公市| 平昌县| 太湖县| 金山区| 林甸县| 石林| 资阳市| 杭州市| 新津县| 临江市| 沙洋县| 临西县| 许昌市| 门源| 永和县| 郎溪县| 修武县| 阳朔县| 马尔康县| 呼和浩特市| 尉犁县| 东乌| 绥江县| 龙州县| 桂平市| 凤阳县| 宝清县| 隆化县| 北碚区| 巴东县| 金华市| 澎湖县| 富源县|