對實戰Struts中一個經典例子的詳細學習
關于Logon例子的學習
Welcome頁面:
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
(在struts1.2中要寫成? <%@ taglib uri="
http://struts.apache.org/tags-html
" prefix="html" %>? 其他兩個相似
作用:使得輸入的擴展標簽庫可以被頁面的其他部分使用)
<HTML>
<HEAD>
<TITLE>Welcome!</TITLE>
<html:base/>
(使得對于圖像等資源的引用與原始jsp頁面位置相關)
</HEAD>
<BODY>?<logic:presentname="user">????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<H3>Welcome<bean:write name="user" property="username"/>!</H3>??????????????????????????????????????????????????????
</logic:present>???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
(檢查用戶是否在session中存儲了userbean.如果存儲了該bean,則在歡迎頁面中顯示username)?????????
?
??????????
<logic:notPresentscope="session" name="user">
<H3>Welcome World!</H3>
</logic:notPresent>
(如果不存在userbean則顯示"Welcome World!")
注:在Struts中的邏輯標簽都是使用"this"和"notThis"這樣的表單,但可以通過擴展標簽庫來實現if/then/else等語法
<html:errors/>
(用來顯示錯誤信息:)
<UL>
<LI><html:linkforward="logon">Sign in</html:link></LI>
<logic:presentname="user">
<LI><html:linkforward="logoff">Sign out</html:link></LI>
</logic:present>
</UL>
<IMG src='struts-power.gif' alt='Powered by Struts'>
</BODY>
</HTML>
上述的jsp頁面在瀏覽器中的代碼:
<HTML>
<HEAD>
<TITLE>Welcome!</TITLE>
<base href="
http://localhost:8080/logon/pages/Welcome.jsp
">
</HEAD>
<BODY>
<H3>Welcome World!</H3>
<UL>
<LI><a href="/logon/logon.do">Sign in</a></LI>
</UL>
<IMG src='struts-power.gif' alt='Powered by Struts'>
</BODY>
</HTML>
--------------------------------------------------------------------------------------------------------------------------
<%@ taglib uri="/tags/struts-html" prefix="html" %>
(參看Welcome.jsp部分)
<HTML>
<HEAD>
<TITLE>Sign in, Please!</TITLE>
</HEAD>
<BODY>
<html:errors/>
<html:formaction="/LogonSubmit" focus="username">
(<html:form> 標簽會生成一個HTML表單來使用戶輸入數據。其action屬性指向Struts配置中的某個ActionMapping對象,該對象決定了使用哪個javabean來填充HTML控件,同時該javabean也是Srtuts框架結構的一個ActionForm類)
<TABLE border="0" width="100%">
<TR>
<TH align="right">Username:</TH>
<TD align="left"><html:textproperty="username"/></TD>
(<html:text>標簽創建一個HTML文本域來輸入框,同時,它還使用該表格對應的JavaBean中屬性名為username的屬性值來進行自我填充。)
</TR>
<TR>
<TH align="right">Password:</TH>
<TD align="left"><html:passwordproperty="password"/></TD>
</TR>
<TR>
<TD align="right"><html:submit/></TD>
<TD align="left"><html:reset/></TD>
</TR>
</TABLE>
</html:form>
</BODY>
</HTML>
---------------------------------------------------------------------------------------------------------
Struts中的 ?struts-config.xml的配置
ActionMapping的配置元素
?path -?????? 該ActionMapping的唯一標識符,它包括對應的Web地址 (不包括擴展名.do)
?type?-?????? 當請求該路徑時,調用的Action對象
?name?-? ?? HTML表單對應的JavaBean(ActionForm)
?scope?-???? 定義了存儲該JavaBean在請求中(request)還是在會話中(session)
?validate?- 定義了在調用Action對象前是否調用JavaBean上的validate方法
?input -????? 定義了當validate方法返回false時要轉移到的地址
(Struts中的很多命名都是很含糊的;比如ActionMapping中的name屬性并不是指該ActionMapping對象的名字,而是指該ActionMapping使用的JavaBean的名字;)?
posted on 2006-10-02 11:23 小雨不打傘 閱讀(447) 評論(0) 編輯 收藏 所屬分類: web學習心得