版权声明:转载请注明出处,谢谢 https://blog.csdn.net/roccreed/article/details/17956943
最近在看李刚的Struts2.1权威指南,按照书上内容,自己写了一个HelloWorld,但是发现总是出现No result defined for action and result error这个问题,使用网上介绍的各种方法都没有解决这个问题,后来我自己手动添加了struts2.3的jar包(原来用的是myeclipse添加的struts2.1)。问题得到了解决,但是tomcat会出现如下警告
下面给出HelloWorld的新建过程,以及以上问题的解决方法。
1.首先新建一个Web工程。
2.下载struts,并将以下包放到工程的lib文件夹下面,并引入工程
1)xwork-core-xxx
2)struts2-core-xxx
3)ognl-2.x.x
4)freemarker-2.x.xx
5)commons-io-1.x.x
6)commons-fileupload-1.x.x
3.在编辑WEB-INF下编辑web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<!-- 定义Struts2 的核心控制器:2.3版本用这个控制器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- filter用来初始化Struts2并且处理所有的HTTP请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
上文红色部分为struts2.3的核心控制器,这和2.1版本是不同的,改写成这个后就不会出现上文的WARNING了。
4.在源文件目录下新建一个struts.xml
并编辑
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<package name="fang" extends="struts-default">
<action name="login" class="com.fang.login.action.LoginAction">
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
5.编写LoginAction.java
package com.fang.login.action;
import com.opensymphony.xwork2.Action;
public class LoginAction implements Action{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//处理用户请求的execute方法
public String execute() throws Exception
{
if(getUsername().equals("fangjava")&&getPassword().equals("fang"))
{
return SUCCESS;
}
else
{
return ERROR;
}
}
}
6.编写相应的jsp文件。
小结:在struts2.1下面出现No result defined for action and result error问题的原因仍然没有找到,自己也没有跟代码跟到框架里,所以分析不出原因。