
2008年4月5日
Filter是Strusts2中非常重要的機制,而Filter的配置就放在Web.xml文件中,如下:
<?xml version="1.0" encoding="GBK"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 定義Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用來初始化struts2并且處理所有的WEB請求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
posted @
2008-04-05 16:52 怡眾科技 閱讀(4204) |
評論 (1) |
編輯 收藏

2007年12月7日
隨著阿里巴巴在香港的上市,今年冬天,馬云注定將成為最引人矚目的中國企業家。在《阿里巴巴:天下沒有難做的生意》一書的序言寫道:“如果說楊致遠是互聯網領域里第一個世界級的華人企業家,那么馬云就可能是下一個。楊致遠是商業的天才,他發現了互聯網搜索的價值,而馬云則是天才的商人,他把一團讓人手足無措的亂麻織成了一匹錦繡。”今天,很多人堅持這樣的判斷。
要總結馬云的成功秘訣,應該可以羅列出20條以上,其中包括他的奇異長相和一口流利的英語。不過,在眾多答案中,第一條更為專注。
1999年的春天,馬云從北京鎩羽回到杭州,在城郊的湖畔花園的家里創辦阿里巴巴網站。公司成立的那一天,家里的墻壁突然滲水了,他對大家說,我出去找點材料。過一會兒,他抱了一大卷舊報紙回來,然后大家一起把它們貼在墻上,就這樣開始了公司的第一天。
阿里巴巴當時總共18個人,馬云對全體員工發表開業演講:“我們要辦的是一家電子商務公司,我們的目標有三個。”馬云的演講很能煽動人,“第一,我們要建立一家生存80年的公司。”
大家一邊鼓掌,一邊想:“反正能不能活到80年,我們可能誰也看不到。”
“第二,我們要建設一家為中國中小企業服務的電子商務公司。”大家鼓掌,在這一點上誰也沒有疑問。
“第三,我們要建成世界上最大的電子商務公司,要進入全球網站排名前十位。”大家你看我,我看你,每個人的心里都在犯嘀咕,“這個目標太具體化了,就憑我們這幾桿槍?”
后來馬云告訴我,他搞電子商務,從那一天起就鐵了心。
2001年,全球互聯網遭遇大寒流,那年冬天,他飛赴日本向投資阿里巴巴的軟銀總裁孫正義匯報公司情況,那些日子,孫正義投資的上百家互聯網公司亂成了一團,大家都不知道未來的出路在哪里。那天,前來匯報的各國CEO一個接一個地進去出來,輪到馬云了,當他簡短地講完阿里巴巴的境況后,孫正義幽幽地說:“今天前來匯報的CEO,所說的話都與我當年投資他們時說的不一樣了,只有你還在說當年說過的話。”當時,曾經當過一天世界首富的孫正義的資產已縮水95%,很多投資項目早已面目全非,只有阿里巴巴還是那間他當初投資的電子商務公司,也是軟銀最成功的投資項目之一。
時間又轉到了2002年底,互聯網世界開始回暖。中國著名的網絡公司如新浪、搜狐等相繼實現盈利,而一些頗有市場前景的互聯網項目也初露端倪,當時阿里巴巴的網商用戶已經超過400萬家,馬云面臨新的誘惑。
“阿里巴巴擁有那么多有價值的注冊客戶,具備了開拓任何領域的最佳條件。”幾乎所有的人都這么認為。當時,擺在馬云面前的道路有三條。
第一條道路,是發展短信業務,以搜狐、網易為代表的中國門戶網站均在這個聚寶盆里淘到了大金塊,短信市場已非常成熟,阿里巴巴完全有搶奪蛋糕的能力。
第二條道路,是投身網絡游戲領域,當時全中國還沒有一家大型網絡游戲公司,陳天橋的盛大才剛剛起步,如果阿里巴巴轉投此領域,應當會有大作為。
第三條道路,是繼續在尚未成熟的電子商務的“老路”上走下來。
馬云的抉擇是,不改初衷,一條道走到黑。今天,阿里巴巴沒有成為另一家網易,馬云也失去了成為“中國首富”的機遇。但是,在電子商務領域,阿里巴巴一路狂奔,無人可追。
所有的成功都是抵抗誘惑的結果。馬云的專注包括三個詞,一是電子商務,二是中國市場,三是中小經營者。目前,阿里巴巴旗下的所有業務,包括淘寶網、支付寶莫不如此,甚至在我看來,他兩年前出手收購的雅虎如果要獲得復蘇,其戰略起點也還是要從自己的專注優勢中去尋找。阿里巴巴上市后,馬云手握重金,又有了一次討伐四野的機遇,不過,“錢多了,犯錯誤的機會也就多了”,不知道馬云還記得當年在舊報紙糊成的墻下說過的那席話嗎?1947年6月6日,亨利 · 福特去世的時候,《紐約時報》撰文說:“當他來到人世時,這個世界還是馬車的時代,當他離開人世時,這個世界已經成了汽車世界。”汽車其實不是福特發明的,不過他讓它成為了一個改變美國的工具。今天的馬云其實也有這樣的機會,電子商務不是他發明的,不過阿里巴巴可能成為改變中國商品和“中國制造”命運的重要推力之一。
posted @
2007-12-07 16:44 怡眾科技 閱讀(454) |
評論 (1) |
編輯 收藏

