Struts3_1.txt

来源:互联网 发布:网络信息平台 编辑:程序博客网 时间:2024/04/26 04:00

虽然现实告诉我们,你只是宇宙中的只是沧海一粟,但是,仍然无法阻止你去了解这个整个宇宙的渴望。我们希望了解事情的真相,随然有时候真相并不让人高兴。现在我们来了解struts的真相。
如果你做过系统开发就会知道,几乎所有的系统都会有一个登陆过程。同样,我们通过登陆过程来了解struts的幕后真相。
一般的应有就是打开登陆窗口窗口,登陆之后,显示一个主页面。登陆包括用户名,密码,有时候还有验证码,主页面就不用说了,所有的主菜都在这里了。要做一个jsp的登陆界面也很容易。
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<!--这一部分就是import一些东西,让下面的标签起到作用
bean:不用说了肯定是bean标签。
html:html标签;
logic:逻辑标签;
uri:标签的位置,如果要用这些标签,除了要在WEB-INF/lib中导入标签之外,还有在web.xml中指定他们的位置。
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
这是html标签,依次类推。
-->
<HTML>
<HEAD>
<TITLE>Welcome!</TITLE>
<html:base/>
<!--
看起来很想<base>,事实上他就是产生了一个<base>标签。例如:<base href="http://localhost:8080/logon/pages/Welcome.jsp">
有什么用呢,原来struts中的所有页面都是被严格管理的,他们可以通过action转发访问,但是转发并没有告诉浏览器我现在的页面或者servlet所在的位置,因为他可能就没有这样的一个所谓的位置,如果以页面中存在图片,那他就不知道到底在那个目录下来找图片了。

-->
</HEAD>
<BODY>
<logic:present name="user">
<H3>Welcome <bean:write name="user"
property="username"/>!</H3>
</logic:present>
<logic:notPresent scope="session" name="user">
<H3>Welcome World!</H3>
</logic:notPresent>
<!--
这里存在这两个struts标签的应用,<logic:present name="user"></logic:present>
present的意思是呈现;如果name为user的bean存在显示一种情况,如果不存在就跳过去继续下面的代码。
bean:write 顾名思义,就是输出一个user的bean的username的属性的值。
notPresent很明显是不存在user的时候的效果了。其中scope的意思是作用域,他的作用域是session。
-->
<html:errors/>
<!--
我们如果没有输入信息就提交的话,将会显示一个错误信息。下面的标签就是渲
染此错误消息的。如果没有错误消息,标记则什么都不输出,就象从页面消失了一样:
-->
<html:form action="/LogonSubmit" focus="username">
<TABLE border="0" width="100%">
<TR>
<TH align="right">Username:</TH>
<TD align="left"><html:text property="username"/></TD>
</TR>
<TR>
<TH align="right">Password:</TH>
<TD align="left"><html:password property="password" redisplay="false"/></TD>
</TR>
<TR>
<TD align="right"><html:submit/></TD>
<TD align="left"><html:reset/></TD>
</TR>
</TABLE>
</html:form>
<!--
提交表单,注意focus="username"标识表单的默认焦点是username,action是是对配置文件中的ActionMapping 的引用。
<html:password property="password" redisplay="false"/>中的redisplay="false"是对第一次登陆清除缓存。
-->
</BODY>
</HTML>

<action
path="/LogonSubmit"
type="app.LogonAction"
name="logonForm"
scope="request"
validate="true"
input="/pages/Logon.jsp">

这就是action="/LogonSubmit"所对应的配置,
path表示他是映射这么名字或者路径来访问的,
type表示调用的Action 对象是logonAciton,
作用于是request,
需要验证。
name是什么,名字?
不是,他是
他那bean的名字,也就是ActionForm的名字,你看struts的就是这么奇怪,让人不能一看就了解是什么。
input,标明在校验方法返回False时,将控制发送到哪里。
总之这里有两个奇怪的命名,不是让人很舒服,path还好理解,就是type和name,简直就是迷惑了敌人也迷惑了自己。 

原创粉丝点击