176142998

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            116 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

          div標簽用于在頁面上生成一個div元素,但這個div元素內容不是靜態內容,而是從服務器上獲取數據,為了讓該div能夠取得服務器上的數據,必須為div標簽指定一個href屬性,這個href屬性必須是一個action,該action負責生成該div的內容

          因為div是一個ajax標簽,因此要為這個標簽增加theme="ajax"屬性

          web.xml

           

          <?xml version="1.0" encoding="GBK"?>
          <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance" 
              xsi:schemaLocation
          ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

          <servlet>

              
          <servlet-name>dwr</servlet-name>
                  
          <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
                  
          <init-param>
                     
          <param-name>debug</param-name>
                     
          <param-value>true</param-value>
                  
          </init-param>
              
          </servlet>

              
          <servlet-mapping>
                  
          <servlet-name>dwr</servlet-name>
                  
          <url-pattern>/dwr/*</url-pattern>
              
          </servlet-mapping>



              
          <filter>
                  
          <filter-name>struts2</filter-name>
                  
          <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
              
          </filter>


              
          <filter-mapping>
                  
          <filter-name>struts2</filter-name>
                  
          <url-pattern>/*</url-pattern>
              
          </filter-mapping>

          </web-app>

           

          <!DOCTYPE struts PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
              "http://struts.apache.org/dtds/struts-2.0.dtd"
          >

          <struts>

              
          <constant name="struts.custom.i18n.resources" value="messageResource"/>
              
          <constant name="struts.i18n.encoding" value="GBK"/>

              
          <package name="ajax" extends="struts-default">
                  
          <action name="random" class="lee.RandomAction">
                      
          <result>/AjaxResult.jsp</result>
                  
          </action>
                  
          <action name="Test3">
                      
          <result>/testjs.jsp</result>
                  
          </action>
              
          </package>

          </struts>

           

          RandomAction

           

          package lee;

          import com.opensymphony.xwork2.Action;

          import java.io.Serializable;


          public class RandomAction implements Action
          ...{
              
          private String data;

              
          public String getRdmStr()
              
          ...{

                  String result 
          = String.valueOf(Math.round(Math.random() * 10000));
              
                 
                  
          return data != null && !data.equals(""? data + result : result;
              }


              
          public void setData(String data)
              
          ...{
                  
          this.data = data;
              }

              
          public String getData()
              
          ...{
                   
          return this.data;
              }


              
          public String execute()
              
          ...{
            
                  
          return SUCCESS;
              }

          }

           

          remotediv.jsp

           

          <%...@ page contentType="text/html;charset=GBK" language="java" %>
          <%...@ taglib prefix="s" uri="/struts-tags" %>
          <html>
          <head>
              
          <title>遠程Div</title>
              
          <s:head theme="ajax"/>
              
          <script type="text/javascript">...
              
          function handler(widget, node) ...{
                  alert(
          '本地JavaScript函數處理動態Div');
                  node.innerHTML 
          = Math.random() > 0.4 ? "Spring2.0寶典" : "輕量級J2EE企業應用實戰";
              }

          </script>
          </head>
          <body>
          <s:url id="rd" value="/random.action"/>
          僅從服務器上獲取一次數據
          <s:div id="div1" 
                 theme
          ="ajax" 
                 cssStyle
          ="border:1px solid black;background-color:#dddddd;width:300px;height:40px;padding-top:8px;padding-left:20px"
                 href
          ="%{rd}"></s:div>
          <br>
          動態更新內容的Div,每隔1s刷新一次(通過指定updateFreq="1000")
          <br>
          使用indicator(通過指定indicator="indicator")
          <br>
          <s:div  id="div2"
                  theme
          ="ajax"
                  cssStyle
          ="border: 1px solid black;background-color:#dddddd;
                      width:300px;height:40px;padding-top:8px;padding-left:20px"

                  href
          ="%{rd}"
                  updateFreq
          ="6000"
                  indicator
          ="indicator">
              初始化文本
          </s:div>
          <img id="indicator" src="${pageContext.request.contextPath}/images/indicator.gif" alt="Loading..." style="display:none"/><br>

          3s之后才開始更新(通過指定delay="3000")
          <br>
          指定與服務器交互出錯的提示(通過指定errorText屬性)
          <br>
          指定與服務器交互過程中的提示(通過指定loadText屬性)
          <br>
          <s:div  id="div3"
                  theme
          ="ajax"
                  cssStyle
          ="border: 1px solid black;background-color:#dddddd;
                      width:300px;height:40px;padding-top:8px;padding-left:20px"

                  href
          ="%{rd}"
                  updateFreq
          ="1000"
                  delay
          ="3000"
                  errorText
          ="加載服務器數據出錯"
                  loadingText
          ="正在加載服務器內容">
              初始化文本
          </s:div>

          指定顯示系統出錯提示(通過指定showErrorTransportText="true")
          <br>
          <s:div  id="div4"
                  theme
          ="ajax"
                  cssStyle
          ="border: 1px solid black;background-color:#dddddd;
                      width:300px;height:40px;padding-top:8px;padding-left:20px"

                  href
          ="/AjaxNoUrl.jsp"
                  updateFreq
          ="1000"
                  showErrorTransportText
          ="true"
                  loadingText
          ="正在加載服務器內容">
              初始化文本
          </s:div>

          執行服務器腳本(通過指定executeScripts="true")
          <s:url id="test" value="/Test3.action" />
          <s:div  id="div5"
                  theme
          ="ajax"
                  cssStyle
          ="border: 1px solid black;background-color:#dddddd;
                      width:300px;height:40px;padding-top:8px;padding-left:20px"

                  href
          ="%{test}"
                  updateFreq
          ="9000"
                  executeScripts
          ="true"
                  loadingText
          ="正在加載服務器內容">
              初始化文本
          </s:div>

          執行客戶端腳本(每次更新div時運行handler函數)
          <s:url id="test" value="/Test3.action" />
          <s:div  id="div5"
                  theme
          ="ajax"
                  cssStyle
          ="border: 1px solid black;background-color:#dddddd;
                      width:300px;height:40px;padding-top:8px;padding-left:20px"

                  href
          ="%{test}"
                  updateFreq
          ="9000"
                  handler
          ="handler"
                  loadingText
          ="正在加載服務器內容">
              初始化文本
          </s:div>
          </body>
          </html>

           

          AjaxResult.jsp

           

          <%...@ page contentType="text/html;charset=GBK" language="java" %>
          <%...@ taglib prefix="s" uri="/struts-tags" %>
          <%...
              request.setAttribute(
          "decorator""none");
              response.setHeader(
          "Cache-Control","no-cache"); //HTTP 1.1
              response.setHeader(
          "Pragma","no-cache"); //HTTP 1.0
              response.setDateHeader (
          "Expires"0); //prevents caching at the proxy server
          System.out.println(
          "----------");
          %>
          服務器返回的隨機數字是:
          <s:property value="rdmStr"/>

           

          testjs.jsp

           

          <%...@ page contentType="text/html;charset=GBK" language="java" %>
          <%...
              request.setAttribute(
          "decorator""none");
              response.setHeader(
          "Cache-Control","no-cache"); //HTTP 1.1
              response.setHeader(
          "Pragma","no-cache"); //HTTP 1.0
              response.setDateHeader (
          "Expires"0); //prevents caching at the proxy server
          %>

          <script language="JavaScript" type="text/javascript">...
              alert(
          'Spring2.0寶典');
          </script>
          輕量級J2EE企業應用實戰
          <script language="JavaScript" type="text/javascript">...
              alert(
          '基于J2EE的Ajax寶典!');
          </script>

           

          下面是使用pub-sub方式的div標簽實例

           

          <%...@ page contentType="text/html;charset=GBK" language="java" %>
          <%...@ taglib prefix="s" uri="/struts-tags" %>
          <html>
          <head>
              
          <title>遠程Div</title>
              
          <s:head theme="ajax"/>
          </head>
          <script>...
              
          var controller = ...{
                  refresh : 
          function() ...{alert("手動刷新");},
                  start : 
          function() ...{alert("啟動自動刷新");},
                  stop : 
          function() ...{alert("停止自動刷新");}
              }
          ;

              
          //將controller的refresh方法注冊成/refresh主題的發布者
              dojo.event.topic.registerPublisher("/refresh", controller, "refresh");
              
          //將controller的start方法注冊成/startTimer主題的發布者
              dojo.event.topic.registerPublisher("/startTimer", controller, "start");
              
          //將controller的stop方法注冊成/stopTimer主題的發布者
              dojo.event.topic.registerPublisher("/stopTimer", controller, "stop");
              
          //為after主題指定一個事件處理函數
              dojo.event.topic.subscribe("/after"function(data, type, e)...{
                  alert(
          '與服務器交互過程中. 現在的過程類型是:' + type);
                  
          //data : text returned
                  //type : "before", "load" or "error"
                  //e    : request object
              }
          );
          </script>
          <body>
          <form id="form">
              
          <s:textfield name="data" label="輸入框"/>
          </form>

          <input type="button" value="手動刷新" onclick="controller.refresh()">
          <input type="button" value="停止計時器" onclick="controller.stop()">
          <input type="button" value="啟動計時器" onclick="controller.start()">
          <br>
          <s:url id="rd" value="/random.action"/>
          使用pub-sub機制(通過指定listenTopics等屬性)
          <br>
          發送表單請求參數(通過指定formId="form")
          <br>
          <s:div  id="div1"
                  theme
          ="ajax"
                  cssStyle
          ="border: 1px solid black;background-color:#dddddd;
                      width:300px;height:40px;padding-top:8px;padding-left:20px"

                  href
          ="%{rd}"
                  loadingText
          ="正在加載服務器內容..."
                  listenTopics
          ="/refresh"
                  startTimerListenTopics
          ="/startTimer"
                  stopTimerListenTopics
          ="/stopTimer"
                  updateFreq
          ="9000"
                  autoStart
          ="true"
                  formId
          ="form"
                  notifyTopics
          ="/after">
              初始化文本
          </s:div>
          </body>
          </html>
          posted on 2008-08-04 09:29 飛飛 閱讀(2095) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 惠来县| 霍山县| 贵港市| 衡山县| 武汉市| 商南县| 白城市| 焦作市| 西林县| 美姑县| 合川市| 锦屏县| 定陶县| 社旗县| 泰兴市| 兴城市| 白沙| 栾川县| 探索| 鄄城县| 灵台县| 阿拉善盟| 崇州市| 云和县| 丹巴县| 辽宁省| 黑山县| 宁都县| 石城县| 阳春市| 雷波县| 台中市| 阿瓦提县| 青浦区| 利津县| 繁昌县| 桦甸市| 藁城市| 且末县| 衡东县| 清水河县|