簡體   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