2007年12月5日
Struts 2內嵌了Dojo工具包,實現對Ajax的支持。下面是一個用戶名和密碼都是Admin的Login應用。
1、在struts.xml中加入一個Action mapping
xml 代碼
- <action name="showAjaxLoginForm">
- <result>/pages/ajaxlogin.jspresult>
- action>
-
- <action name="ajaxLogin" class="net.roseindia.Login">
- <result name="input">/pages/ajaxlogin.jspresult>
- <result name="error">/pages/ajaxlogin.jspresult>
- <result>/pages/ajaxloginsuccess.jspresult>
- >
2、用Ajax編寫一個Login頁面ajaxlogin.jsp
這個頁面使用了 標簽, 這個標簽能通過Ajax tags載入頁面內容。jsp頁面還使用了標簽,這個標簽可以利用Ajax來更形頁面元素和提交一個form。當出現錯誤是,和標簽執行并顯示錯誤信息。
xml 代碼
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <s:head theme="ajax" debug="true"/>
- head>
- <body>
- <s:div id="loginDiv" theme="ajax">
- <div style="width: 300px;border-style: solid">
- <s:form action="ajaxLogin" validate="true">
- <tr>
- <td colspan="2">
- Login
- td>
- tr>
- <tr>
- <td colspan="2">
- <s:actionerror />
- <s:fielderror />
- td>
- tr>
- <s:textfield name="username" label="Login name"/>
- <s:password name="password" label="Password"/>
- <s:submit theme="ajax" targets="loginDiv" notifyTopics="/ajaxLogin"/>
- s:form>
- div>
- s:div>
- body>
- html>
3、編寫一個驗證用戶名和密碼的Action類Login.java
如果驗證成功返回SUCCESS,失敗就返回ERROR
java 代碼
- package net.roseindia;
-
- import com.opensymphony.xwork2.ActionSupport;
- import java.util.Date;
-
-
-
-
- public class Login extends ActionSupport {
-
- public String execute() throws Exception {
- System.out.println("Validating login ... ...");
- System.out.println("User = " + getUsername());
- if (!getUsername().equals("Admin") || !getPassword().equals("Admin")) {
- System.out.println("Validating error ! User = " + getUsername());
- addActionError("Invalid user name or password! Please try again!");
- return ERROR;
- } else {
- System.out.println("Validating success !");
- return SUCCESS;
- }
- }
-
-
-
-
-
-
- private String username = null;
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String value) {
- username = value;
- }
-
-
-
-
-
-
- private String password = null;
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String value) {
- password = value;
- }
-
- }
4、編寫一個登錄成功頁面ajaxloginsuccess.jsp
xml 代碼
- <html>
- <head>
- <title>Login Successtitle>
- head>
- <body>
- <p align="center"><font color="#000080" size="5">Login Successful !font>p>
- <h1> Welcome to <%=request.getParameter("username")%> h1>
- body>
- html>
5、訪問下面連接 http://localhost:8080/s2ajax/showAjaxLoginForm.action
posted @
2007-12-05 00:01 怡眾科技 閱讀(987) |
評論 (0) |
編輯 收藏

