刚开始学习struts看后面的的报错好像是说明有对应的actiongmapping不过 server-config貌似没有什么问题啊。后面是关联代码。麻烦大家了。谢谢!server-config:<form-beans >
<form-bean name="queryForm" type="com.DadaQuery.struts.form.QueryForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="QueryForm"
input="/query.jsp"
name="QueryForm"
path="/query"
scope="request"
type="com.DadaQuery.struts.action.QueryAction" /> </action-mappings>query.jsp:<%@ page language="java" pageEncoding="GB18030"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<head>
<title>数据查询</title>
</head>
<body>
<html:form action="/query" method="post">
请输入产品ID : <html:text property="productID"/><html:submit>查询</html:submit><br>
</html:form>
<hr>
<logic:present name="product">
<bean:message key="product.name"/><bean:write name="product" property="productName"/><br>
<bean:message key="product.price"/><bean:write name="product" property="productPrice"/>
</logic:present>
<logic:notPresent name="product">
<logic:notPresent name="productID">
<bean:message key="product.input"/>
</logic:notPresent>
<logic:present name="productID">
<bean:message key="product.error"/>
</logic:present>
</logic:notPresent>
</body>
</html>
报错信息:
org.apache.jasper.JasperException: An exception occurred processing JSP page /query.jsp at line 118: <title>数据查询</title>
9: </head>
10: <body>
11: <html:form action="/query" method="post">
12: 请输入产品ID : <html:text property="productID"/><html:submit>查询</html:submit><br>
13: </html:form>
14: <hr>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.query_jsp._jspService(query_jsp.java:114)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:798)
org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:506)
org.apache.jsp.query_jsp._jspx_meth_html_005fform_005f0(query_jsp.java:133)
org.apache.jsp.query_jsp._jspService(query_jsp.java:93)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
<form-bean name="queryForm" type="com.DadaQuery.struts.form.QueryForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="QueryForm"
input="/query.jsp"
name="QueryForm"
path="/query"
scope="request"
type="com.DadaQuery.struts.action.QueryAction" /> </action-mappings>query.jsp:<%@ page language="java" pageEncoding="GB18030"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<head>
<title>数据查询</title>
</head>
<body>
<html:form action="/query" method="post">
请输入产品ID : <html:text property="productID"/><html:submit>查询</html:submit><br>
</html:form>
<hr>
<logic:present name="product">
<bean:message key="product.name"/><bean:write name="product" property="productName"/><br>
<bean:message key="product.price"/><bean:write name="product" property="productPrice"/>
</logic:present>
<logic:notPresent name="product">
<logic:notPresent name="productID">
<bean:message key="product.input"/>
</logic:notPresent>
<logic:present name="productID">
<bean:message key="product.error"/>
</logic:present>
</logic:notPresent>
</body>
</html>
报错信息:
org.apache.jasper.JasperException: An exception occurred processing JSP page /query.jsp at line 118: <title>数据查询</title>
9: </head>
10: <body>
11: <html:form action="/query" method="post">
12: 请输入产品ID : <html:text property="productID"/><html:submit>查询</html:submit><br>
13: </html:form>
14: <hr>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.query_jsp._jspService(query_jsp.java:114)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:798)
org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:506)
org.apache.jsp.query_jsp._jspx_meth_html_005fform_005f0(query_jsp.java:133)
org.apache.jsp.query_jsp._jspService(query_jsp.java:93)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
去掉/<html:form action="query" method="post">
这样就可以了,试试
这里错误了。把代码中的html:全去了,有可能是你的版本太低。
web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>0</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>0</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>
<form-bean name="queryForm" type="com.DadaQuery.struts.form.QueryForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="QueryForm"
input="/query.jsp"
name="QueryForm"
path="/query"
scope="request"
type="com.DadaQuery.struts.action.QueryAction" /> </action-mappings>
2处红色的地方,大小写不一致。
必须配置formBean!
试试
<action name="QueryForm">这两个里面的name的大小写不一致,
使用struts标签提交表单时,action="query"就可以了,不需要在后面加.do,默认在路径后面会加.do
root cause javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection异常 javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login (/Login是你的action名字)
可能原因:action没有再struts-config.xml 中定义,或没有找到匹配的action,例如在JSP文件中使用 处理:如果出现上述异常,请查看struts-config.xml中的定义部分,有时可能是打错了字符或者是某些不符合规则,可以使用struts console工具来检查。
你的logic标签里面给的是个集合对象吗
要是不是那就有错
修改一些就可以了
<form-bean name="queryForm" type="com.DadaQuery.struts.form.QueryForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="QueryForm"
input="/query.jsp"
name="QueryForm"
path="/query"
scope="request"
type="com.DadaQuery.struts.action.QueryAction" />
</action-mappings>
<html:form action="/query" method="post"> formbean大小写要一致,另外页面上要有正确的后缀(这里要根据web.xml配置而定)如果是*.do,那么
就应该是/query.do