当 servlet 映射到多个 URL 模式时找出实际的 URL 模式匹配

Find out actual URL pattern match when servlet is mapped on multiple URL patterns

我有一个链接列表:

<ul>
  <li><a href="index">Home</a></li>
  <li><a href="contactus">Contact Us</a></li>
  <li><a href="services">Services</a></li>
  <li><a href="enquire">Enquire<a></li>
</ul>

以及以下 servlet:

@WebServlet( urlPatterns={"/index","/contactus","/services","/enquire"})
public class IndexServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws            ServletException, IOException {


   //Index URL mapping should be checked here like

   if(request.getRequestURL().equals("/index"))
   {
       response.sendredirtect("index.jsp")
   }

   //Url for contact  us should be checked here


   if(request.getRequestURL().equals("/contactus"))
   {
       response.sendredirtect("contactus.jsp")
   }

   //same for all the above url requests

}

由于 getRequestURL() 方法是 StringBuffer,因此无法检查它是否与字符串 "/" 相等。

我怎样才能做到这一点?

你可以在 StringBuffer 上做一个 toString() 来得到一个 String 吗?在深入研究 Java EE 等之前,也许是时候学习一些基本的 Java 了。

您也可以只查找 HttpServletRequest javadoc 来确定哪些方法可用于从请求中获取信息。您会注意到 getRequestURI() 其中 returns 和 String。还有其他更适合这个的,比如 getServletPath().

String servletPath = request.getServletPath();

if (servletPath.equals("/index")) {
    response.sendRedirect("index.jsp");
}
else if (servletPath.equals("/contactus")) {
    response.sendRedirect("contactus.jsp");
}

// ...