2007年12月4日
http://www.theserverside.com
權威的的J2EE站點,有最新的消息發布和很多技術文章以及很好的論壇,進行J2EE相關技術
的全方位的討論,也有電子書可以下載。
http://www.javaworld.com
很著名的國外的java技術站點。有一段時間由于一些原因停止了更新,不過不久前有開始了
更新的工作。
http://www-900.ibm.com/developerWorks/cn/java/index.shtml
IBM公司的developerWorks Java技術專區,有很多關于J2EE的技術文章,并且文章的質量很
高。
http://www.jdon.com
國內不錯的J2EE技術站點,有很多技術文章和源代碼。以前推出過漢化的JIVE版本,現在有
了自己的J2EE框架產品。
http://www.huihoo.com
專注于中間件技術的站點和論壇,國內開源軟件做的相當不錯的組織,推出了自己的J2EE服
發信人: petbear (雨中的人), 信區: J2EE
標 題: J2EE學習經驗和流程
發信人: oosky (天天), 信區: J2EE
標 題: J2EE站點資源
發信站: BBS 水木清華站 (Wed Mar 31 17:23:27 2004), 轉信
Java Ftp
ftp://java:java@219.224.190.248:4021 (歡迎大家使用)
很多JAVA資源,感謝前輩的工作:)
務器產品JFox以及相關的
OpenSource 產品。
http://gceclub.sun.com.cn
SUN的中文技術社區,有SUN 的技術人員的支持維護,很多不錯的文章,在線講堂欄目辦的
很有特色。推出了新
版的技術論壇,但是人氣一直不是很旺。
http://www.cnjsp.org
以前做過JSP的論壇,現在定位于Java技術服務,提供一些J2EE的技術文章,還不錯。
http://www.chinajavaworld.net
應該是國內最著名和熱門的java技術站點了,有很j2ee的信息和技術文章和很好的論壇。
http://www.csdn.net
程序員都知道的網站:)也把它列進來。有最新的java業界動態和技術文章可以查找。
http://cwiki.apache.org/S2WIKI/projects-using-webwork-or-struts2.html
自己喜歡的地方,收藏
http://sourceforge.net
很不錯的開源社區
posted @
2007-12-04 23:15 怡眾科技 閱讀(265) |
評論 (0) |
編輯 收藏
作者:lgx522 發表時間:2007年04月19日 18:04
回復
原貼網址: http://www.jdon.com/jivejdon/thread/31553.html
經過數年的“框架大戰”,Java界的各種框架找到了自己應有的位置。
Spring+Hibernate+Struts已成為Java開發的主流體系。在這個體系中,Spring+Hibernate的地位應該說短期內是難以撼動了。除了新興的Jboss Seam作為挑戰者之外,幾乎難有勁敵。有趣的是當初Spring、Hibernate作為挑戰者,將官方的EJB成功挑落馬下;這次反倒是官方的EBJ3成了挑戰者,不知結局如何。
Java B/S編程中歷來戰火最激烈的其實還在Web層,框架的數量最多,爭議最大。
一切由Struts而起,而Struts最終也坐穩了第一個時代的王座。在技術層面,Struts 1.x已經被無數人抱怨過、批評過,但終于還是穩坐王位,這充分說明了習慣的力量。“穩定壓倒一切”,這句話在IT技術領域仍舊適用。
其實IT應用技術,什么新鮮玩意并不難學。難的是標準化和規范化。每個程序員都有自己的思路和習慣,寫出來的代碼自然是五花八門。Java何以成為編程界的老大,很重要的一點在于Java的規范化。這種規范化很高的語言適用于多人合作的大型項目,便于溝通和理解,也就便于集成和維護。Java世界為什么會框架橫飛,說到底還是規范化的需要。純JSP和Struts寫Web誰快,擺明了是JSP。那撐飽了用Struts?原因在于100個人寫出來的JSP,有100種寫法;而100個人寫出來的Struts,基本相似。Struts之成功,正緣于其在Java Web層的規范化方面所做出的貢獻。
然而長江后浪推前浪,Struts 1.x的技術缺陷畢竟是隱患。
Sun力推JSF,打算一雪Web層框架缺失之恥。可惜JSF既要沿用Swing的技術路線,又要學ASP.NET,還要照顧產商的IDE,結果搞了個四不象,弄得里外不是人。當然Sun的技術實力畢竟是超強的,只要別重蹈EJB的覆轍,拿出點專斷的精神(像這兩年的NetBeans),做出像Swing那樣水準的東西,JSF當大有作為。JSF現在比較有優勢的是對Ajax的集成,這一點走在了其他框架的前面。
而Struts就更沒有志氣了,把WebWork換了個標簽,湊出個Struts2,Bug多多。說實在話,根本不如原版的WebWork。如果不是靠了原先的fans捧場,根本就沒得混。不過Struts原本就不是以技術取勝的,靠的是搶占先機帶來的習慣優勢。如果原先的fans們在這兩年內都能轉到Struts2,那么Struts二世仍將雄霸天下。
綜上所述,未來兩年,JSF與Struts將展開Java Web框架的最終戰爭。
以筆者愚見,結局有二:一是不論Struts還是JSF獲勝,Java Web層都將結束混戰的局面,這對Java Web開發的標準化是非常有利的,并有助于鞏固Java在B/S界的地位;二是Struts1.x、Struts2、JSF三分天下,必然從整體上削弱Java在B/S界的競爭力,并將進一步被RoR、ASP.NET、PHP所蠶食。
posted @
2007-12-04 23:05 怡眾科技 閱讀(203) |
評論 (0) |
編輯 收藏
Design Pattern Practice
1.序
本文從一個簡單的多列排序的例子入手,由淺入深地講解Design Pattern(設計模式)的目的、分析和實踐。
文中的例子用到Compositor Pattern和Decorator Pattern。
同時,文中的例子也提供了一類問題(條件組合問題)的解決方案。
2.問題的引入
Design Pattern(設計模式)的目標是,把共通問題中的不變部分和變化部分分離出來。不變的部分,就構成了Design Pattern(設計模式)。這一點和Framework(框架)有些象。
下面舉個排序的例子,說明如何抽取問題中的不變部分。
假設一個Java類Record有field1,field2,field3等字段。
public class Record{
public int field1;
public long field2;
public double filed3;
};
我們還有一個Record對象的數組Record[] records。我們需要對這個數組按照不同的條件排序。
首先,按照field1的大小從小到大進行升序排序。
排序函數如下:
void sort(Record[] records){
for(int i =…){
for(int j=…){
if(records[ i ].field1 > records[ j ].field1)
// swap records[ i ] and records[ j ]
}
}
}
其次,按照field2的大小從小到大進行升序排序。
void sort(Record[] records){
for(int i =…){
for(int j=…){
if(records[ i ].field2 > records[ j ].field2)
// swap records[ i ] and records[ j ]
}
}
}
再次,按照field3的大小從小到大進行升序排序。
...
這種要求太多了,我們寫了太多的重復代碼。我們可以看到,問題的變化部分,只有判斷條件部分(黑體的if條件判斷語句)。
我們可以引入一個Comparator接口,把這個變化的部分抽取出來。
public interface Comparator(){
public boolean greaterThan(Record a, Record b);
};
sort函數就可以這樣寫(把判斷條件作為參數):
void sort(Record[] records, Comparator compare){
for(int i =….){
for(int j=….){
if(compare.greaterThen(records[ i ], records[ j ]))
// swap records[ i ] and records[ j ]
}
}
}
這樣,對應第一個要求――對records數組按照field1的大小排序。
我們可以做一個實現Comparator接口的CompareByField1類。
public class CompareByField1 implements Comparator{
public boolean greaterThan(Record a, Record b){
if(a.filed1 > b.filed1){
return ture;
}
return false;
}
}
sort函數的調用為:
sort(records, new CompareByField1());
這樣,對應第一個要求――對records數組按照field2的大小排序。
我們可以做一個實現Comparator接口的CompareByField2類。
public class CompareByField2 implements Comparator{
public boolean greaterThan(Record a, Record b){
if(a.filed2 > b.filed2){
return ture;
}
return false;
}
}
[code]
sort函數的調用為:
[code]
sort(records, new CompareByField2());
按照C++ STL的叫法,這里的sort稱為算法(Algorithm),records稱為容器(集合),Comparator稱為函數對象(Function Object)。
JDK的java.util.Collections類的sort方法和java.util.Comparator接口就是按照這樣的思路設計的。下面我們來看看如何應用sort和Comparator解決多列排序問題。
|
|
Re: 這么多設計模式,我的看法和理解 |
發表: 2004年07月09日 18:37 |
回復 |
|
3.多列排序問題
3.1排序條件的數量
我們知道,SQL語句能夠實現強大的排序功能,能夠按照不同字段的排列進行排序,也能夠按照升序,降序排序。比如下面的語句。
order by field1 asc, field2 asc, field3 desc。
這個排序條件按照field1的升序,field2的升序,field3的降序排序。
注意,排在前面的字段具有較高的優先級。
比如,兩條紀錄A和B,滿足如下條件:
(1)A.field1 > B.field1,(2)A.field2 < B.field2。
這時如果按照order by field1, field2語句排序,那么 A > B。
如果上述條件中的(1)A.field1 > B.field1變化為A.field1 == B.field1。這時,條件(2)就會起作用。這時,A < B。
我們來看看在Java中如何實現這種靈活而強大的排序。
我們還是以上一節的Record類為例。Record類有3個字段,我們來看一看,有多少種可能的排序條件。
(1)按field1排序。(2)按field2排序。(3)按field3排序。(4)按field1,field2排序。(5)按field1升序,按field2降序排序…...
各種排序條件的排列組合,大概共有30種。而且,隨著字段個數的增長,排序條件的個數呈冪級數的增長。
按照上一節的sort和Comparator方法,如果我們需要達到按照任意條件進行排序的目的,那么我們需要為每一個排序條件提供一個Comparator,我們需要30個Comparator類。:-)
當然,我們不會這么做,我們能夠進一步提取這個問題中的相同重復部分,優化我們的解決方案。
3.2 問題分析
我們來分析這個問題中變化的部分和不變的部分。
上面所有的排序條件中,不變的部分有3部分:
(1)A.field1和B.field1的比較,
(2)A.field2和B.field2的比較,
(3)A.field3和B.field3的比較;
變化的部分有兩部分,
(1)這三種比較條件的任意組合排列,
(2)升序和降序。
根據這段分析,我們引入兩個類,ReverseComparator類和CompositeComparator類。
CompositeComparator類用來解決字段的組合排列問題。
ReverseComparator類用來解決字段的升序、降序問題。
3.3 ReverseComparator類的代碼
import java.util.Comparator;
public class ReverseComparator implements Comparator{
/** the original comparator*/
private Comparator originalComparator = null;
/** constructor takes a comparator as parameter */
public ReverseComparator(Comparator comparator){
originalComparator = comparator;
}
/** reverse the result of the original comparator */
public int compare(Object o1, Object o2){
return - originalComparator.compare(o1, o2);
}
}
3.4 CompositeComparator類的代碼
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.LinkedList;
public class CompositeComparator implements Comparator{
/** in the condition list, comparators' priority decrease from head to tail */
private List comparators = new LinkedList();
/** get the comparators, you can manipulate it as need.*/
public List getComparators(){
return comparators;
}
/** add a batch of comparators to the condition list */
public void addComparators(Comparator[] comparatorArray){
if(comparatorArray == null){
return;
}
for(int i = 0; i < comparatorArray.length; i++){
comparators.add(comparatorArray[i]);
}
}
/** compare by the priority */
public int compare(Object o1, Object o2){
for(Iterator iterator = comparators.iterator(); iterator.hasNext();){
Comparator comparator = (Comparator)iterator.next();
int result = comparator.compare(o1, o2);
if(result != 0){
return result;
}
}
return 0;
}
}
3.5 Comparator的組合應用
這一節講述上面兩個類的用法。
對應前面的排序問題,我們只需要3個Comparator類:
(1)Field1Comaprator;
(2)Field2Comaprator;
(3)Field3Comaprator。
下面舉例說明,如何組合這些Comparator實現不同的排序條件。
(1)order by field1, field2
CompoiComparator myComparator = new CompoiComparator();
myComparator. addComparators(
new Comparator[]{
new Field1Comaprator (), new Field2Comaprator ()};
);
// records is a list of Record
Collections.sort(records, myComparator);
(1)order by field1 desc, field2
CompoiComparator myComparator = new CompoiComparator();
myComparator. addComparators(
new Comparator[]{
new ReverseComparator(new Field1Comaprator ()),
new Field2Comaprator ()};
);
// records is a list of Record
Collections.sort(records, myComparator);
這里提供的ReverseComparator類和CompositeComparator類都采用了Decorator Pattern。
CompositeComparator類同時也是Composite Pattern。
4.過濾條件的排列組合
過濾條件問題也屬于條件組合問題的范疇。比如JDK提供的java.io.File類提供了一個文件過濾方法listFile(FileFilter),用戶可以定制不同的FileFilter,實現不同的過濾條件,比如文件時間在某個范圍內;文件后綴名,文件名符合某種模式;是目錄,還是文件,等等。
同樣,我們可以應用上述的解決方法,實現靈活的過濾條件組合――用一個CompositeFilter類任意組合過濾條件,用一個ReverseFilter類作為排除條件。
4.1 CompositeFilter類的代碼
import java.io.FileFilter;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.LinkedList;
public class CompositeFilter implements FileFilter {
/** in the filter list, every condition should be met. */
private List filters = new LinkedList();
/** get the filters, you can manipulate it as need.*/
public List getFilters(){
return filters;
}
/** add a batch of filters to the condition list */
public void addComparators(FileFilter[] filterArray){
if(filterArray == null){
return;
}
for(int i = 0; i < filterArray.length; i++){
filters.add(filterArray[i]);
}
}
/** must meet all the filter condition */
public boolean accept(File pathname) {
for(Iterator iterator = filters.iterator(); iterator.hasNext();){
FileFilter filter = (FileFilter)iterator.next();
boolean result = filter.accept(pathname);
// if any condition can not be met, return false.
if(result == false){
return false;
}
}
// all conditions are met, return true.
return true;
}
}
4.2 ReverseFilter類的代碼
import java.util.Comparator;
public class ReverseComparator implements Comparator{
/** the original comparator*/
private Comparator originalComparator = null;
/** constructor takes a comparator as parameter */
public ReverseComparator(Comparator comparator){
originalComparator = comparator;
}
/** reverse the result of the original comparator */
public int compare(Object o1, Object o2){
return - originalComparator.compare(o1, o2);
}
}
|
|
|
posted @
2007-12-04 22:48 怡眾科技 閱讀(1320) |
評論 (1) |
編輯 收藏

