posts - 310, comments - 6939, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Struts2+Spring2+Hibernate3 web應用示例(五)

          Posted on 2007-10-08 14:18 詩特林 閱讀(12095) 評論(4)  編輯  收藏 所屬分類: Struts
                                                             Struts2+Spring2+Hibernate3 web應用示例(五)
        1. Struts2+Spring2+Hibernate3 web應用示例------源代碼
        2. Struts2+Spring2+Hibernate3 web應用示例(七)
        3. Struts2+Spring2+Hibernate3 web應用示例(六)
        4. Struts2+Spring2+Hibernate3 web應用示例(五)
        5. Struts2+Spring2+Hibernate3 web應用示例(四)
        6. Struts2+Spring2+Hibernate3 web應用示例(三)
        7. Struts2+Spring2+Hibernate3 web應用示例(二)
        8. Struts2+Spring2+Hibernate3 web應用示例(一)

        9.  
        10. 七、       Web頁面

           

          在這一節中,主要使用到了Struts2的標簽庫。在這里,會對所用到的主要標簽做一個初步的介紹。更多的知識請讀者訪問Struts的官方網站做更多的學習。在編寫Web頁面之前,先從總體上,對Struts 1.xStruts 2.0的標志庫(Tag Library)作比較。

          Struts 1.x

          Struts 2.0

          分類

          將標志庫按功能分成HTMLTilesLogicBean等幾部分

          嚴格上來說,沒有分類,所有標志都在URI“/struts-tags”命名空間下,不過,我們可以從功能上將其分為兩大類:非UI標志和UI標志

          表達式語言(expression languages

          不支持嵌入語言(EL

          OGNLJSTLGroovyVelcity

           

          1、主頁面:index.jsp,其代碼如下:

          <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
          <%@ taglib prefix="s" uri="/struts-tags" %>
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
          <title>圖書管理系統</title>
          </head>
          <body>
          <p><a href="<s:url action="list" />">進入圖書管理系統</a></p>
          </body>
          </html>

          WebRoot/index.jsp

          要在JSP中使用Struts 2.0標志,先要指明標志的引入。通過在JSP的代碼的頂部加入以下代碼可以做到這點。<%@taglib prefix="s" uri="/struts-tags" %>

          1<s:url>標簽:該標簽用于創建url,可以通過"param"標簽提供request參數。當includeParams的值時'all'或者'get', param標簽中定義的參數將有優先權,也就是說其會覆蓋其他同名參數的值。

          2、列表頁面:list.jsp

          <%@page pageEncoding="gb2312" contentType="text/html; charset=UTF-8" %>
          <%@ taglib prefix="s" uri="/struts-tags" %>

          <html>
          <head><title>圖書管理系統</title></head>
              
          <style type="text/css">
                  table 
          {
                      border: 1px solid black;
                      border
          -collapse: collapse;
                  }

                  
                  table thead tr th 
          {
                      border: 1px solid black;
                      padding: 3px;
                      background
          -color: #cccccc;
                      background
          -color: expression(this.rowIndex % 2 == 0 ? "#FFFFFF" : "#EEEEEE");
                  }

                  
                  table tbody tr td 
          {
                      border: 1px solid black;
                      padding: 3px;
                  }

                  .trs
          {
                      background
          -color: expression(this.rowIndex % 2 == 0 ? "#FFFFFF" : "#EEEEEE");
                  }

              
          </style>

              
          <script language="JavaScript">   
                  
          function doSearch(){
                      
          if(document.all.searchValue.value=="")
                      
          {    
                          alert(
          "請輸入查詢關鍵字!");
                      }
          else{
                          window.location.href
          ="bookAdmin/list.action?queryName="+document.all.searchName.value+"&&queryValue="+document.all.searchValue.value;
                       }

                  }

              
          </script>
          <body>

          <table align="center">
          <tr align="center">
              
          <td>
                  
          <select name="searchName">
                      
          <option value="bookName">書名</option>
                      
          <option value="bookAuthor">作者</option>
                      
          <option value="bookPublish">出版社</option>
                      
          <option value="bookDate">出版日期</option>
                      
          <option value="bookIsbn">ISNB</option>
                      
          <option value="bookPage">頁數</option>
                  
          </select>
                  
          <input type="text" name="searchValue" value="" size="10"/>
                  
          <input type="button" value="查詢" onClick="doSearch();">
              
          </td>
          </tr>
          <tr align="center">    
              
          <td>
                  
          <a href="<s:url action="list" includeParams="none"/>">全部</a>
                  
          <a href='<s:url action="edit" ></s:url>'>增加</a>
              
          </td>
          </tr>
          <tr>
          <td>
          <table cellspacing="0" align="center">
              
          <thead>
              
          <tr>
                  
          <th>書名</th>
                  
          <th>作者</th>
                  
          <th>出版社</th>
                  
          <th>出版日期</th>
                  
          <th>ISNB</th>
                  
          <th>頁數</th>
                  
          <th>價格</th>
                  
          <th>內容提要</th>
                  
          <th>刪除</th>
              
          </tr>
              
          </thead>
              
          <tbody>
              
          <s:iterator value="availableItems">
                  
          <tr class="trs">
                      
          <td>
                      
          <a href='<s:url action="edit" ><s:param name="bookId" value="bookId" /></s:url>'>
                      
          <s:property value="bookName"/>
                      
          </a>
                      
          </td>
                      
          <td><s:property value="bookAuthor"/></td>
                      
          <td><s:property value="bookPublish"/></td>
                      
          <td><s:text name="format.date"><s:param value="bookDate"/></s:text></td>     
                      
          <td><s:property value="bookIsbn" /></td>
                      
          <td><s:property value="bookPage" /></td>
                      
          <td><s:property value="bookPrice"/></td>
                      
          <td><s:property value="bookContent"/></td>
                      
                      
          <td><a href='<s:url action="delete"><s:param name="bookId" value="bookId" /></s:url>'>刪除</a></td>
                  
          </tr>
              
          </s:iterator>
              
          <tr align="right">
                  
          <td colspan="9">
                      共
          <s:property value="totalRows"/>&nbsp;
                      第
          <s:property value="currentPage"/>&nbsp;
                      共
          <s:property value="pager.getTotalPages()"/>&nbsp;
                      
          <a href="<s:url value="list.action">
                          <s:param name=
          "currentPage" value="currentPage"/>
                          <s:param name=
          "pagerMethod" value="'first'"/>
                          
                      </s:url>
          ">首頁</a>
                      
          <a href="<s:url value="list.action">
                          <s:param name=
          "currentPage" value="currentPage"/>
                          <s:param name=
          "pagerMethod" value="'previous'"/>
                      </s:url>
          ">上一頁</a>
                      
          <a href="<s:url value="list.action">
                          <s:param name=
          "currentPage" value="currentPage"/>
                          <s:param name=
          "pagerMethod" value="'next'"/>
                      </s:url>
          ">下一頁</a>
                      
          <a href="<s:url value="list.action">
                          <s:param name=
          "currentPage" value="currentPage"/>
                          <s:param name=
          "pagerMethod" value="'last'"/>
                      </s:url>
          ">尾頁</a>
                  
          </td>
              
          </tr>    
              
          </tbody>
          </table>
          </td>
          </tr>
          </table>
          </body>
          </html>

          /WebRoot/list.jsp

          (1)<s:property> :得到'value'的屬性,如果value沒提供,默認為堆棧頂端的元素。其相關的參數及使用如下表所示:

          名稱

          必需

          默認

          類型

          描述

          default

          String

          如果屬性是null則顯示的default

          escape

          true

          Booelean

          是否escape HTML

          value

          棧頂

          Object

          要顯示的值

          id

          Object/String

          用來標識元素的id。在UI和表單中為HTMLid屬性

          (2)<s:Iterator>:用于遍歷集合(java.util.Collection)或枚舉值(java.util.Iterator)。其相關的參數及使用如下表所示:  

          名稱

          必需

          默認

          類型

          描述

          status

          String

          如果設置此參數,一個IteratorStatus的實例將會壓入每個遍歷的堆棧

          value

          Object/String

          要遍歷的可枚舉的(iteratable)數據源,或者將放入新列表(List)的對象

          id

          Object/String

          用來標識元素的id。在UI和表單中為HTMLid屬性

          (3)<s:param>:為其他標簽提供參數,比如include標簽和bean標簽. 參數的name屬性是可選的,如果提供,會調用Component的方法addParameter(String, Object), 如果不提供,則外層嵌套標簽必須實現UnnamedParametric接口(TextTag) value的提供有兩種方式,通過value屬性或者標簽中間的text,不同之處我們看一下例子:

          <param name="color">blue</param><!-- (A) -->

          <param name="color" value="blue"/><!-- (B) -->
          (A)參數值會以String的格式放入statck.
          (B)該值會以java.lang.Object的格式放入statck.

          其相關的參數及使用如下表所示:

          名稱

          必需

          默認

          類型

          描述

          name

          String

          參數名

          value

          String

          value表達式

          id

          Object/String

          用來標識元素的id。在UI和表單中為HTMLid屬性

          4)、國際化是商業系統中不可或缺的一部分,所以無論您學習的是什么Web框架,它都是必須掌握的技能。其實,Struts 1.x在此部分已經做得相當不錯了。它極大地簡化了我們程序員在做國際化時所需的工作,例如,如果您要輸出一條國際化的信息,只需在代碼包中加入FILE-NAME_xx_XX.properties(其中FILE-NAME為默認資源文件的文件名),然后在struts-config.xml中指明其路徑,再在頁面用<bean:message>標志輸出即可。

          不過,所謂沒有最好,只有更好Struts 2.0并沒有在這部分止步,而是在原有的簡單易用的基礎上,將其做得更靈活、更強大。

          5)、list.jsp文件中:

          <s:text name="format.date"><s:param value="bookDate"/></s:text>,為了正確的輸出出版日期的格式,采用在資源文件中定義輸出的格式,并在頁面上調用。format.date就是在資源文件com.sterning.books.web.actions.BooksAction.properties中定義。當然也可以別的文件,放在別的路徑下,但此時需要在web.xml中注冊才可以使用它。

          正如讀者所見,在pojo(本例為Books.java)中將日期字段設置為java.util.Date,在映射文件中(books.hbm.xml)設置為timestamp(包括日期和時間)。為了便于管理,將日期格式保存在國際化資源文件中。如:globalMessagesglobalMessages_zh_CN文件。

          其內容為:

          format.date={0,date,yyyy-MM-dd}

          在頁面顯示日期時間時:<s:text name="format.date"><s:param value="bookDate"/></s:text>。這樣就解決了日期(時間)的顯示格式化問題。

           

          3、增加/修改頁面:editBook.jsp 

          <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
          <%@ taglib prefix="s" uri="/struts-tags" %>

          <html>
          <head>
              
          <title>編輯圖書</title>
              
          <s:head/>
          </head>
          <body>
              
          <h2>
                  
          <s:if test="null == book">
                      增加圖書
                  
          </s:if>
                  
          <s:else>
                      編輯圖書
                  
          </s:else>
              
          </h2>
              
          <s:form name="editForm" action="save" validate="true">
              
                   
          <s:textfield label="書名" name="book.bookName"/>
                   
          <s:textfield label="作者" name="book.bookAuthor"/>
                   
          <s:textfield label="出版社" name="book.bookPublish"/>
                   
          <s:datetimepicker label="出版日期" name="book.bookDate"></s:datetimepicker>
                   
          <s:textfield label="ISBN" name="book.bookIsbn"/>
                   
          <s:textfield label="頁數" name="book.bookPage"/>
                   
          <s:textfield label="價格(元)" name="book.bookPrice"/>
                   
          <s:textfield label="內容摘要" name="book.bookContent"/>
                   
          <s:if test="null == book">
                       
          <s:hidden name="book.bookId" value="%{bookId}"/>
                   
          </s:if>         
                   
          <s:else>
                       
          <s:hidden name="book.bookId" />
                   
          </s:else>
                   
          <s:hidden name="queryName" />
                   
          <s:hidden name="queryValue" />
                   
          <s:submit value="%{getText('保存')}" />
              
          </s:form>

          <p><a href="<s:url action="list"/>">返回</a></p>
          </body>
          </html>


          WebRoot/editBook.jsp

          1)、<s:if><s:elseif><s:else> :執行基本的條件流轉。 其相關的參數及使用如下表所示:

          名稱

          必需

          默認

          類型

          描述

          備注

          test

           

          Boolean

          決定標志里內容是否顯示的表達式

          else標志沒有這個參數

          id

           

          Object/String

          用來標識元素的id。在UI和表單中為HTMLid屬性

           

           

          2)、<s:text>:支持國際化信息的標簽。國際化信息必須放在一個和當前action同名的resource bundle,如果沒有找到相應message,tag body將被當作默認message,如果沒有tag body,messagename會被作為默認message 其相關的參數及使用如下表所示:

          名稱

          必需

          默認

          類型

          描述

          name

           

          String

          資源屬性的名字

          id

           

          Object/String

          用來標識元素的id。在UI和表單中為HTMLid屬性


          未完待續......


        11. 評論

          # re: Struts2+Spring2+Hibernate3 web應用示例(五)  回復  更多評論   

          2008-03-15 10:41 by 瞬間愛情
          謝謝你額...

          # re: Struts2+Spring2+Hibernate3 web應用示例(五)  回復  更多評論   

          2008-10-09 14:54 by liayn
          thank you

          # re: Struts2+Spring2+Hibernate3 web應用示例(五)  回復  更多評論   

          2009-08-31 16:46 by lvjinhua
          Good, Thanks

          # re: Struts2+Spring2+Hibernate3 web應用示例(五)  回復  更多評論   

          2009-12-01 13:20 by 姜巖
          能不能把你的 酒店管理系統給我發一份源碼 謝謝了~~~~
          我的郵箱yanyan_1206@yahoo.cn 寫了~~~~
          主站蜘蛛池模板: 固阳县| 玛纳斯县| 长白| 都江堰市| 云安县| 四会市| 积石山| 贺州市| 三台县| 文水县| 青阳县| 东乡县| 德昌县| 万源市| 易门县| 江油市| 五华县| 新野县| 象山县| 漳州市| SHOW| 赤水市| 华安县| 合水县| 桑日县| 老河口市| 七台河市| 贡山| 商丘市| 碌曲县| 兰西县| 晴隆县| 教育| 东平县| 姚安县| 工布江达县| 城市| 太保市| 吴桥县| 三亚市| 克什克腾旗|