Struts 2 action class not working
我使用struts2开发web应用程序。
我已经包含了struts2所需的jar,但是当它打算调用struts动作类时,它会抛出404错误。
在控制台上没有错误,浏览器没有显示.action扩展,它显示了struts.xml调用操作类时的情况。
我正在使用jdk 1.6
和struts 2.0
。
我是否缺少任何负责这一切的jar。
Struts 2 action class not working
在JSP中,我只是从<s:form action = "Mergexmlaction" method = "post"/>
调用函数下面是我在struts.xml和web.xml
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>
<constant name="struts.multipart.maxSize" value="6000000000" />
<package name="default" namespace="/jsp" extends="struts-default">
<action name="Mergexmlaction" class="com.hm.merge.mergeaction.Mergexmlaction">
<result name="success" >/jsp/Result.jsp</result>
<result name="error" >/jsp/Browse_multiplexmlfiles.jsp</result>
<interceptor-ref name="fileUpload">
<param name="maximumSize">600000000</param>
</interceptor-ref>
</action>
</package>
</struts>
网络。 xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="xml_file_merging" 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">
<display-name>xml_file_merging</display-name>
<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>
<welcome-file-list>
<welcome-file>jsp/Browse_multiplexmlfiles.jsp</welcome-file>
</welcome-file-list>
</web-app>
有几个问题。
<package name="default" namespace="/jsp" extends="struts-default">
1)我建议对有 “JSP” 的命名空间,它没有任何意义。命名空间对于应用程序和/或用户应该是有意义的。
<action name="Mergexmlaction" class="com.hm.merge.mergeaction.Mergexmlaction">
2)不要将其命名为“行动”的行动,会有要么是.action
扩展或没有扩展名的。无论如何,没有理由在第一种情况下复制“行动”,没有理由在没有扩展的情况下使用“行动”。只是 “mergexml”, “mergeXml” 等
<result name="success" >/jsp/Result.jsp</result>
3)我建议把你的JSP页面WEB-INF
下避免直接客户端访问。
<interceptor-ref name="fileUpload">
4)一旦你声明任何拦截器,您必须声明所有拦截。这个动作只有一个拦截器在运行。这是可能这没关系,但它几乎从来都不是正确的做法。
<welcome-file>jsp/Browse_multiplexmlfiles.jsp</welcome-file>
5)这是最终的问题,这取决于你如何访问应用程序。您将欢迎文件显示为一个JSP页面,大概使用S2标签。这将不起作用:标签取决于它们是一个完整的S2请求,值栈等。
所有对S2应用程序的访问应通过S2操作发生,而不是一个JSP。如果您查看直接访问的JSP呈现的HTML,您将看不到名称空间或动作扩展。
感谢您的答复戴夫,但我的欢迎页面运行良好..问题是当我打电话任何行动,然后它没有运行,甚至没有显示任何行动的延伸。 – 2012-02-10 04:31:56
我做了一个愚蠢的错误....我已经把struts.xml的名字命名为Struts.xml ....现在它的工作很好,谢谢所有我通过你的答案学到了很多,并会提醒这些东西为未来...感谢一个基调... :) – 2012-02-10 05:53:33
错误404是一个错误的链接。意味着你只是在调用一个不存在的链接。检查你的struts配置文件中的映射,并确保你使用了正确的url。
包元素的名称空间属性是可选的,如果它不存在,则假定默认值为“/”。如果namespace属性具有非默认值,则必须将该名称空间添加到调用包中的操作的URI中。
例如,URI用于与默认名称空间包调用动作是这样的:
/上下文/ actionName
要在包与非默认名称空间调用动作,则需要这个URI:
/context/namespace/actionName
我做了一个愚蠢的错误。 ...我将Struts.xml的名字命名为Struts.xml ....现在它的工作很好,谢谢大家,我通过你的答案学到了很多东西,并且会为将来提醒这些事情......感谢一下。 .. :) – 2012-02-10 05:56:29
web.xml怎么样?你在那里设置了struts调度器吗? – Thomas 2012-02-09 07:29:44
需要大量信息?关于你的web.xml,当你得到这些信息时你打的是什么URL,没有这个URL就无法回答。 – 2012-02-09 07:31:42
我已经添加了我的struts和web.xml文件....
在jsp中,我只是简单地调用函数s:form – 2012-02-09 07:47:27