【问题标题】:Struts 2 Hello WorldStruts 2 你好世界
【发布时间】:2016-05-30 18:29:31
【问题描述】:

我在这个example有问题

我为 Java EE 和 Apache Tomcat 8 使用 eclipse。 我的项目结构:

web.xml 代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" 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>Hello World Struts 2</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>


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

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

</web-app>

其他文件代码与struts网站相同。 当我运行 index.jsp 文件时,出现以下错误:

**HTTP 状态 404 - /helloworld/index.jsp

输入状态报告
消息 /helloworld/index.jsp 描述 请求的资源不可用。**

有人能找出我不能运行它的原因吗?

【问题讨论】:

  • 应用部署的上下文是什么?
  • 如果你的意思是这个项目的“web项目设置”选项,上下文根是helloworld
  • 这是项目的名称,而不是应用上下文。
  • 你的意思是项目方面使用的java版本和项目方面的运行时?

标签: eclipse struts2


【解决方案1】:

首先项目是使用 Maven 配置创建的,并且要访问 Struts 操作,您应该使用 url

第 6 步 - 构建 WAR 文件并运行应用程序

执行mvn clean包创建war文件。

将war 文件复制到您的Servlet 容器。在你的 Servlet 之后 容器成功部署war文件到这个URL http://localhost:8080/helloworld/index.action 你应该在哪里看到 以下:


(来源:apache.org

Web 应用程序上下文是应用程序的部署位置。在文档 url 中它是 /helloworld,在图像上它是 /Hello_World_Struts2_Ant。将其用作 url 的一部分。您在部署期间使用哪个应用程序上下文无关紧要,但 url 取决于它。如果您想更改 Web 应用程序上下文,您应该阅读 Java - How to change context root of a dynamic web project in Eclipse。在上下文之后,您使用带有.action 扩展名的操作名称来执行操作。

不要使用像 localhost:8080/helloworld/index.jsp 这样的 URL,因为您可能无法获取资源,因为它已经由 Web 服务器处理。

【讨论】:

  • 我将上下文根更改为“app”,并在 URL 处使用带有 .action 的操作名称,但我再次收到相同的消息。我还在做错什么吗?或者它需要 Maven 结构才能工作?我使用了与图片完全相同的项目结构,而不是 maven 结构。
  • 如果您按照教程中的说明进行操作,您不应再次收到相同的消息。当然,你需要一个 maven 来工作,没有它就行不通。