今天刚开始看struts,碰到了一个这样的问题:
The server encountered an internal error () that prevented it from fulfilling this request.
搜索了网上,各种回答都有,但是没有一个符合我的问题。结果到最后自己找到了问题所在。其实很简单,就是配置错了
struts-config.xml
中的Action的path。
我是按照书上的一个猜数字的示例程序来做的。
需要两个ActionForm和两个Action。分别是:
ActionForm是:
createNumberActionForm
judgeActionForm
Action是:
createNumberAction
judgeAction
然后一个入口文件guess.jsp。guess.jsp中的表单部分的action是这样的:
<html:form method="POST" action="/createNumberAction.do">
</html:form>
结果运行guess.jsp时,就出现了这样的错误:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Cannot retrieve mapping for action /createNumberAction
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.guess_jsp._jspService(org.apache.jsp.guess_jsp:82)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
javax.servlet.jsp.JspException: Cannot retrieve mapping for action /createNumberAction
org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:753)
org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:443)
org.apache.jsp.guess_jsp._jspx_meth_html_form_0(org.apache.jsp.guess_jsp:165)
org.apache.jsp.guess_jsp._jspx_meth_html_html_0(org.apache.jsp.guess_jsp:124)
org.apache.jsp.guess_jsp._jspService(org.apache.jsp.guess_jsp:73)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
这么一堆东西,根本找不到头绪,不过其中有一句还是挺重要的:
Cannot retrieve mapping for action /createNumberAction
很明显没找到/createNumberAction这个Action。
因为只可能从struts-config.xml这个配置文件中找Action,所以肯定是这里有问题,一看,果然没有createNumberAction,我用向导创建了Action之后,在配置文件中使这个样子:
<action
attribute="createNumberActionForm"
name="createNumberActionForm"
path="/createNumber"
type="com.yourcompany.struts.action.CreateNumberAction"
validate="false" />
对,就是path写错了,应该是我们要找的/createNumberAction这个才对,换成/createNumberAction,然后重新上传访问,结果就OK了!
也就是说,配置文件中的action的path必须和前台的使用了struts标签的表单的action的路径对应起来。
分享到:
相关推荐
Struts 1的一个具体问题是使用抽象类编程而不是接口。Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action...
struts中文乱码问题解决详细步骤(两种方法)
经典的struts中文问题,国际化问题终极解决方案
struts文件上传大小限制问题struts文件上传大小限制问题struts文件上传大小限制问题struts文件上传大小限制问题
Struts1的一个普遍问题是使用抽象类编程而不是接口。 ◆Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现 常用的接口。Action...
很适合初学者的struts1学习文档 Struts框架属于哪层技术?主要解决什么问题?
Struts1源码解析,有你看源码的步骤,你只要按照一步一步的来看,救没有问题了,struts就是一个菜
其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为...
struts2.1.6 解决日历问题。区别struts2.0
JSP和Struts解决用户退出问题JSP和Struts解决用户退出问题
针对Struts2.5.2最新版本的配置进行了梳理,通过一步步的步骤和发生的问题点的解决,完成对Struts2.5.2的配置。
第二版删除了第一版中第18章的内容(Struts 2和Struts 1整合部分),全面介绍了Struts 2.1新增的Convention和REST支持。《Struts 2.1权威指南》最后配备的两个常用的实例也都升级为基于Struts 2.1运行,读者可通过这两...
struts2和servlet的共存问题
struts处理中文乱码问题总结struts处理中文乱码问题总结struts处理中文乱码问题总结struts处理中文乱码问题总结
Struts是一个实现MVC模式的框架典范,在Struts框架下通过利用J2EE技术构建Web应用,很好地分离出表示层和业务数据层[1]。Struts框架具有组件构件化、重用性高等优点,它简化了基于MVC的Web应用程序开发。然而,仅仅...
Struts上传,已经处理好乱码问题Struts上传,已经处理好乱码问题
Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.
优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建目录,防止文件因为目录不存在,导致上传失败。 2018-08-24: 增加S2-057 Struts 2.3 to 2.3.34,...
struts的中文乱码问题。。我想这对大多数朋友会有用的
struts详细的源码分析,运行过程,想深入学习struts的小伙伴可以参看