0

我正在尝试在 Eclipse 中设置 maven 和 struts 2 项目,但我遇到了问题。我选择创建简单的 HelloWorld 示例,然后添加一些其他功能,但我遇到了问题。


我在项目中有“struts.xml”路径:src/main/resources/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>

    <package name="default" namespace="/" extends="struts-default">

        <action name="Login">
            <result>/Pages/Login.jsp</result>
        </action>

        <action name="Index">
            <result>/Pages/Index.jsp</result>
        </action>

        <action name="Welcome" class="com.contactweb.main.Contact">
            <result name="SUCCESS">/Pages/Welcome.jsp</result>
        </action>
    </package>

</struts>

我也有带有路径 src/main/web/WEB-INF/web.xml 和内容的 web.xml:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>ContactWeb</display-name>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

从命令行我使用'mvn clean install'并将.war文件放入目标文件夹,我将在Tomcat下部署该.war文件(也成功部署它)但是当我输入url时出现错误:

请求的资源 (/ContactWeb/Pages/Login.jsp) 不可用。

具有不同 url-s 的相同错误仅路径不同(/ContactWeb/Login.jsp、/ContactWeb/Login.action 等)。

在我的项目中,我确实有 Login.jsp、Index.jsp 和 Welcome.jsp。它们位于:src/main/web/Pages

我在struts2中的某个地方读到过,我需要对url进行.action扩展,但它不起作用,为什么struts.xml中是包名和命名空间?到底需要什么?我已经阅读了它要显示的页面?

4

1 回答 1

0

还没有足够的信息可以提供帮助,但错误的程度足以使其不适合评论。

  • 为什么要使用古老的 servlet 规范(2.3?由于各种原因,至少应该是 2.5。)
  • 您为什么使用旧版本的 S2(2.0?我们使用的是 2.3。)
  • 操作的结果名称Welcome几乎可以肯定是默认名称"success",除非您明确不使用 S2 结果名称。哪个 IMO 将是一个坏主意。
  • 我们不知道您要部署到什么上下文,因此我们不知道您的 Web 应用程序的路径。如果您要部署到ContactWeb上下文中,那么Login操作将在/ContactWeb/Login.action(或者无论您的后缀是什么,如果有的话)。
  • 您应该 (a) 打开devMode,并且 (b)DEBUG在故障排除时将日志记录提高到该级别。
  • 您的 JSP 页面是否位于该src/main/webapp/Pages目录中?请注意,通常通过将 JSP 放在下面来隐藏 JSP 以防止直接访问WEB-INF——我建议您遵循这种做法。
  • 您的启动日志中是否有任何内容表明应用程序未启动?

我建议阅读一些S2 指南;如果您不知道“包”和“命名空间”属性的含义,那么 IMO 您应该退后一步,尝试了解一些基础知识,然后再将代码和配置随机扔到 Web 容器中。

于 2012-06-02T15:00:03.350 回答