Tomcat7+struts2出现There is no Action mapped for action name welcome.

55wish 发布于 2013/05/29 22:31
阅读 2K+
收藏 0
这是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>
	<package name="helloWorld" extends="struts-default" namespace="day01">
		<action name="welcome" class="test.WelcomeAction">
			<result name="success">/WEB-INF/welcome.jsp</result>
			<result name="fail">/WEB-INF/nameForm.jsp</result>
		</action>
	</package>
</struts>

---------------------------------------------------------------------------------
这是web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Cat</display-name>
  <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>
</web-app>
--------------------------------------------------------------------------------------
这是WelcomeAction.java文件
package test;

public class WelcomeAction{
	private String name;
	
	public String showYourName(){
		System.out.print("Your Name is : ");
		System.out.println(name);
		
		if("monster".equalsIgnoreCase(name)){
			return "fail";
		}
		return "success";
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
--------------------------------------------------------------------
以下是2个jps页面
--------------------nameForm.jsp---------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="/test/day01/welcome.action" method="post">
		<input type="text" name="name">
		<input type="submit" value="SUBMIT">
	</form>
</body>
</html>

--------------------------------------------------------------------------
----------welcome.jsp---------------------
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>Welcome, ${name}</h2>
</body>
</html>
目录结构如下:
WEB-INF目录下有classes目录,不知道为什么在视图里面没出现,我在工作区里面可以找到classes目录,里面还有struts.xml文件




加载中
0
王瑞平
王瑞平
namespace?查查
王瑞平
王瑞平
@55wish 算是为了简化操作,本身更麻烦
55wish
55wish
回复 @王瑞平 : 感觉struts很乱啊,不知道为什么设计这么一个框架,还这么多隐含的默认操作,。。。
王瑞平
王瑞平
@55wish 应该是这个问题
55wish
55wish
我后来直接把namespace删掉不用了,把编译后的.class文件和struts.xml手动复制到WEB-INF里面的classes目录里面运行ok
0
55wish
55wish

再发张截图

0
DanielTo
DanielTo
  起码搞个构造函数吧,起码有execute方法吧
0
55wish
55wish

我把shoowYourName()改称execute()试试,又变成404了。。。。

0
DanielTo
DanielTo

引用来自“55wish”的答案

我把shoowYourName()改称execute()试试,又变成404了。。。。

继续截图
0
zsroven
zsroven
public class WelcomeAction implements Action{};
55wish
55wish
回复 @zsroven : 我后来没导包,试了试,貌似不需要导包了,我用的struts2+tomcat7
zsroven
zsroven
@55wish struts的包啊,eclipse导入的是xwork-core-xxx.jar
55wish
55wish
这个接口在哪个包啊,我之前试过ActionSupport但是老是报编译错误,也找不到包
0
asdasdasad
asdasdasad
<action  name="welcome"  class="test.WelcomeAction" /*这里添加一个method=" showYourName()"试试*/>
55wish
55wish
ok
0
Beyond-Bit
Beyond-Bit

1,你的action么有继承ActionSupport 哪里来execute ?

2,<result name="success">/WEB-INF/welcome.jsp</result> 这个是不被访问的!受保护的!

55wish
55wish
要添加一个连接进去的是吧
0
王瑞平
王瑞平
struts2配置文件释放src下的
55wish
55wish
我用的eclipse没用myeclipse,感觉有点不太一样
返回顶部
顶部