繁体   English   中英

Struts2找不到jsp文件

[英]Struts2 doesn't find jsp files

我一直试图建立一个简单的Struts2应用程序,所以我可以继续学习框架。 基本上,我期望发生的是当触发未定义的动作时,将显示默认页面。

这个应用程序正在Eclipse中开发。

我在WEB-INF / classes目录中设置了一个非常简单的struts.xml文件:

<struts>
<!-- Include webwork default (from the Struts JAR). -->
<include file="struts-default.xml" />

<!-- Configuration for the default package. -->

<package name="default" extends="struts-default">
    <action name="*">
        <result>/test.jsp</result>
    </action>
</package>
</struts>

我有test.jsp文件(只是在Eclipse中创建的默认jsp模板,即“在此处插入标题”),WebContent级别,欢迎页面(触发操作)是index.jsp也是同样的级别并在程序启动时显示。 它的定义如下:

 <%@page contentType="text/html" pageEncoding="UTF-8"%>
 <%@ taglib prefix="s" uri="/struts-tags" %>

<html>
  <head>
    <title>GlassFish JSP Page</title>
  </head>
<body>
<h1>Hello World!</h1>
<s:form action="other">
   <s:submit value="Submit" />
</s:form>
</body>
</html> 

我也尝试过其他动作名称,无论如何,我都找不到404页面。 我在GlassFish和Websphere 6.1.1上都尝试了相同的结果,这让我怀疑我遗漏的东西可能就在我面前涉及任一目录结构(相对于struts的路径)。 xml文件或上下文根?)或某些配置文件。

经过一番尝试,我能够使用Glassfish在Mac OS X 10.5.6上运行Eclipse Ganymede,但我仍然没有运行Windows XP上的IBM Websphere和Application Server Toolkit(Eclipse衍生产品)。 我有点怀疑这可能与浏览器有关。

我只是尝试将一个名为“other.action”的文件添加到与上面提到的其他JSP文件相同的目录中。 现在,当我单击链接到“其他”操作的提交按钮时,操作将成功进入我的test.jsp页面。 我可能是不正确的,但我不相信我应该为每个可能需要使用的“某些动作”提供名为“someaction.action”的文件(我知道我在OS X上不需要它)运行我的应用程序)。

更多更新 - 我刚刚在Firefox 3.5.2上尝试并在该浏览器上运行给出了相同的结果 - 在Websphere上没有找到“other.action”文件时找不到文件,所以现在我怀疑它是Websphere配置问题。

使用Firefox提供了确定此问题根源所需的密钥 - 错误404:SRVE0190E消息告诉我问题是Websphere配置。

在以下链接中更详细地解释了该问题:

当收到文件系统上不存在的静态文件的请求时,IBM Websphere WebContainer会抛出FileNotFoundException。

并且在此链接中解释了解决方案(在这种情况下,设置com.ibm.ws.webcontainer.invokefilterscompatibility值= true):

Websphere设置自定义属性

为了完整起见,我将在这里提出如何纠正这个问题:

- 在管理控制台中,单击“服务器”,然后在服务器下单击“应用程序服务器”

- 单击要应用自定义属性的服务器

- 在“配置”和“容器设置”下单击“Web容器设置”,然后在“Web容器设置”下单击“Web容器”

- 在“配置”和“其他属性”下单击“自定义属性”

- 在“自定义属性”页面中,单击“新建”

- 在设置页面中,在“名称”字段中输入要添加的自定义属性的名称,并在“值”字段中输入要为自定义属性设置的值。 请注意,某些属性区分大小写。 对于此问题,属性为“com.ibm.ws.webcontainer.invokefilterscompatibility”,值为“true”

- 点击“应用”或“确定”

- 在出现的“消息”框中单击“保存”重新启动服务器以使定制属性生效

你肯定是在为你的应用程序找到上下文根 即在web.xml ,应用程序的名称通常与上下文根相同,除非您已将应用程序打包到具有不同名称的war文件中。

http://yourserver:8080/yourcontextroot

我相信Stuts 2附带了一些示例Web应用程序和一些maven原型。 从其中一个开始,然后根据您的需求进行自定义始终是一个好主意。

http://struts.apache.org/2.1.2/docs/struts-maven-archetypes.html

Struts 2有一个名为struts-blank-2.x.xx.war的示例项目。 http://mirrors.dedipower.com/ftp.apache.org/struts/examples/struts2-blank-2.0.14.war

您可以下载它并将其重命名为.zip ,看看他们如何设置项目。

WEB-INF / web.xml文件

应该有struts2 servlet和filter

...    
<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>

WEB-INF / classes / struts.xml应该在classes文件夹中,并且应该指向你的struts配置文件

    ...
    <include file="yourconfig.xml"/>

* WEB-INF / yourconfig.xmlstruts.xml位于同一文件夹中,包含操作的映射

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

    <action name="*" class="example.ExampleSupport">
        <result>/example/test.jsp</result>
    </action>

    <!-- Add actions here -->
</package>

所有jsp文件都在名为/example的文件夹中

我可能错了,但对于每一个动作,都会转到/test.jsp。 你刚刚创建了[app name] /index.jsp ?? 创建一个[app name] /test.jsp并指向那里!? (尝试在test.jsp之前删除xml文件中的斜杠?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM