我是struts 2中的新手,当运行hello示例时,我得到了这个错误HTTP状态404 -没有为名称空间/和动作名Login映射的Action。我把jsp页面放在wepapp/pages文件夹中,如何解决这个问题?
@ResultPath(value="/")
public class HelloController extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Action(value="/Login",results={@Result(name="success",location="pages/login.jsp")})
public String execute()throws Exception
{
return "success";
}
}web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>而这个pom文件
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.1.8</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
</dependencies>发布于 2014-04-07 12:07:39
我解决了这个问题,我必须在打包的命名动作中添加HelloController类,因为struts 2扫描位于打包的名为“struts,struts2,action或action”的带注释的类。
发布于 2014-04-06 12:43:56
您应该在url中调用动作名:
http://localhost:<your-port>/Login.action还将操作名更改为:
@Action(value="Login" ....发布于 2014-04-07 09:15:26
您的筛选器被废弃为。从Struts2.1.3向上,你需要改变从FilterDispatcher到StrutsPrepareAndExecuteFilter。
最好至少迁移到2.3.16,以避免多年来发现和修补的安全问题。
2.1太老了..。
https://stackoverflow.com/questions/22894137
复制相似问题