在用STRUTS1做一个简单的表单提交的时候遇到一个问题,报错
javax.servlet.ServletException: org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url,根据报错信息,应该是ACTION的路径不正确,可是我看了代码就是一直 没找到错误的地方,我的代码如下:
JSP:
<%@ page language="java" pageEncoding="utf-8"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>toAdd.jsp</title><meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function my_submit(){
document.userForm.action = "user.do?action=addUser";
document.userForm.submit();
}
</script>
</head>
<body>
<html:form action="user.do" method="post" >
<table border="0">
<tr>
<td>姓名</td>
<td><html:text property="usersName" /></td>
</tr>
<tr>
<td>年龄:</td>
<td><html:text property="age" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" value="submit" onclick="my_submit();"/></td>
</tr>
</table>
</html:form>
</body>
</html:html>JAVA代码如下
package com.yourcompany.struts;import java.io.IOException;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Session;
import org.hibernate.Transaction;import com.yourcompany.database.HibernateSessionFactory;
import com.yourcompany.dao.UsersDAOImpl;public class UserAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
String action = request.getParameter("action");
if("queryUser".equals(action)){
queryUser(request, response);
}else if("deleteUsers".equals(action)){
deleteUsers(request, response);
}else if("addUser".equals(action)){
addUser(form,request);
}
return mapping.findForward(action);
}private void addUser(ActionForm form, HttpServletRequest request) {
// TODO Auto-generated method stub}private void deleteUsers(HttpServletRequest request,
HttpServletResponse response) {
// TODO Auto-generated method stub
Session session = HibernateSessionFactory.getSession();
Transaction tran = session.beginTransaction();
session.createSQLQuery("delete from users where users_id = " + request.getParameter("users_id")).executeUpdate();
tran.commit();
try {
response.getWriter().print("success");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}private void queryUser(HttpServletRequest request, HttpServletResponse response) throws IOException {
// TODO Auto-generated method stub
UsersDAOImpl dao = new UsersDAOImpl();
Session session = HibernateSessionFactory.getSession();
dao.queryUser(session, request, response);
}}STRUTS.CFG.XML如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>
<form-beans>
<form-bean name="userForm" type="com.yourcompany.struts.UserForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/user"
scope="request"
name="userForm"
type="com.yourcompany.struts.UserAction">
<forward name="toAdd" path="/jsp/toAdd.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>问题是不是出在JSP的提交代码中,请问,那里应该如何处理
有正确答案一定给分
javax.servlet.ServletException: org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url,根据报错信息,应该是ACTION的路径不正确,可是我看了代码就是一直 没找到错误的地方,我的代码如下:
JSP:
<%@ page language="java" pageEncoding="utf-8"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>toAdd.jsp</title><meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function my_submit(){
document.userForm.action = "user.do?action=addUser";
document.userForm.submit();
}
</script>
</head>
<body>
<html:form action="user.do" method="post" >
<table border="0">
<tr>
<td>姓名</td>
<td><html:text property="usersName" /></td>
</tr>
<tr>
<td>年龄:</td>
<td><html:text property="age" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" value="submit" onclick="my_submit();"/></td>
</tr>
</table>
</html:form>
</body>
</html:html>JAVA代码如下
package com.yourcompany.struts;import java.io.IOException;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Session;
import org.hibernate.Transaction;import com.yourcompany.database.HibernateSessionFactory;
import com.yourcompany.dao.UsersDAOImpl;public class UserAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
String action = request.getParameter("action");
if("queryUser".equals(action)){
queryUser(request, response);
}else if("deleteUsers".equals(action)){
deleteUsers(request, response);
}else if("addUser".equals(action)){
addUser(form,request);
}
return mapping.findForward(action);
}private void addUser(ActionForm form, HttpServletRequest request) {
// TODO Auto-generated method stub}private void deleteUsers(HttpServletRequest request,
HttpServletResponse response) {
// TODO Auto-generated method stub
Session session = HibernateSessionFactory.getSession();
Transaction tran = session.beginTransaction();
session.createSQLQuery("delete from users where users_id = " + request.getParameter("users_id")).executeUpdate();
tran.commit();
try {
response.getWriter().print("success");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}private void queryUser(HttpServletRequest request, HttpServletResponse response) throws IOException {
// TODO Auto-generated method stub
UsersDAOImpl dao = new UsersDAOImpl();
Session session = HibernateSessionFactory.getSession();
dao.queryUser(session, request, response);
}}STRUTS.CFG.XML如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>
<form-beans>
<form-bean name="userForm" type="com.yourcompany.struts.UserForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/user"
scope="request"
name="userForm"
type="com.yourcompany.struts.UserAction">
<forward name="toAdd" path="/jsp/toAdd.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>问题是不是出在JSP的提交代码中,请问,那里应该如何处理
有正确答案一定给分
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
function my_submit(){
document.userForm.action = "/user.do?action=addUser";
document.userForm.submit();
}
</script>红色那里加个斜杠试试。