2013-02-08 27 views
0

我是struts2的新手。我正在嘗試一個小練習的應用程序,但我遇到了一個問題。Struts 2示例現在正在工作

我試圖直接從index.jsp轉發到login.jsp。我知道我可以直接轉發到login.jsp,但下面的代碼也應該是有效的。我附上了我正在嘗試的代碼。下面是 是我正在嘗試的代碼。

的index.jsp

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Home</title> 
</head> 
<body> 
     <jsp:forward page="login.action" /> 
</body> 
</html> 

struts.xml中

<struts> 
<include file="example.xml"/> 
<!-- Configuration for the default package. --> 
<package name="default" extends="struts-default"> 
    <action name="login"> 
     <result>/login.jsp</result> 
</action> 
</package> 

的login.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
</head> 
<body> 
    <s:form> 
     <s:textfield name="user" label="User Name" /> 
     <s:password name="passwd" label="Password" /> 
    </s:form> 
</body> 

在web.xml中,index.php頁面設置爲歡迎頁面。假設XYZ是上下文名稱,當我把/XYZ/login帶到登錄頁面時,但是當我在瀏覽器中放入/XYZ/時,它給出和資源未找到錯誤。

當我再次使用<META HTTP-EQUIV="Refresh" CONTENT="0;URL=login.action">它工作正常。

我正在使用tomcat7作爲Web服務器。任何人都可以說出爲什麼會發生這種情況。

+0

嘗試設置的歡迎頁面的index.jsp在web.xml中 – 2013-02-08 18:24:21

+0

我已經完成了。它確實來到index.jsp並給出錯誤 – 2013-02-08 18:26:12

+0

嘗試response.sendRedirect(「login」); – 2013-02-08 18:31:49

回答

1

並非所有默認容器FORWARD執行非JSP資源 - <jsp:forward/> - 說容器做到這一點,請添加以下映射到web.xml中:

<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 
+0

它工作。你能詳細說明一下嗎?我想知道爲什麼。我會標記這個答案。 – 2013-02-11 16:48:34

+0

我不是爲什麼 - 也許是一些性能問題,安全性 - 請檢查給定容器的文檔或詢問郵件列表。 – 2013-02-12 07:56:01