簡體   English   中英

Java Servlet-導航到頁面

[英]Java servlets - navigate to page

我有以下項目結構:

在此處輸入圖片說明

我試圖從導航到的index.jsp concerts.jsp:

的index.jsp

<li class="active"><a href="/ConcertsController">Concerts</a></li>

這是我的ConcertsController:

@WebServlet("/ConcertsController")
public class ConcertsController extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public ConcertsController() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.getWriter().append("Served at: ").append(request.getContextPath());
        request.getRequestDispatcher("/WEB-INF/pages/concerts.jsp").forward(request, response);
    }
        ...
    }

當我運行應用程序,然后單擊index.jsp中的鏈接時, localhost:8080 / ConcertsController URL打開,我得到了

所請求的資源不可用

錯誤。

編輯1:我正在使用Tomcat v7.0,Servlet v3.0和Java 8。

編輯2(可能重復):好吧,當然,我需要能夠在不使用jstl庫的情況下做到這一點。

編輯3:localhost:8080 / ConcertsController打開時,出現“找不到資源”錯誤。 但是,當我手動將URL編輯為localhost:8080 / AppName / ConcertsController時 ,它可以工作。

URL localhost:8080/ConcertsController表示應用程序名稱為ConcertsController ,端口號為8080並且該應用程序在本地運行。 但是您沒有ConcertsController應用程序。 所以你出錯了

所請求的資源不可用

有2個解決方案

  1. 如果您不使用JSTL。

更改<a href="/ConcertsController"><a href="<%${pageContext.request.contextPath}%>/ConcertsController">

  1. 如果使用了JSTL,則<c:set var="contextPath" value="${pageContext.request.contextPath}" /> ,然后將<a href="/ConcertsController"> to <a href="${contextPath}/ConcertsController">更改<a href="/ConcertsController"> to <a href="${contextPath}/ConcertsController">

采用

           <a href="${pageContext.request.contextPath}/ConcertsController">

另外,將請求轉發到cencerts.jsp時,請使用ServletContext.getRequestDispatcher(....)

ServletRequest.getRequestDispatcher()方法將評估相對於請求路徑的路徑。 但是對於ServletContext的方法,path參數不能是相對的,並且必須以/(/表示在Web應用程序的根目錄而不是當前的相對路徑)開頭。

嘗試使用以下內容:

request.getRequestDispatcher("/pages/concerts.jsp").forward(request, response);

代替:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM