多个超链接调用一个servlet决定要显示的页面

时间:2013-05-12 11:23:55

标签: forms jsp servlets hyperlink

你看我试图制作一个简单的导航菜单,试图制作一个简单的网络应用程序。 我想尝试仅使用一种表格的至少2个菜单。 当单击任何菜单时,它将调用servlet MainServlet,它将决定要显示哪个JSP页面。

在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);
   }
}

我似乎无法使用servlet中的代码转到所需的JSP页面。 您认为我的代码有什么问题?

提前感谢!

1 个答案:

答案 0 :(得分:0)

每个链接的URL完全相同,不包含任何参数。要使代码正常工作,网址应为

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

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

我会使用两个不同的servlet:一个负责处理about页面,另一个负责处理联系页面。如果它们只是调度到JSP,它并没有太大的改变,但是如果需要在页面中显示某些数据,那么为每个页面设置一个专用的servlet会更有意义。

它还有助于拥有更清晰的网址,例如/contact/about