【第3步】 编写ActionForm类 内容来自dedecms
在本例中当然需要使用ActionForm了。在Struts1.x中,必须要单独建立一个ActionForm类(或是定义一个动作Form),而在Struts2中ActionForm和Action已经二合一了。从第二步的代码可以看出,后面的部分就是应该写在ActionForm类中的内容。所以在第2步,本例的ActionForm类已经编写完成(就是Action类的后半部分)。 dedecms.com
【第4步】 配置Action类 织梦好,好织梦
这一步struts1.x和struts2.x都是必须的,只是在struts1.x中的配置文件一般叫struts-config.xml(当然也可以是其他的文件名),而且一般放到WEB-INF目录中。而在struts2.x中的配置文件一般为struts.xml,放到WEB-INF"classes目录中。下面是在struts.xml中配置动作类的代码:
< ?xml version="1.0" encoding="UTF-8" ?> < !DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> < struts> < package name="struts2" namespace="/mystruts" dedecms.com extends="struts-default"> < action name="sum" class="action.FirstAction"> < result name="positive">/positive.jsp< /result> < result name="negative">/negative.jsp< /result> < /action> < /package> < /struts> |
在< struts>标签中可以有多个< package>,第一个< package>可以指定一个Servlet访问路径(不包括动作名),如“/mystruts”。extends属性继承一个默认的配置文件“struts-default”,一般都继承于它,大家可以先不去管它。< action>标签中的name属性表示动作名,class表示动作类名。 dedecms.com
< result>标签的name实际上就是execute方法返回的字符串,如果返回的是“positive”,就跳转到positive.jsp页面,如果是“negative”,就跳转到negative.jsp页面。在< struts>中可以有多个< package>,在< package>中可以有多个< action>。我们可以用如下的URL来访问这个动作: 织梦内容管理系统
http://localhost:8080/struts2/mystruts/sum.action 内容来自dedecms
注:Struts1.x的动作一般都以.do结尾,而Struts2是以.action结尾。
内容来自dedecms
【第5步】 编写用户录入接口(JSP页面)
copyright dedecms
1. 主界面(sum.jsp) 内容来自dedecms
在Web根目录建立一个sum.jsp,代码如下:
< %@ page language="java" import="java.util.*" pageEncoding="GBK" %> < %@ taglib prefix="s" uri="/struts-tags"%> < html> < head> < title>输入操作数< /title> < /head> copyright dedecms < body> 求代数和 < br/> < s:form action="mystruts/sum.action" > < s:textfield name="operand1" label=" 操作数1"/> < s:textfield name="operand2" label=" 操作数2" /> 内容来自dedecms < s:submit value="代数和" /> < /s:form> < /body> < /html> |
在sum.jsp中使用了Struts2带的tag。在Struts2中已经将Struts1.x的好几个标签库都统一了,在Struts2中只有一个标签库/struts-tags。这里面包含了所有的Struts2标签。但使用Struts2的标签大家要注意一下。在< s:form>中最好都使用Struts2标签,尽量不要用HTML或普通文本,大家可以将sum.jsp的代码改为如下的形式,看看会出现什么效果: 织梦好,好织梦
... ...
求代数和
< br/>
copyright dedecms
< s:form action="mystruts/sum.action" >
本文来自织梦
操作数1:< s:textfield name="operand1" />< br/> 内容来自dedecms
操作数2:< s:textfield name="operand1" />< br/> 本文来自织梦
< s:submit value="代数和" />
< /s:form>
织梦内容管理系统
... ... 织梦内容管理系统
提示一下,在< s:form>中Struts2使用< table>定位。
本文来自织梦
2. positive.jsp
< %@ page language="java" import="java.util.*" pageEncoding="GBK"%> < %@ taglib prefix="s" uri="/struts-tags" %> < html> < head> < title>显示代数和< /title> < /head> dedecms.com < body> 代数和为非负整数< h1>< s:property value="sum" />< /h1> < /body> < /html> |
3. negative.jsp
copyright dedecms
< %@ page language="java" import="java.util.*" pageEncoding="GBK"%> < %@ taglib prefix="s" uri="/struts-tags" %> < html> < head> < title>显示代数和< /title> < /head> 织梦好,好织梦 < body> 代数和为负整数< h1>< s:property value="sum" />< /h1> < /body> < /html> |
这两个jsp页面的实现代码基本一样,只使用了一个< s:property>标签来显示Action类中的sum属性值。< s:property>标签是从request对象中获得了一个对象中得到的sum属性,如我们可以使用如下的代码来代替< s:property value=”sum”/>:
< % com.opensymphony.xwork2.util.OgnlValueStack ovs = (com.opensymphony.xwork2.util.OgnlValueStack)request.getAttribute("struts.valueStack"); out.println(ovs.findString("sum")); %> |
启动Tomcat后,在IE中输入如下的URL来测试这个例子:
copyright dedecms
http://localhost:8080/struts2/sum.jsp
dedecms.com
复制地址和好友共享








