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

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

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

    隨筆-42  評論-578  文章-1  trackbacks-0

            進(jìn)入我們基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā)的最后一個階段了,這階段主要為我們的項(xiàng)目引進(jìn)Struts2的Annotation。相對于帶Annotation的Hibernate與帶Annotation的Spring整合來說,帶Annotation的Struts與帶Annotation的Spring整合還是比較容易實(shí)現(xiàn)的。
            我們先來引進(jìn)Struts2.0的相關(guān)jar包:xwork-2.0.5.jar,struts2-core-2.0.11.2.jar,ognl-2.6.11.jar,commons-logging.jar(這個前面已引進(jìn)),freemarker-2.3.8.jar,還有Struts2.0與Spring整合所需的struts2-spring-plugin-2.0.11.2.jar。好,馬上來開發(fā)我們的用戶注冊小例子。
            register.jsp注冊頁的部分代碼如下:

        <s:form action="register">
            
    <s:textfield name="username"/>
            
    <s:password name="password"/>
            
    <s:submit value="注冊"/>
        
    </s:form>
        
    <s:fielderror></s:fielderror>

            success.jsp注冊成功頁部分代碼如下:  
    注冊成功!你好,<s:property value="username"/>!

            好,來開發(fā)我們的控制層吧。寫個RegisterAction.java的類:
    package com.rong.action;

    import javax.annotation.Resource;
    import org.apache.struts2.config.ParentPackage;
    import org.apache.struts2.config.Result;
    import org.apache.struts2.config.Results;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Controller;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
    import com.rong.entity.User;
    import com.rong.service.UserService;

    @Controller    @Scope(
    "prototype")        //聲明此類為控制層的類,且為prototype模式調(diào)用
    @ParentPackage(value="struts-default")
    @Results(
    {
        @Result(name
    ="success",value="success.jsp"),
        @Result(name
    ="input",value="register.jsp")
    }
    )
    public class RegisterAction extends ActionSupport {
        
        @Resource(name
    ="userService")
        
    private UserService userService;
        
        
    private String username;
        
    private String password;

        @Override
        
    public String execute() throws Exception {
            User user 
    = new User();
            user.setUsername(
    "rongxinhua");
            user.setPassword(
    "blogjava");
            userService.save(user);
            
    return SUCCESS;
        }


        
    public String getUsername() {
            
    return username;
        }


        @RequiredStringValidator(message 
    = "請輸入用戶名!")
        
    public void setUsername(String username) {
            
    this.username = username;
        }


        
    public String getPassword() {
            
    return password;
        }


        @RequiredStringValidator(message 
    = "請輸入密碼!")
        
    public void setPassword(String password) {
            
    this.password = password;
        }


    }


            Spring2.5通過@Controller @Scope("prototype") 這樣的注解,將Struts的Action納為自己的控制范圍之內(nèi)。Struts2.0自帶的@ParentPackage和@Results等注解,注明了要繼承的父包和響應(yīng)結(jié)果。還有@RequiredStringValidator,@RequiredFieldValidator等注解,大大方便了我們處理表單信息的校驗(yàn)。大家有沒有發(fā)覺少了什么?我們不需要Struts.xml的配置文件了,也不需要xxx-validation.xml,也不需要寫煩雜的驗(yàn)證代碼了。豈不是很方便嗎?
            不過,不要忘記了,我們還得在web.xml中配置Struts2:
        <!-- 配置Struts 2.0 -->
        
    <filter>
            
    <filter-name>struts2</filter-name>
            
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
            
    <init-param>
                
    <param-name>actionPackages</param-name>
                
    <param-value>com.rong.action</param-value>
            
    </init-param>
        
    </filter>
        
    <filter-mapping>
            
    <filter-name>struts2</filter-name>
            
    <url-pattern>/*</url-pattern>
        
    </filter-mapping>
            我們init了一個參數(shù)actionPackages,表示我們的請求到哪里尋找我們的action。舉例說,我們的用戶注冊action="register",它默認(rèn)會在com.rong.action包下尋找RegisterAction類。經(jīng)過action的處理后,若返回success,則會跳到success.jsp,若校驗(yàn)不通過,則返回input,則請求轉(zhuǎn)發(fā)回register.jsp。
            好了,看看運(yùn)行效果吧!
                    
            成功啦!我們基于Annotation的SSH整合開發(fā)終于完成了。我所介紹的Annotation注解其實(shí)并不多,還得靠大家找資料去學(xué)習(xí)。而我們側(cè)重點(diǎn)是在用Annotation時三大框架是如何整合起來的。
            說點(diǎn)題外話吧,我們在開發(fā)過程中,究竟用Annotation還是XML,許多人曾問這樣的問題。有培訓(xùn)機(jī)構(gòu)的老師說過一句話,Annotation可以用,但XML配置一定要懂,因?yàn)閄ML配置現(xiàn)在還是主流。他說得也挺有道理的。有些人可能還不能接受Annotation這東西,就像我當(dāng)初不大喜歡它一樣。我的一位教我們Java中間件的老教師說:“Struts,Spring,Hibernate算什么技術(shù)?學(xué)EJB才是有用的。”他教我們的好像是EJB2版本的,他年輕時用Jbuilder開發(fā)過EJB的項(xiàng)目。如果我問他“為什么不選EJB3.0”,他會不會說:“EJB3被改得一塌糊涂,什么注解啊,改得狗屁不通,還是EJB2的最好……”。當(dāng)然,我沒有再問他。有時候,新事物要被人們所接受,是要經(jīng)歷一段時間的,世界在變,知識在變,我們何不用更寬廣的心態(tài),去接受那些新生的事物?
            (*^-^*) 本文原創(chuàng),轉(zhuǎn)載請注明出處, http://www.tkk7.com/rongxh7謝謝! (*^-^*)


    本文原創(chuàng),轉(zhuǎn)載請注明出處,謝謝!http://www.tkk7.com/rongxh7(心夢帆影JavaEE技術(shù)博客)
        

    posted on 2009-03-27 00:09 心夢帆影 閱讀(9403) 評論(37)  編輯  收藏 所屬分類: Struts2.xHibernateSpring

    評論:
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-03-27 00:16 | 劉岳
    哥們!!我是第一個看到這個的吧!!哈哈
      回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-03-27 00:18 | 心夢帆影
    @劉岳
    呵呵,謝謝支持!  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-03-27 00:27 | 劉岳
    加個好友吧 呵呵 我的qq:117626034 以后請多指教 msn:liuyuecn@126.com  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-03-27 00:39 | 何奇山
    呵呵,頂!!!!!!  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-03-27 05:24 | 雙色球
    進(jìn)來給你支持一下  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) [未登錄] 2009-03-27 12:25 | 陳亮
    好文,正在找怎么讓注解配置的action使用spring的依賴注入,謝謝了!
      回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) [未登錄] 2009-03-27 13:25 | 屹礫
    講得蠻好啊!事務(wù)也可以用Annotation的。  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-03-30 08:38 | zhoulejian
    能否發(fā)我一份原代碼給我,zhoulejian@126.com謝謝!   回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-03-30 09:56 | 杯中水
    下載不到 struts2-spring-plugin-2.0.11.2.jar,能不能發(fā)給我:qxpidt@163.com  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-03-30 23:21 | 心夢帆影
    @杯中水
    struts2-spring-plugin-2.0.11.2.jar在Struts2的解壓包中可以找到,你試試找找看.  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-04-01 17:35 | 中國福利彩票
    好,謝謝,呵呵,不錯  回復(fù)  更多評論
      
    # 最好是發(fā)布一下源碼包 2009-04-07 17:36 | 余軍
    哥們寫的是還好,有個源碼包就更好了,
    register.jsp注冊頁的部分代碼如下:

    <s:form action="register">
    <s:textfield name="username"/>
    <s:password name="password"/>
    <s:submit value="注冊"/>
    </s:form>
    <s:fielderror></s:fielderror>
    success.jsp注冊成功頁部分代碼如下: 注冊成功!你好,<s:property value="username"/>!



    就看不懂在寫什么了 ????  回復(fù)  更多評論
      
    # 最好是發(fā)布一下源碼包 2009-04-07 17:38 | 余軍
    能否發(fā)我一份原代碼給我,hzmotorola521@gmail.com謝謝!   回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-04-08 08:51 | catvoid
    可不可以分享源碼 拜讀下~~~ catvoid@gmail.com  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-04-24 08:29 | 大法官
    感謝分享  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-04-27 16:04 | ksh033
    能不能發(fā)份源碼給我
    我按你的步驟試了會出錯..
    謝謝
    94456671@qq.com  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-04-27 23:19 | 王大力
    此實(shí)例在struts2.1.6的環(huán)境下,需要修改某些參數(shù)才能運(yùn)行起來,請樓主update此篇blog,為后來的同仁造福!為謝!  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-05-04 16:19 | zhangsan
    請博主把能運(yùn)行的代碼發(fā)上來下。我們參考做出來有問題

    謝謝了  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-07-03 11:40 | ゞ沉默是金ゞ
    能運(yùn)行,但是怎么沒有插入到數(shù)據(jù)庫中呢?是因?yàn)閍pplication-common.xml文件中沒有把那2個bean放開嗎?  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-07-03 13:42 | ゞ沉默是金ゞ
    我改了,在userDaoBean中的save方法中加了個事務(wù)提交,Transaction tx = this.getSession().beginTransaction();
    tx.commit();  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-07-14 15:33 | 雙色球
    很好,不錯  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-07-31 00:52 | 慕寒
    如果這個action里有多個方法怎么去注解,,,,又如 我要對username這個字段進(jìn)行判斷是否被注冊了,怎么去注解,@Validations怎么使用好.@RequiredStringValidator(message = "請輸入用戶名!")這樣的驗(yàn)證是分開寫在set方法上好還是 集中寫在@Validations 里面好, 會不會寫很而使代碼看起來很亂.....請教了!
      回復(fù)  更多評論
      
    # 運(yùn)行成功,數(shù)據(jù)庫沒值? 2009-08-12 20:17 | 未登陸用戶
    我跟"ゞ沉默是金ゞ"的情況一樣,請教博主:怎么解決此問題?  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-08-18 11:32 | 心飛翔
    博主有沒有研究過在基于Annotation的SSH配置下如何把FreeMarker進(jìn)行整合,或者說Stuts2.1.6實(shí)際上是可以直接使用FreeMarker的?謝謝  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-10-28 17:43 |
    注冊的例子有問題吧, @Resource(name="userService")
    沒起到作用,userService還是為空 空指針  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2009-10-28 19:01 |
    樓主 action注解service報(bào)錯 空指針 可以回復(fù)嗎  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2010-01-06 16:04 | lion
    我運(yùn)行也是nullpointerexception  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2010-04-06 09:25 | yr
    老大,我想要源碼。yr512656630@163.com。謝謝。。。支持你  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) [未登錄] 2010-04-26 08:57 | java愛好者
    不錯,好東西啊!!!  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2010-06-05 15:56 | Mac Hotesion
    javax.annotation.Resource 用的是javaee.jar包里面的嗎?
    ①如果是的話,你的javaee.jar和ejb3-persistence.jar中的javax.persistence.Entity不會有沖突嗎?怎么處理
    ②如果不是,請問你用的是那個包的?  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2010-08-03 10:03 | tt
    我的SQL語句在控制臺輸出了。但是數(shù)據(jù)庫里面沒有插入啊 這是為什么?
    87513277@qq.com 博主怎么聯(lián)系你?  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2010-08-03 10:26 | tt
    增加 <property name="connection.autocommit">true </property> ,才能使事務(wù)執(zhí)行。  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) [未登錄] 2010-09-01 17:50 | x
    怎么驗(yàn)證對象?
    public class TradeAction extends ActionSupport {
    private Trade trade = null;
    @RequiredStringValidator(message = "input ref No", fieldName = "trade.refNo")
    @StringLengthFieldValidator(minLength = "2", maxLength = "12", message = "refNo minLength is ${minLength}, maxLength is ${maxLength}")
    public void setTrade(Trade trade) {
    this.trade = trade;
    }//這樣不行呀,why?  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2010-12-31 14:40 | 于楠
    您好,我按著您說的方式整合時出現(xiàn)以下錯誤:
    There is no Action mapped for namespace /upload and action name uploadify. - [unknown location]
    <s:form action="uploadify" namespace="/upload" enctype="multipart/form-data" method="post" >
    <input type='file' name='upload' id="upload" >
    <input type="submit" value="上傳"/>
    </s:form>

    @Controller
    @Scope("prototype") //聲明此類為控制層的類,且為prototype模式調(diào)用
    @ParentPackage(value="struts-default")
    @Namespace("/upload")
    請問如何更正  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2011-03-31 16:52 | ln1058
    struts.xml還是有必要保留的,不能什么都用注解!尤其是在修改代碼,查找代碼的位置時,全用注解是不方便的  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2011-04-08 22:49 | fdsfas
    @何奇山
    dfasdf  回復(fù)  更多評論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā) (3) 2011-09-01 09:57 | 河蟹上街
    弄就弄完全了呀,或者發(fā)個源碼包上來,總是缺東西,很難配置成功的。  回復(fù)  更多評論
      
    主站蜘蛛池模板: 亚洲最大中文字幕无码网站| 久久乐国产精品亚洲综合| 久久综合亚洲鲁鲁五月天| xxxxx免费视频| 国产精品亚洲专一区二区三区| 国产精品久久亚洲不卡动漫| 亚洲色婷婷综合开心网| 久久午夜免费视频| 91成人免费观看在线观看| 一区二区三区视频免费| 国产V片在线播放免费无码| 亚洲国产免费综合| 中文字幕免费视频精品一| 丁香花在线视频观看免费| 在线视频亚洲一区| 99亚洲精品高清一二区| 国产偷国产偷亚洲高清日韩| 亚洲人成网站观看在线播放| 成全高清视频免费观看| 一级毛片免费观看不卡视频| 日本一区二区三区在线视频观看免费| 无人视频免费观看免费视频 | 亚洲中文字幕无码不卡电影| 女人18毛片水真多免费看| 在线不卡免费视频| 亚洲A丁香五香天堂网| 在线观看亚洲精品福利片| 亚洲第一区香蕉_国产a| 亚洲一本之道高清乱码| 久久精品国产亚洲夜色AV网站| 免费a级毛片网站| 国产成人亚洲精品狼色在线| 久久亚洲春色中文字幕久久久| 久久精品国产亚洲av麻豆图片 | 国产亚洲真人做受在线观看| 亚洲国产91精品无码专区| 亚洲精品无码乱码成人| 亚洲国产成人va在线观看网址| 亚洲国产成人综合精品| av成人免费电影| 69av免费观看|