<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 37  文章 - 14  trackbacks - 0
    <2008年10月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    相關(guān)鏈接

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    書名:<< Struts2 權(quán)威指南--基于WebWork核心的MVC開發(fā) >>

    一、對(duì)Struts2的認(rèn)識(shí):
    1、Action類可以是一個(gè)包含execute方法的POJO類,struts框架提供了一個(gè)Action接口及一個(gè)ActionSupport工具類,用戶可以根據(jù)自己的需求實(shí)現(xiàn)或者繼承來實(shí)現(xiàn)自己的Action類。進(jìn)而實(shí)現(xiàn)用戶Action類與HttpServlet API的脫離,有利于測(cè)試。
    2、線程安全:Struts2 Action對(duì)象為每個(gè)請(qǐng)求產(chǎn)生一個(gè)實(shí)例
    3、丟棄Struts1存在的ActionForm,Struts2直接使用Action屬性來封裝用戶請(qǐng)求屬性,也可以封裝響應(yīng)值。Action所有的屬性都是被封裝到ValueStack對(duì)象中,Action屬性名可以理解為ValueStack中的value的名字。在輸出端可以通過ValueStack的findValue()方法查看某個(gè)表達(dá)式的值
    4、OGNL
    5、數(shù)據(jù)驗(yàn)證:Action類繼承ActionSupport,并重寫validate()方法;或者通過只繼承ActionSupport,但使用XWork校驗(yàn)框架進(jìn)行校驗(yàn)
    6、配置文件struts.xml 、struts.properties

    二、實(shí)例
    1、在web.xml配置struts2 的核心Filter配置
        <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>
    2、實(shí)現(xiàn)用戶Action并繼承ActionSupport
    public class LoginAction extends ActionSupport {
        
        
    private String username;
        
    private String password;
        
    private String[] books;
        
    public String getPassword() {
            
    return password;
        }
        
    public void setPassword(String password) {
            
    this.password = password;
        }
        
    public String getUsername() {
            
    return username;
        }
        
    public void setUsername(String username) {
            
    this.username = username;
        }
        
        
        
        
        
    public String[] getBooks() {
            
    return books;
        }
        
    public void setBooks(String[] books) {
            
    this.books = books;
        }
        
    public String execute() throws Exception{
            
    if(getUsername().equals("2b")){
                ActionContext.getContext().getSession().put(
    "user",getUsername());
                BookService bs 
    = new BookService();
                setBooks(bs.getBooks());
                
    return "success";
            }
    else{
                
    return "error";
            }
        }
        
        
    public void validate(){
            
    /*        if(getUsername() == null || getUsername().trim().equals("")){
                addFieldError("username",getText("user.required"));
            }
    */
        }
        
    }
    2.1、跟蹤用戶狀態(tài):struts2提供了一個(gè)ActionContext類,該類提供了一個(gè)getSession的方法,但該方法的返回值類型并不是HttpSession,而是Map ;Struts2的攔截器會(huì)負(fù)責(zé)該Session與HttpSession之間的轉(zhuǎn)換。把用戶名存儲(chǔ)在map中,在輸出頁面通過HttpSession的取得user的值
    ActionContext.getContext().getSession().put("user",getUsername());

    2.2、Action屬性都被封裝到ValueStack對(duì)象中,頁面輸出信息
            welcome ${sessionScope.user}
            
            
            
    <table border="1">
                
    <tr><td>JSP標(biāo)簽顯示</td></tr>
                
    <%
                    ValueStack vs 
    = (ValueStack)request.getAttribute("struts.valueStack");
                    
    String[] books = (String[])vs.findValue("books");
                    
    for(String book : books){
                 
    %>
                
    <tr><td><%=book %></td></tr>
                
    <%
                    }
                 
    %>
                 
            
    </table>        
            
            
            
    <table border="1">
            
    <tr><td colspan="2">struts 標(biāo)簽顯示</td></tr>
            
    <s:iterator value="books" status="index">
                
    <s:if test="#index.odd==true">
                    
    <tr style="background-color:#ccc">
                
    </s:if>
                
    <s:else>
                    
    <tr>
                
    </s:else>
                    
    <td>書名:</td>
                    
    <td><s:property/></td>
            
    </s:iterator>        
            
    </table>
    2.3、數(shù)據(jù)校驗(yàn):
    A:重寫validate方法,并把提示信息通過addFieldError("username",getText("user.required")添加到ActionSupport的fieldErrors域中,然后通過OGNL表達(dá)式輸出。(注:<s:form>具備輸出校驗(yàn)錯(cuò)誤的能力)
    B:XWork框架校驗(yàn),Action類繼承ActionSupport類,但不需要重寫validate方法。在Action類同一路徑下,增加校驗(yàn)規(guī)則文件,文件的命名格式為"ActionName-validation.xml",填寫具體驗(yàn)證規(guī)則


    posted on 2008-02-22 14:08 扭曲的鉛筆 閱讀(608) 評(píng)論(1)  編輯  收藏 所屬分類: J2EE

    FeedBack:
    # re: Struts2學(xué)習(xí)一 2008-10-24 22:45 路過
    能不能給個(gè)做過的例子或小項(xiàng)目學(xué)習(xí)下
    謝謝
    郵箱 renjin_job@sina.com  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 一级毛片在线观看免费| 热久久精品免费视频| 亚洲人成电影在线观看青青| 国产精品美女午夜爽爽爽免费| 小说专区亚洲春色校园| 国产亚洲精品精华液| 在线观看视频免费国语| 中国黄色免费网站| 亚洲中文字幕AV在天堂| 亚洲欧洲精品成人久久曰影片 | 亚洲激情在线观看| 免费毛片在线视频| 无码人妻精品中文字幕免费| 亚洲变态另类一区二区三区| 亚洲爆乳无码专区| 国产一区二区三区免费在线观看| 99久热只有精品视频免费观看17| 真正全免费视频a毛片| 亚洲成a人片在线观看中文app| 亚洲国产一区视频| 毛片免费全部免费观看| 日本卡1卡2卡三卡免费| 免费人成大片在线观看播放| 亚洲国产精品久久久久秋霞影院| 国产日韩成人亚洲丁香婷婷| 免费理论片51人人看电影| 69免费视频大片| a视频免费在线观看| 真正全免费视频a毛片| 亚洲老熟女五十路老熟女bbw| 亚洲天堂一区二区| 亚洲男同帅GAY片在线观看| 四虎永久免费网站免费观看| 美女视频黄是免费的网址| 99re在线免费视频| 97无码人妻福利免费公开在线视频 | 日韩精品内射视频免费观看| 亚洲精品国产日韩无码AV永久免费网 | 暖暖日本免费中文字幕| 国产成人无码精品久久久免费| 亚洲AV无码一区二区三区性色 |