Struts 官方文档学习—Struts Tags

busblog 标签:

Reference:

ST2.NO.0003 struts2.0 官网文档学习笔记之三 - Struts tags》作者:lvpin

Struts2官方文档的第二课是个MVC雏形的Hello World:

首先. 用户的请求会由体系中的控制器来控制,分为前端Filter控制器和后端 Action 控制器. 前端的Filter控制器将拦截所有的用户请求,并通过查找 struts.xml 中的请求配置,将请求转发给相应的Action.

其次,在Controller Action中执行了它的 execute()方法,且通过execute()方法的返回值明确了最终要迁移的视图JSP,

最后.在JSP中,使用

在index.jsp中使用了Struts2的URL标签指向了HelloAction:

<p><a href="<s:url action='hello'/>">Hello World</a></p>

为了在视图页面中使用Struts2  标签,你的应用程序必须包含标签库指令. 典型的,标签库指令是

<%@ taglib prefix="s" uri="/struts-tags" %>

URL带参数的标签

<s:url action="hello" var="helloLink">
  <s:param name="userName">Bruce Phillips</s:param>   <!--参数标签-->
</s:url>
 
<p><a href="${helloLink}">Hello Bruce Phillips</a></p>

上半部分代码声明了一个变量(var="helloLink"),下半部分代码使用了这个变量。实际上这个变量就是一个带参数userName(值为Bruce Phillips)的action。

这种方式比<p><a href="<s:url action='hello'/>">Hello World</a></p> 要好看的多,而且可以复用。

在经过编译后的HTML代码应该是这个样子的:

<a href="/struts2_003/hello.action?userName=Bruce+Phillips">Hello Bruce Phillips</a>

 

Struts2 Form Tag

Struts2 textfield 标签提供了一个输入文本框并且 submit 标签创建了一个  submit 按钮, 当页面被请求返回到浏览器时能看到

<p>Get your own personal hello by filling out and submitting this form.</p>
<s:form action="hello">
  <s:textfield name="userName" label="Your name" />
   <s:submit value="Submit" />
</s:form>
 

编译后的HTML代码

<form id="hello" name="hello" action="/Using_Tags_Struts2_Mvn/hello.action;jsessionid=3471d76027b5342cab44f297b567" method="post">
<table class="wwFormTable">
<tr>
    <td class="tdLabel"><label for="hello_userName" class="label">Your name:</label></td>
    <td><input type="text" name="userName" value="" id="hello_userName"/></td>
</tr>
<tr>
    <td colspan="2"><div align="right"><input type="submit" id="hello_0" value="Submit"/>
</div></td>
</tr>
</table>
</form>

要注意的是 Struts2 在form中创建了一个表格用来定位 form的元素,其实我觉得这样很丑!据说以后会学习到使用布局(table,css)。这个要重点研究一下!

Struts2 textfield 标签创建了一个HTML输入标签,它的名称值和Struts2 textfield中的name值是一样的. Struts2也基于textfield标签创建了一个 HTML Label 标签.

//补充说明: label 的作用是当你点击这个Label,即Your name时, 文档框将获得焦点. 还记得姓名单选按钮吗? 如果要选中单选按钮必须点击那个小圆圈, 但是有了 label 通过设置 label 标签的for属性时,单击一个label 就表示选中了 for="id" ,那个id所指向的元素. 这样就不用戴着眼镜去选那么小的圆圈了.. Struts2 ,自动帮我们设置好了这个步骤.

Struts Property Tag

在Hello Wolrd 教程中已经谈论过了关于 messageStore.message 的值,它告诉Struts2第一次请求的是Action类的getMessageStore()方法. 这个方法将会返回一个 MessageStore的对象. ".message"的部分告诉Struts2要去调用MesageStore对象的getMessage()方法. getMessage()方法会返回一个字符串,这个字符串最终将会包含在返回的HTML页面中显示。

<s:property value="messageStore.message" />

Struts2 property 标签一个非常有用的特性是它能够自动的转换普通的数据类型(int,double,boolean)成一个String类型的等价物。

//注意:尽管 helloCount是一个static类型的数据, 但是它的 get/set 方法不是static类型的. 如果在Struts2中通过调用 getHelloCount()的方法来得到 helloCount 的值, 那么 getHelloCount()方法不能是 static 类型的.

 


你可能感兴趣的:(struts)