黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

基于 Annotation的Struts2.0+Hibernate3.3+Spri

系統(tǒng) 2307 0

????????進(jìn)入我們基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā)的最后一個(gè)階段 了,這階段主要為我們的項(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(這個(gè)前面已引進(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ā)我們的控制層吧。寫個(gè)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了一個(gè)參數(shù)actionPackages,表示我們的請求到哪里尋找我們的action。舉例說,我們的用戶注冊 action="register",它默認(rèn)會(huì)在com.rong.action包下尋找RegisterAction類。經(jīng)過action的處理后,若 返回success,則會(huì)跳到success.jsp,若校驗(yàn)不通過,則返回input,則請求轉(zhuǎn)發(fā)回register.jsp。
????????好了,看看運(yùn)行效果吧!
???????? 基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā)(3/3) ????????
????????成功啦!我們基于Annotation的SSH整合開發(fā)終于完成了。我所介紹的Annotation注解其實(shí)并不多,還得靠大家找資料去 學(xué)習(xí)。而我們側(cè)重點(diǎn)是在用Annotation時(shí)三大框架是如何整合起來的。
????????說點(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版本的,他年輕時(shí)用Jbuilder開發(fā)過EJB的項(xiàng)目。如果我問他“為什么不選EJB3.0”,他會(huì)不會(huì) 說:“EJB3被改得一塌糊涂,什么注解啊,改得狗屁不通,還是EJB2的最好……”。當(dāng)然,我沒有再問他。有時(shí)候,新事物要被人們所接受,是要經(jīng)歷一段 時(shí)間的,世界在變,知識(shí)在變,我們何不用更寬廣的心態(tài),去接受那些新生的事物?
????????(*^-^*) 本文原創(chuàng),轉(zhuǎn)載請注明出處, ? http://www.blogjava.net/rongxh7 謝 謝! (*^-^*)

基于 Annotation的Struts2.0+Hibernate3.3+Spring2.5整合開發(fā)(3/3)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論