关于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的名字;)