404 There is no Action mapped for namespace / and action name

bdecho 2011-05-29 11:07:54
Struts/Hibernate框架,是一个管理员登陆验证然后实现对数据库进行增删改查功能,服务器正常启动,但是在更新内容的时候,总是404报警,我也曾经百度过,也根据内容修改了,但是依旧404报警。
点击更新按钮,数据库的内容是修改了,http://localhost:8080/Kaoshi/Update.action但是会出现There is no Action mapped for namespace / and action name

下面是struts.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<package name="Kaoshi" extends="struts-default">

<action name="login" class="action.LoginAction">
<result name="success">/insert.jsp</result>
<result name="error">/error.jsp</result>
</action>

<action name="Save" class="action.DicAction" method="save">
<result name="success" type="redirect">/List.action</result>
<result name="error">/error.jsp</result>
</action>

<action name="List" class="action.DicAction" method="list">
<result name="success">/list.jsp</result>
<result name="error">/error.jsp</result>
</action>

<action name="Edit" class="action.DicAction" method="edit">
<result name="success">/insert.jsp</result>
<result name="error">/error.jsp</result>
</action>

<action name="Update" class="action.DicAction" method="update">
<result name="success" type="chain">/List.action</result>
<result name="error">/error.jsp</result>
</action>

<action name="Delete" class="action.DicAction" method="delete">
<result name="success" type="redirect">/List.action</result>
<result name="error">/error.jsp</result>
</action>

</package>
</struts>

下面是web.xml文件

下面是插入和修改界面,根据id是不是为空选择不同。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>

<SCRIPT type="text/javascript">
function doupdate(){
document.forms[0].action = "Update.action";

document.forms[0].submit();
}
</SCRIPT>
</head>

<body>
<h2>登陆成功!</h2> <br>
<s:form action="Save.action" method="post">

<table>
<tr>
<td><s:textfield name="dic.id" label="编号"></s:textfield></td>
<td><s:textfield name="dic.zhongwen" label="中文"></s:textfield></td>
<td><s:textfield name="dic.yingwen" label="英文"></s:textfield></td>

<td>词性:
<select size=1 name="dic.cixing">
<option value="动词">
动词
</option>
<option value="副词">
副词
</option>
<option value="名词">
名词
</option>
<option value="介词">
介词
</option>
<option value="形容词">
形容词
</option>
</select></td>
<td> <s:textfield name="dic.liju" label="例句"></s:textfield></td>
</tr>
<tr>

<s:if test="%{dic.id!=null}">
<td colspan="4"><s:submit value="更 新" onclick="doupdate();"></s:submit> </td>
</s:if>
<s:else>
<td colspan="4"><s:submit value="提 交"></s:submit> </td>
</s:else>

</tr>

</table>

</s:form>
</body>
</html>

下面是DicAction的内容

package action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import vo.Dic;

import dao.DicDAO;
import dao.DicDAOImpl;

public class DicAction extends ActionSupport {

private Dic dic;

private List<Dic> list;
DicDAO dicDAO = new DicDAOImpl();

public List<Dic> getList() {
return list;
}

public void setList(List<Dic> list) {
this.list = list;
}

public Dic getDic() {
return dic;
}

public void setDic(Dic dic) {
this.dic = dic;
}

public String save() throws Exception {
dicDAO.save(dic);
System.out.println("插入成功 ");
return SUCCESS;
}

@SuppressWarnings("unchecked")
public String list() throws Exception {
try {
System.out.println("查询 ");
list = dicDAO.findAll();
System.out.println("插入成功 ");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}

public String edit() {
try {
HttpServletRequest request = ServletActionContext.getRequest();
String id = request.getParameter("id");
dic = dicDAO.findById(id);
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}

public String update() {
try {
dicDAO.update(dic);
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}

public String delete() {
try {
HttpServletRequest request = ServletActionContext.getRequest();
String id = request.getParameter("id");
dicDAO.delete(id);
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}

}
小妹新入门,请高手指教。拜托!
...全文
252 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
a107494639 2011-05-29
  • 打赏
  • 举报
回复
你可以在struts.xml里的那个action配置上一个input对应的页面,然后看是不是跳转到你配置的页面。
bdecho 2011-05-29
  • 打赏
  • 举报
回复
增加一条记录和删除一条记录都没问题,就是修改记录出问题……
a107494639 2011-05-29
  • 打赏
  • 举报
回复
可能是你的FormBean填充错误了,如果填充错误,就会找配置文件里的input对应的页面,如果你没有配置,就会报404错误。你检查一下是不是页面Form里的要条件的name有些错的地方,导致填充错误,这样action都进不去,就直接找你配置input对应的页面了。
bdecho 2011-05-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xdrs1314 的回复:]
楼主你部署的项目名叫Kaoshi?并且在web.xml中配置struts请求的后缀是.action吗?
[/Quote]

是的,我的项目名称是Kaoshi,因为这是考试题目。
下面是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>index.jsp</welcome-file>
</welcome-file-list>

<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>

</web-app>
xdrs1314 2011-05-29
  • 打赏
  • 举报
回复
404路径问题,要么是你写的路径错误了,要么你没有配置该路径.
xdrs1314 2011-05-29
  • 打赏
  • 举报
回复
楼主你部署的项目名叫Kaoshi?并且在web.xml中配置struts请求的后缀是.action吗?
bdecho 2011-05-29
  • 打赏
  • 举报
回复
谢谢!非常谢谢!
最后结果是这样的:
<action name="Update" class="action.DicAction" method="update">
<result name="success" type="redirect">/List.action</result>
<result name="error">/error.jsp</result>

</action>

<action name="List" class="action.DicAction" method="list">
<result name="success">/list.jsp</result>
<result name="error">/error.jsp</result>
</action>
结果没有报错,谢谢!
a107494639 2011-05-29
  • 打赏
  • 举报
回复
试试这么修改哦:
<result name="success" type="redirect">List.action</result>
a107494639 2011-05-29
  • 打赏
  • 举报
回复
再提两个问题
1.点update,进后台的update方法了吗?
2.你配置的这个<action name="Update" class="action.DicAction" method="update">
<result name="success" type="chain">/List.action</result>
<result name="error">/error.jsp</result>
</action>
中的 type="chain"是什么意思呀?
bdecho 2011-05-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 a107494639 的回复:]
引用 7 楼 bdecho 的回复:
引用 6 楼 a107494639 的回复:
你可以在struts.xml里的那个action配置上一个input对应的页面,然后看是不是跳转到你配置的页面。

嗯,我在Update的action配置的是list.jsp,结果在浏览器的地址出现的是:
http://localhost:8080/Kaoshi/Update.action

<act……
[/Quote]

不成,点击更新按钮后,浏览器显示的是:http://localhost:8080/Kaoshi/Update.action
404 There is no Action mapped for namespace / and action name /list.jsp.
/Kaoshi/Update.action was not found on this server.
a107494639 2011-05-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bdecho 的回复:]
引用 6 楼 a107494639 的回复:
你可以在struts.xml里的那个action配置上一个input对应的页面,然后看是不是跳转到你配置的页面。

嗯,我在Update的action配置的是list.jsp,结果在浏览器的地址出现的是:
http://localhost:8080/Kaoshi/Update.action

<action name="Update" cl……
[/Quote]

你这么配置看看:
<action name="Update" class="action.DicAction" method="update">
<result name="success" type="chain">/list.jsp</result>
<result name="error">/error.jsp</result>
<result name="input">/error.jsp</result>
</action>
看还报错么
bdecho 2011-05-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 a107494639 的回复:]
你可以在struts.xml里的那个action配置上一个input对应的页面,然后看是不是跳转到你配置的页面。
[/Quote]
嗯,我在Update的action配置的是list.jsp,结果在浏览器的地址出现的是:
http://localhost:8080/Kaoshi/Update.action

<action name="Update" class="action.DicAction" method="update">
<result name="success" type="chain">/list.jsp</result>
<result name="error">/error.jsp</result>
</action>

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