最近自己在学习struts2的时候遇到了这样一个异常
HTTP Status 404 - There is no Action mapped for namespace [/] and action name [hello] associated with context path [/struts].
翻阅各种博客之后给出了如下几种解决方案:
1,struts.xml文件名错误。一定要注意拼写问题;
2,struts.xml文件放置路径错误。一定要将此文件放置在src目录下。编译成功后,要确认是否编译到classes目录中;
3,struts.xml文件内容错误。
4,web.xml中没有配置<welcome-file-list>,直接访问了项目,
以上这几种情况确实可能会导致出现如题的异常
下面给出正确的配置文件实例
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" 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>struts</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--struts2 框架想要执行,所有的请求都要经过这个前端控制器 ,所以需要配置这个过滤器-->
<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>
struts.xml配置内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- struts2为了管理action的配置,通过包进行管理 -->
<!-- 配置struts2的包 -->
<package name="demo01" extends="struts-default" namespace="/">
<action name="hello" class="com.recodon.action.HelloAction">
</action>
</package>
</struts>
页面代码实例
<%@ 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>struts开始页面</title>
</head>
<body>
<h1>Struts2的入门</h1>
<h3>
<a href="${pageContext.request.contextPath}/hello.action">struts2的入门</a>
</h3>
</body>
</html>
如果像上述这样的配置的没有任何问题的,但是我的问题让我找了半天,其实就是一个很小的问题,下面附上我的问题配置
记录一下自己的排雷之路。希望对struts2新手能够有所帮助。