eclipse - 开始使用struts2

标签 eclipse maven tomcat struts2

我正在尝试在 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>

我还有 web.xml 路径 src/main/web/WEB-INF/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 时出现错误:

The requested resource (/ContactWeb/Pages/Login.jsp) is not available.

同样的错误,不同的 url-s 只是路径不同(/ContactWeb/Login.jsp,/ContactWeb/Login.action 等)。

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

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

最佳答案

目前还没有足够的信息来提供帮助,但错误太多,不适合发表评论。

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

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

关于eclipse - 开始使用struts2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10863201/

相关文章:

tomcat - 需要有关嵌入式 Tomcat 的帮助(日志记录 + session 复制)

tomcat - TLS_RSA_WITH_AES_128_CBC_SHA 和 SSL_RSA_WITH_AES_128_CBC_SHA

java - EventDispatchThread.run() 行 : not available error in eclipse

eclipse - 两个eclipse插件如何使用相同的首选项存储?

eclipse - 向 webService 客户端提供 keystore

eclipse - 将hibernate-orm源导入eclipse juno

java - 减少多模块 Maven 项目的 Docker 镜像大小

java - Maven 构建失败,涉及依赖项 JAR 中的 MANIFEST.MF 类路径

apache - Jasper JSP Engine JAR 文件的官方来源

java - 如何将 log4j 日志记录从 catalina.out 重定向到单独的文件?