文节是文章的第二部分,主要讲的是页面如何显示Action中的属性,以及在无XML文件配置情况下,轻松实现校验功能。
如何将我们的数据显示在页面上呢?
当服务器处理完了,我们需要将数据显示在页面模板上。通常为说,我们会在Struts的Action设置一些property(属性),这样在页面就可以直接取出来了。这些property的值也许来自于你自己的数据库,也许又是你自己的一系列业务逻辑处理后的结果,但页面可没有这么聪明它们是怎么来的。它们只知道:你要显示的属性是可用的,我的工作就是负责显示它们而已,我才不管它们具体是什么。相反地,Action也并不需要知道HTML或其它EL表达示,它只是负责设置那些property即可。
而现在呢,我们关心的是Struts框架会不会将Action与页面模板之间自动建立映射关系。好吧,让我们先在一个Action设置一个简单的property,然后看看页面能不能像我们所预想的那样,将其显示出来。
"Example 3: HelloWorldAction.java"
package actions;
public class HelloWorldAction {
private String greeting;
public String getGreeting() {
return greeting;
}
public String execute() {
greeting = "The server time is " + new java.util.Date().toString();
return "success";
}
}
注意现在Action已经是一个“POJO”了(一个标准的Struts2特性)。因为在这个例子里我们不需要框架为我们提供什么额外的服务,所以不需要继承什么基类呀,实现什么接口呀。但如果你一定要指出什么特别的地方,就是那个“execute()”方法了。还有一个地方就是这个类一定要有“Action”为类名的后缀。
现在我们要将原来的hello-world.jsp稍微改一改,这样就能看到这次的更新信息了。更新后的页面为"Example 4: hello-world.jsp (2)"
"Example 4: hello-world.jsp (2)"
<html>
<body>
<p>
Hello World!
</p>
<p>
${greeting}
</p>
</body>
</html>
当然我们需要将用Struts2的标签来代替JSTL了,但<s:property value="greeting"/>看上去确实比${greeting}麻烦不少。更新后的结果请看图2:(注意:Struts2.0.11以后版本,是不支持EL表示的,所以如果你的版本是新版本,这里的${greeting}要换成<s:property value="greeting"/>,我是为保证原文,才没有改动。)
"图2"
SmartURLs可以校验我们的数据项吗?
像Struts2这样强大的Action框架,Action可以在运行时改变工作流程方向,从而输出各种不同的页面。比如说,我们想收集一些页面提交的数据。如果数据输入正确呢,我们就会跳转到其它页面;但如果不正确的话,我们就希望它能返回到输入页面,让用户可以重新输入。因此验证流程是框架提供的一个很特殊的服务。现在我们来看Example 5: HelloWorld.java (2),这次我们继承了基类ActionSupport。
"Example 5: HelloWorld.java (2)"
package actions;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.*;
@Validation()
public class HelloWorld extends ActionSupport {
private String greeting;
@RequiredStringValidator(message="Please enter a greeting!")
public String getGreeting() {
return greeting;
}
public void setGreeting(String value) {
greeting = value;
}
}
因为我们继承了Action的原因,SmartUTLs这次又要求我们去掉“Action”作为类名的后缀了。 在Example5中,我们使用了Annotation来实现我的消息验证功能(又一个Struts2的特性,Annotation由Java5引入,使用时,需要使用@符号)。Struts2和SmartURLs加上Annotation的使用成了Struts2 XML配置的可选方案了。在“Example 5”中,我们用了Annotation将RequiredString valodator(验证)同属性粘在一起了。框架提供了所有通过的验证valodator。
为了能看到收集的验证信息,我们需要增加一个新的页面,请看"Example 6: hello-world-input.jsp".
"Example 6: hello-world-input.jsp"
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<p>
What would you like to say to the world?
</p>
<s:form action="hello-world">
<s:textfield label="Greeting" name="greeting" />
<s:submit />
</s:form>
</body>
</html>
图3上 : 显示了要绑定的输入验证页面。
"图 3: "
这时,如果我们什么都不输入,直接提交,当然验证会失败,然后会返回result code为“input”的输入页面。在这里SmartURLs会回返到先前的 “hello-world-input.jsp”页面中去。以下图4就是验证后的结果:
"图 4: "
如果我们提交的信息通过了验证,那么就会显示图5的结果页面:
"图 5:"
现在你也发现了,我们不需要任何XML配置文件也可以实现正常的工作流程!在这里,仅仅是使用了Annotation @RequiredString Validator,剩下的全是靠CoC来完成的。
明天剩下最后一部分了,关于以及SmartURLs安装部分,总体来说Ted Husted的这篇文章通俗易懂,比较适合初学者。而且让大家也看到了Struts2也可以如此简化,继续..........
BWT: 程序代码还是在附件里,里面可能与文章有一点点不同,里面有一个Readme.txt。
- smartapp.rar (5.1 KB)
- 描述: 这是本小节的实例。可能因为包有点大了,始终传不上来,要用到的包用《【Struts专家Ted Husted系列】Struts2其实也可以CoC风格编程(一)》的附件中的lib即可,它们用的是一样的。
- 下载次数: 64
分享到:
相关推荐
在"【Struts专家Ted Husted系列】Struts2其实也可以CoC风格编程(一)"这篇文章中,作者Ted Husted深入探讨了如何利用Struts2实现Container-Managed Conventions(容器管理的约定)编程风格,也就是CoC风格,它简化了...
在“Struts2其实也可以CoC风格编程”系列中,专家Ted Husted探讨了如何利用Struts2的核心原则——Convention over Configuration(约定优于配置)来简化开发流程。这一系列教程的第三部分,主要是对前两部分理论和...
#### 二、Struts框架的由来和发展 1. **Struts的创建者:** - Struts是由**Gavin King**在2000年创建的。 - **为何开源?** - 开源意味着任何人都可以自由地使用、修改和分发Struts框架,这有助于Struts社区的...
Struts在行动,使用领先的JAVA框架构建Web应用。 Ted Husted Cedric Dumoulin George Franciscus David Winterfeldt(著) Eric Lin(译) 注:本文仅用于个人研究,如有需要请购买正版。
Ted Husted Cedric Dumoulin George Franciscus David Winterfeldt (著) Eric Liu (译) 分为八个章节,详细介绍了MVC和struts的原理。语言浅显直白,适合初学者看。
Struts在行动 使用领先的Java框架构建Web应用 Ted Husted Cedric Dumoulin George Franciscus David Winterfeldt (著) Eric Liu (译)
本书作者Ted Husted,由Eric Liu(铁手)翻译。 **1.1.1 谁创建了Struts?** Struts框架最初由Gavin King在2000年创建。他当时的目标是为了解决在Java Web开发中常见的问题,提供一种标准化的方式来处理用户请求和...
《Struts in Action》这本书由Ted Husted撰写,Eric Liu(铁手)翻译,是一部深入讲解Struts框架的中文版著作。Struts是基于Java的一个领先Web应用框架,它采用了模型-视图-控制器(MVC)设计模式,极大地简化了Web...
### Struts 技术文档知识点总结 #### 一、Struts 框架简介与背景 **1.1 关于本书** - **作者**: Ted Husted...这些内容对于初学者来说是非常宝贵的资源,可以帮助他们快速入门并掌握如何使用Struts进行高效开发。