2013-01-12 61 views
0

在我的JSP頁面中,我希望鏈接轉發到另一個JSP頁面。當用戶在home.jsp上時,我希望他們去login.jsp等。我遇到的問題是除了當我將頁面放在項目文件夾(WEB-INF上方)時,無法找到JSP夾)。到另一個JSP的JSP鏈接

我想這行代碼,但沒有工作:

<a href="/enq/WEB-INF/pages/login.jsp"> 
<a href="/WEB-INF/pages/login.jsp"> 
<a href="/pages/login.jsp"> 

它僅在項目文件夾中的JSP頁面的工作,然後我用下一行:

<a href="login.jsp"> 

但我希望JSP頁面位於:WEB-INF/pages/

+0

WEB-INF目錄是Web應用程序的專用區域,通過指定URL如http:// somesite/WEB-INF/someresource.html,無法直接訪問WEB-INF目錄下的任何文件。 Web容器將不會提供此目錄的內容。但是WEB-INF目錄的內容可以被應用程序中的類訪問。 – informatik01

回答

3

我解決了它,我爲每個JSP頁面創建了4個Servlet。每一個servlet的轉發這樣的信息到相應的JSP:

request.getRequestDispatcher("/WEB-INF/pages/enquette.jsp").forward(request, response); 

而在JSP頁面中的A HREF之間:

<a href="/enq/enquette"> 

該網站XML:

<servlet-mapping> 
<servlet-name>Enquette</servlet-name> 
<url-pattern>/enquette</url-pattern> 
1
<a href="/pages/login.jsp"> 

它必須正常工作。在這種情況下你會得到什麼HTTP狀態?

+0

我得到這個:HTTP狀態404 - /pages/home.jsp。說明請求的資源不可用。 – ronaldm

+0

你想如何發送此請求?從你的'home.jsp'?明確您的網頁的位置結構和路徑。 – kapand

+0

我有一個名爲enq(項目名稱)的文件夾。在enq我有WEB-INF,並在那裏我有類,lib,頁面和web.xml。在web.xml中我已經聲明瞭我的Servlet。在servlet中,我只做下一行代碼:request.getRequestDispatcher(「/ WEB-INF/pages/home.jsp」)。forward(request,response);這將讓我在家中。JSP。 – ronaldm

1

,如果你希望用戶有權訪問以下文件: /WEB-INF/pages/login.jsp

你要創建一個servlet,你應該更改HTML或JSP文件的鏈接:

<a href="/pages/login.jsp"> login page </a> 

創建一個servlet: 此行添加到您的web.xml文件:

<servlet-mapping> 
<servlet-name>accessFiles</servlet-name> 
<url-pattern>/pages/*</url-pattern> 
</servlet-mapping> 


<servlet> 
<servlet-name>accessFiles</servlet-name> 
<servlet-class>yourclass</servlet-class> 
</servlet> 

然後創建yourclass。延伸一個servlet的java:

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class yourclass extends javax.servlet.http.HttpServlet { 

private String message; 

    public void init() throws ServletException 
    { 

    } 

    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) 
      throws ServletException, IOException 
    { 
     String pathInfo = request.getPathInfo(); 
     request.getRequestDispatcher("/WEB-INF/pages/" + pathInfo).forward(request, response); 

    } 

    public void destroy() 
    { 
     // do nothing. 
    } 

}

getPathInfo()將漚在servlet模式(/ pages /)後面加上URL的部分 這應該起作用。

您還可以在/ WEB-INF/pages /目錄下的更多jsp文件,並通過此servlet將用戶轉發到期望頁面。