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

时间:2015-01-12 11:14:47

标签: java jsp servlets

我有一个链接列表:

<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,因此无法检查字符串"/"是否相等。

我怎么能达到这个目的呢?

1 个答案:

答案 0 :(得分:0)

您可以在toString()上执行StringBuffer以获得String吗?在进入Java EE等之前,可能是学习一些基础Java的时候了。

您也可以只查找HttpServletRequest javadoc以确定哪些方法可用于从请求中获取信息。您会注意到其他getRequestURI()会返回String。还有其他更适合此类的内容,例如getServletPath()

String servletPath = request.getServletPath();

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

// ...