Struts2的HelloWorld例子程序以及遇到的问题解决

首先在Myeclipse里面建立web project,命名为:myStruts2.

struts2 的包引入。

然后配置web.xml,里面配置好filtermap,增加如下

<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找到filterstruts2,在index里面把输入的内容通过message得到,点击提交按钮后,在struts.xml里面,根据action对应的class为: dianxin.LoginAction,那么把message交给这个类处理,这个类里面,判断是不是,是的话,返回success字符串,然后到struts.xml里面同一个action里面找对应的result,然后跳转到对应的页面。(最后把项目运行起来后再看这句话,项目下载地址在下面)

总结

Struts2 HelloWorld纠结了好久,今天下午终于解决掉了,以前老是出现404错误,根据我的经验,如果出现了这个404错误,首先就回去找struts.xml中的action映射,首先检查actionnameindex.jspform表单的actionname是不是相同。然后看action对应的class,最后看result

一般情况下,为了保证命名空间还有filter之类的不出现错误,能从struts2的例子程序中拷贝就一定要拷贝,不要自己写。

自己做的这个实验工程包下载地址:http://download.csdn.net/source/3341784

你可能感兴趣的:(helloworld)