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

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

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

    隨筆-42  評(píng)論-578  文章-1  trackbacks-0

            進(jìn)入我們基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā)的最后一個(gè)階段了,這階段主要為我們的項(xiàng)目引進(jìn)Struts2的Annotation。相對(duì)于帶Annotation的Hibernate與帶Annotation的Spring整合來(lái)說(shuō),帶Annotation的Struts與帶Annotation的Spring整合還是比較容易實(shí)現(xiàn)的。
            我們先來(lái)引進(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(這個(gè)前面已引進(jìn)),freemarker-2.3.8.jar,還有Struts2.0與Spring整合所需的struts2-spring-plugin-2.0.11.2.jar。好,馬上來(lái)開(kāi)發(fā)我們的用戶(hù)注冊(cè)小例子。
            register.jsp注冊(cè)頁(yè)的部分代碼如下:

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

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

            好,來(lái)開(kāi)發(fā)我們的控制層吧。寫(xiě)個(gè)RegisterAction.java的類(lèi):
    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")        //聲明此類(lèi)為控制層的類(lèi),且為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 
    = "請(qǐng)輸入用戶(hù)名!")
        
    public void setUsername(String username) {
            
    this.username = username;
        }


        
    public String getPassword() {
            
    return password;
        }


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


    }


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


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

    posted on 2009-03-27 00:09 心夢(mèng)帆影 閱讀(9401) 評(píng)論(37)  編輯  收藏 所屬分類(lèi): Struts2.xHibernateSpring

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

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



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

    謝謝了  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2009-07-03 11:40 | ゞ沉默是金ゞ
    能運(yùn)行,但是怎么沒(méi)有插入到數(shù)據(jù)庫(kù)中呢?是因?yàn)閍pplication-common.xml文件中沒(méi)有把那2個(gè)bean放開(kāi)嗎?  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2009-07-03 13:42 | ゞ沉默是金ゞ
    我改了,在userDaoBean中的save方法中加了個(gè)事務(wù)提交,Transaction tx = this.getSession().beginTransaction();
    tx.commit();  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2009-07-14 15:33 | 雙色球
    很好,不錯(cuò)  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2009-07-31 00:52 | 慕寒
    如果這個(gè)action里有多個(gè)方法怎么去注解,,,,又如 我要對(duì)username這個(gè)字段進(jìn)行判斷是否被注冊(cè)了,怎么去注解,@Validations怎么使用好.@RequiredStringValidator(message = "請(qǐng)輸入用戶(hù)名!")這樣的驗(yàn)證是分開(kāi)寫(xiě)在set方法上好還是 集中寫(xiě)在@Validations 里面好, 會(huì)不會(huì)寫(xiě)很而使代碼看起來(lái)很亂.....請(qǐng)教了!
      回復(fù)  更多評(píng)論
      
    # 運(yùn)行成功,數(shù)據(jù)庫(kù)沒(méi)值? 2009-08-12 20:17 | 未登陸用戶(hù)
    我跟"ゞ沉默是金ゞ"的情況一樣,請(qǐng)教博主:怎么解決此問(wèn)題?  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2009-08-18 11:32 | 心飛翔
    博主有沒(méi)有研究過(guò)在基于Annotation的SSH配置下如何把FreeMarker進(jìn)行整合,或者說(shuō)Stuts2.1.6實(shí)際上是可以直接使用FreeMarker的?謝謝  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2009-10-28 17:43 |
    注冊(cè)的例子有問(wèn)題吧, @Resource(name="userService")
    沒(méi)起到作用,userService還是為空 空指針  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2009-10-28 19:01 |
    樓主 action注解service報(bào)錯(cuò) 空指針 可以回復(fù)嗎  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2010-01-06 16:04 | lion
    我運(yùn)行也是nullpointerexception  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2010-04-06 09:25 | yr
    老大,我想要源碼。yr512656630@163.com。謝謝。。。支持你  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) [未登錄](méi) 2010-04-26 08:57 | java愛(ài)好者
    不錯(cuò),好東西啊!!!  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2010-06-05 15:56 | Mac Hotesion
    javax.annotation.Resource 用的是javaee.jar包里面的嗎?
    ①如果是的話,你的javaee.jar和ejb3-persistence.jar中的javax.persistence.Entity不會(huì)有沖突嗎?怎么處理
    ②如果不是,請(qǐng)問(wèn)你用的是那個(gè)包的?  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2010-08-03 10:03 | tt
    我的SQL語(yǔ)句在控制臺(tái)輸出了。但是數(shù)據(jù)庫(kù)里面沒(méi)有插入啊 這是為什么?
    87513277@qq.com 博主怎么聯(lián)系你?  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2010-08-03 10:26 | tt
    增加 <property name="connection.autocommit">true </property> ,才能使事務(wù)執(zhí)行。  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) [未登錄](méi) 2010-09-01 17:50 | x
    怎么驗(yàn)證對(duì)象?
    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ù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2010-12-31 14:40 | 于楠
    您好,我按著您說(shuō)的方式整合時(shí)出現(xiàn)以下錯(cuò)誤:
    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") //聲明此類(lèi)為控制層的類(lèi),且為prototype模式調(diào)用
    @ParentPackage(value="struts-default")
    @Namespace("/upload")
    請(qǐng)問(wèn)如何更正  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2011-03-31 16:52 | ln1058
    struts.xml還是有必要保留的,不能什么都用注解!尤其是在修改代碼,查找代碼的位置時(shí),全用注解是不方便的  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2011-04-08 22:49 | fdsfas
    @何奇山
    dfasdf  回復(fù)  更多評(píng)論
      
    # re: 基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開(kāi)發(fā) (3) 2011-09-01 09:57 | 河蟹上街
    弄就弄完全了呀,或者發(fā)個(gè)源碼包上來(lái),總是缺東西,很難配置成功的。  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 四虎国产精品永久免费网址| 一级特黄a免费大片| 亚洲av午夜电影在线观看| 国产成人精品日本亚洲语音| 特级毛片免费播放| 大地影院MV在线观看视频免费| 最近中文字幕大全中文字幕免费 | 性做久久久久免费看| 亚洲成网777777国产精品| 亚洲国产精品高清久久久| 亚洲乱码卡三乱码新区| 偷自拍亚洲视频在线观看99| 中国内地毛片免费高清| 成年人网站免费视频| 国产一区二区三区在线免费| 亚洲VA中文字幕不卡无码| 亚洲另类小说图片| 九九九国产精品成人免费视频| 日韩免费无码视频一区二区三区 | 精品剧情v国产在免费线观看| 久久久久亚洲AV成人网人人软件| 久久精品国产亚洲AV无码麻豆| 在线观看日本亚洲一区| 久久久久久噜噜精品免费直播| 91香蕉成人免费网站| 亚洲AV无码专区日韩| 久久久久亚洲AV无码观看| 美女黄频视频大全免费的| 久久A级毛片免费观看| 免费a级毛片18以上观看精品| 亚洲Av综合色区无码专区桃色| 亚洲国产欧美国产综合一区| 日本免费污片中国特一级| 日本久久久免费高清| 久久亚洲私人国产精品vA| 成人亚洲国产精品久久| 中文字幕免费在线观看| 亚洲精品成人片在线观看| 亚洲香蕉在线观看| 美女在线视频观看影院免费天天看 | 东方aⅴ免费观看久久av|