一 首先在Myeclipse里面建立web project,命名为:myStruts2.
二 将struts2 的包引入。
三 然后配置web.xml,里面配置好filter和map,增加如下
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
四 从struts2自己带着的例子程序里面拷贝struts.xml,放到src包下
五 然后修改index.jsp文件,如下:
<body>
<h2><s:form action="Login">
<s:textfield name="message" lable="你的姓名"/>
<s:submit value="提交"></s:submit>
</s:form></h2>
</body>
并且在jsp文件前方加上<%@taglib prefix="s" uri="/struts-tags" %>,用来引入struts2标签库
六 再写LoginAction类
public class LoginAction extends ActionSupport {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
if(message.equalsIgnoreCase("zhaoxin")) {
return SUCCESS;
}else {
return ERROR;
}
}
}
问题1:这里曾经遇到问题,在重写的execute()方法中if语句中return SUCCESS,其实和返回return "success"是一样的,但是在后边struts.xml中映射action的时候要注意,对于result一定要写成 name=“success”;
七 这里定义了一个action,那么要回去struts2文件中定义action的映射
<package name="default" namespace="/" extends="struts-default">
<!--<default-action-ref name="index" />-->
<action name="Login" class="dianxin.LoginAction">
<result name="success">/helloWorld.jsp
</result>
</action>
</package>
八 重新思考
对于这个工程,运行后,首先是web.xml找到filter是struts2,在index里面把输入的内容通过message得到,点击提交按钮后,在struts.xml里面,根据action对应的class为: dianxin.LoginAction,那么把message交给这个类处理,这个类里面,判断是不是,是的话,返回success字符串,然后到struts.xml里面同一个action里面找对应的result,然后跳转到对应的页面。(最后把项目运行起来后再看这句话,项目下载地址在下面)
九 总结
Struts2 的HelloWorld纠结了好久,今天下午终于解决掉了,以前老是出现404错误,根据我的经验,如果出现了这个404错误,首先就回去找struts.xml中的action映射,首先检查action的name和index.jsp中form表单的action的name是不是相同。然后看action对应的class,最后看result。
一般情况下,为了保证命名空间还有filter之类的不出现错误,能从struts2的例子程序中拷贝就一定要拷贝,不要自己写。
十 自己做的这个实验工程包下载地址:http://download.csdn.net/source/3341784