Action是什麽
这个 Action 就是在浏览器地址栏输入指定的URL 之后,将会产生出现一个拥有问候信息”Hello World”的页面。
第一个Action
在 Struts2 里面所有的控制部分都是由 Action 来完成的,虽然可以把这句问候信息直接加到 JSP 页面里面,但是为了展示 Struts2 的魅力,在这里暂且大材小用,用 Action 来完成这个功能。
这段代码要完成的功能很简单:
1. 当浏览器向服务端请求这个 Action 的时候;
2. 服务端启动编译并运行这个 Action;
3. 在这个页面里面设置了一个 message 字段。而这个字段将被后续的页面使用到。
4. 设置完 Action 的 message 字段之后,服务端简单的把请求转向 hello.jsp 页面。
这个 Action 存放的目录是:\ww\src\example 下。
package example;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class helloworld extends ActionSupport {
public String message;
public String execute() {
message = "hello world!\n";
return SUCCESS;
}
public String getMessage() {
return message;
}
}
在这个 Action 中,有一个成员变量 message,并且定义了 getter 方法,这是一种 JavaBean模式,通过这种模式 Action 中的成员可以从页面获取,在 execute()函数中只是简单为message 赋值,最后返回一个成功的字符串,作为整个 Action 的返回类型,通过返回类型就可以在 struts.xml 文件找到对应的返回页面。execute 方法是任何一个 Action 都必须实现的方法,也是 Action 中核心的操作。
struts.xml 中配置 Action
在有了这段代码之后,为了使用Struts2提供的基础框架,必须向Struts2注册这个Action。于是在struts.xml中添加action子元素。对应的配置代码如下所示:
<action name="helloworld" class="example.helloworld">
<result name="success">hello.jsp</result>
</action>
作用是:
这段 XML 告知 Struts2 基础框架,将要使用一个名为 helloworld 的 Action,这个 Action对应的类的位置为 example.helloworld.java。它有一个名为 success 的结果页面 hello.jsp 与之对应。
创建视图 hello.jsp
下面要写一个显示页面来输出 hello world!的字样,也就是上面 Action 中定义的 message中的内容.hello.jsp 存放的目录是:\WebRoot。
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Hello Page</title>
</head>
<body>
The message generated by my first action is :
<s:property value="message" />
</body>
</html>
第一句代码是表明前缀 s 和 Struts2 标签路径 URI 之间建立映射关系,这个 URI 就是前面提到的,Struts 为我们默认定义的。
前缀 s 就是表明所有用到 Struts2 标签的地方就要加上前缀 s。在这个页面上就是使用了一个 property 标签,这个标签包含了一个 value 属性值,通过设置 values 的值,标签就可以从 Action 中获得相应表达式的内容,也就是通过上面Action 中定义的 getMessage()函数来完成的。