0

シンプルな Web アプリを作ろうとして、シンプルなナビゲーション メニューを作ろうとしているのがわかります。1つのフォームのみを使用する少なくとも2つのメニューを試してみたかった. いずれかのメニューをクリックすると、表示する JSP ページを決定するサーブレット MainServlet が呼び出されます。

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>

メインサーブレットで:

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 ページに移動できないようです。私のコードの問題は何だと思いますか?

前もって感謝します!

4

1 に答える 1

0

各リンクの URL はまったく同じで、パラメーターは含まれていません。コードを機能させるには、URL を次のようにする必要があります。

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

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

代わりに、2 つの異なるサーブレットを使用します。1 つは about ページを処理し、もう 1 つは contact ページを処理します。それらが JSP にディスパッチするだけの場合はあまり変わりませんが、ページに表示するために何らかのデータが必要な場合は、各ページに専用のサーブレットを用意する方が理にかなっています。

/contactまた、やなどのよりクリーンな URL を使用することも役立ちます/about

于 2013-05-12T11:35:50.040 に答える