`
qdujunjie
  • 浏览: 110531 次
  • 性别: Icon_minigender_1
  • 来自: Mars
社区版块
存档分类
最新评论

struts问题1

阅读更多

 

今天刚开始看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的路径对应起来。

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    Struts2与Struts1区别

    相比之下,Struts2 为每个请求创建一个新的 Action 实例,避免了线程安全问题。 3. **对 Servlet API 的依赖**: - Struts1 的 Action 直接依赖于 Servlet API,请求和响应对象会传入 execute 方法。而 Struts2 ...

    struts1&struts2

    - **Struts2** 为每个请求创建新的Action实例,解决了线程安全问题,同时也更易于管理和测试。 5. **Servlet依赖** - **Struts1.x** 的Action类直接依赖于Servlet API,这使得测试变得更加困难。 - **Struts2** ...

    struts1和struts2区别

    - **Struts2**:Action对象为每个请求创建一个新的实例,消除了线程安全问题,提高了性能。 3. **Servlet依赖**: - **Struts1**:Action直接依赖于Servlet API,需要HttpServletRequest和HttpServletResponse...

    Migrating From Struts1 To Struts2

    - **社区支持**:尽管WebWork/Struts2社区相比Struts1小,但依然活跃并持续贡献新功能和修复问题。 #### 从Struts1到Struts2的迁移步骤 1. **评估现有系统**:首先,对现有的Struts1项目进行全面评估,了解当前系统...

    struts2 与 struts1的区别

    ### Struts2 与 Struts1 的核心区别 #### 一、架构设计及Action实现方式 **Struts1** 在架构上要求Action类必须继承一个特定的抽象基类,这限制了开发者的灵活性,同时也意味着所有的Action都需要遵循相同的生命...

    struts1和struts2的区别(详细)

    ### Struts1与Struts2的主要区别 #### 一、Action执行机制的不同 - **Struts1**: 在Struts1框架中,Action是基于单例模式的,这意味着所有的请求都会共享同一个Action实例。这就导致了如果在Action中保存实例变量...

    Struts1和Struts2的区别和对比

    相比之下,Struts2为每个请求创建新的Action实例,消除了线程安全问题,也简化了开发流程。 在Servlet依赖上,Struts1的Action直接依赖于Servlet API,这意味着Action的execute方法接收HttpServletRequest和...

    struts1和struts2的区别

    相比之下,Struts2的Action为每个请求创建一个新的实例,消除了线程安全问题,简化了资源管理。 在Servlet依赖性上,Struts1的Action直接依赖于Servlet API,执行方法接收HttpServletRequest和HttpServletResponse...

    转:struts1与struts2的区别

    为了解决这一问题,社区开发了第三方工具如Struts TestCase,它提供了一套用于模拟Struts1环境的组件。 - **Struts2**: 在Struts2中,可以通过初始化、设置属性和调用方法等方式轻松地测试Action。依赖注入的支持...

    Struts1与Struts2本质区别

    - **Struts 2**:每个请求都会创建一个新的Action实例,消除了线程安全问题,同时也减少了开发者在处理并发请求时需要考虑的问题。 #### 3. Servlet依赖方面的对比 - **Struts 1**:Action的方法签名中包含了`...

    struts中文乱码问题解决详细步骤

    解决这个问题通常涉及到编码设置的调整,下面将详细介绍两种方法来解决Struts中的中文乱码问题。 **方法一:配置Filter** 1. **添加过滤器**:首先,我们需要在Web应用的`web.xml`文件中添加一个`...

    struts1教程.doc

    Struts 1.x 是一款基于模型-视图-控制器(MVC)设计模式的Java Web框架,它在早期的Web应用程序开发中占据了重要的地位。本教程主要针对初学者,旨在引导学习者掌握Struts 1.x的基础知识和使用方法。 在开始学习...

    Struts2和Struts1的区别,详细点,主要说说Struts2

    - **Struts1**中的Action对象在整个请求周期内是单例模式的,这意味着所有请求都会共用同一个Action实例,这可能会导致线程安全问题。 - 相比之下,**Struts2**为每个请求创建一个新的Action实例,这不仅提高了安全...

    Struts In Action 电子书 Struts1电子书

    - **社区支持**:作为Apache项目的一部分,Struts拥有庞大的开发者社区支持,能够及时解决开发者在实际应用过程中遇到的问题。 #### Struts架构详解 - **MVC设计模式**:Struts框架的核心是基于MVC设计模式,其中...

    struts1_详解

    Struts1可以集成C3P0等连接池,但文档中提到的问题“数据库连接池缺DBCP三个包”指的是缺少Apache DBCP连接池的相关包,需要添加至项目中才能正常使用。 **5.2 多模块操作** - **多模块**:在一个项目中可以有多个...

    Struts 1和Struts2 Jar包集合 你懂的

    - **概述**:Struts 1是最早的版本,于2000年发布,它是基于Servlet和JSP技术的,旨在解决JSP中控制逻辑分散的问题,将业务逻辑、数据访问和表示层分离。 - **核心组件**:ActionForm处理用户请求,Action转发请求...

    struts1学习文档

    ### Struts1学习文档知识点梳理 #### 一、Struts框架定位及作用 **Struts框架定位:** Struts框架是Java Web开发中一个非常重要的框架,它属于表现层技术,主要用于构建MVC(Model-View-Controller)架构模式的...

    struts1初级教程

    ### Struts1初级教程知识点详解 #### 一、Struts1.x基础知识介绍 **Struts1.x** 是一款用于构建企业级Java Web应用程序的开源框架,由Apache软件基金会维护。它基于MVC(Model-View-Controller)设计模式,简化了...

    struts1.x apps 所有最新的Struts1.x项目应用

    然而,尽管Struts1.x在当时具有广泛的应用,但它也有一些限制和已知的安全问题,比如著名的XSS和CSRF漏洞。随着技术的发展,Struts2作为其后继者,引入了更多的功能和改进,例如更强大的表达式语言和拦截器机制。 ...

Global site tag (gtag.js) - Google Analytics