2007年12月3日
(1)部署lib庫中文件Struts+ibatis,共6個。
(2)配置struts2中的web.xml,目的是讓Struts2來解釋web應用。內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter> <!--定義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><!--定義filtemapping指定搜索路徑為根路徑開始-->
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
(3)配置Struts2的Struts.xml文件,目的是建立struts2中邏輯調用機制。-----------------------改
內容如下:===============================需要修改
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="yzth" namespace="/" extends="struts-default">
<action name="hello" class="org.lxh.struts2.demo.HelloAction">
<result name="success">
/hello.jsp
</result>
<result name="error">
/error.jsp
</result>
</action>
</package>
</struts>
(4)配置Ibatis中的各個關鍵環節
POJO類的建立 *** 用于存儲ORMapping映射后的數據記錄,只包含get 和set 方法
com.mydomain.jata中的
Account.xml *** 最重要的ORMapping文件,存儲了對數據訪問的各種映射的SQL操作。
SqlMapConfig.xml *** 存儲連接數據的方法,配置數據連接池。
(5)設計調用界面
index.jsp==>hello.action==>account.class(應該從hello.action中調用ormapping)==>struts.xml==>hello.jsp
(5.1)index.jsp使用S:標記傳值給hello.action
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<form action="hello.action" method="post">
根據ID進行查詢:<input type="text" name="msg">
<input type="submit" value="提交">
</form>
(5.2)hello.action使用Msg接收id后,調用account進行查詢。
===========================================================================
這個過程沒搞清楚,準備找1個struts2+ibatis的開源項目研究一下再繼續。。。。
posted @
2007-12-03 21:09 怡眾科技 閱讀(1988) |
評論 (1) |
編輯 收藏
用心記錄我們技術的成長過程。
posted @
2007-12-03 19:29 怡眾科技 閱讀(226) |
評論 (0) |
編輯 收藏