2013-05-12 33 views
0

你看我試圖做一個簡單的導航菜單,試圖使一個簡單的Web應用程序。 我想嘗試至少2個菜單,只使用一種形式。 當任何菜單被點擊時,它將調用servlet MainServlet,它將決定哪個JSP頁面被顯示。多個超鏈接調用一個決定要顯示的頁面的servlet

在JSP:

<form action="menu" method="POST"> 
<a href="<%=request.getContextPath()%>/MainServlet" name="about">About</a> 
<a href="<%=request.getContextPath()%>/MainServlet" name="contact">Contact Us</a> 
</form> 

在web.xml:

<servlet> 
<servlet-name>MainServlet</servlet-name> 
<servlet-class>com.javashuffle.servlets.MainServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
<servlet-name>MainServlet</servlet-name> 
<url-pattern>/MainServlet</url-pattern> 
</servlet-mapping> 

在MainServlet:

doGet() { 
    if (request.getParameter("about") != null) { 
    RequestDispatcher dispatcher = request.getRequestDispatcher("about.jsp"); 
    dispatcher.forward(request, response); 
    } else if (request.getParameter("contact") != null) { 
    RequestDispatcher dispatcher = request.getRequestDispatcher("contact.jsp"); 
    dispatcher.forward(request, response); 
    } 
} 

我似乎無法用我的代碼中去所需的JSP頁面該servlet。 您認爲我的代碼有問題嗎?

在此先感謝!

回答

0

每個鏈接的URL完全相同,並且不包含任何參數。爲了您的代碼工作的網址應

<%=request.getContextPath()%>/MainServlet?about= 

<%=request.getContextPath()%>/MainServlet?contact= 

我會用兩種不同的servlet來代替:一個具有處理有關網頁的責任,並具有另一個負責處理聯繫人頁面。如果他們所做的只是分派給JSP,那麼它並沒有多大改變,但是如果需要在頁面中顯示某些數據,那麼爲每個頁面分配一個專用的servlet就更有意義。

它也有助於有更乾淨的網址,如/contact和​​。

+0

如果每個鏈接的不同servlet是推薦的想法,請問這種編程技術是否也適用於製作'bigtime'應用程序? ?謝謝 – 2013-05-12 13:15:17

+0

我不知道什麼是「bigtime」應用程序。請澄清。 – 2013-05-12 13:16:12

+0

像當今互聯網上的其他任何優秀網站一樣的bigtime應用程序,如公司網站,商業網站和任何其他由專業開發人員製作的網站。 – 2013-05-12 13:22:11

相關問題