构造多个servlet请求url模式

Mad*_*bar 1 java servlets

我正在使用servlet从前端获取请求。我能否制作一个可以基于url模式执行多个操作的servlet?这是我的网址映射

<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
<url-pattern>/HelloServletOne</url-pattern>
<url-pattern>/HelloServletTwo</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

这意味着,如果我按如下所示访问URL,则应调用其自身的功能。

  • URL:/ HelloServlet:它应该执行功能1
  • URL:/ HelloServletOne:应该执行功能2
  • URL:/ HelloServletTwo:应该执行3等功能

我如何通过扩展servlet实现这一点?
代码/链接示例非常受赞赏。

swi*_*ler 5

关于您的url模式,您需要知道调用了什么URL。由于可以通过不同的http方法(GET,POST等)发出请求,因此可以使用FrontController模式的一部分

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {

  private static final String SERLVET = "HelloServlet";
  private static final String SERLVET_ONE = "HelloServletOne";
  private static final String SERLVET_TWO = "HelloServletTwo";

  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    processRequest(req, resp);
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    processRequest(req, resp);
  }

  private void processRequest(HttpServletRequest req, HttpServletResponse resp) {
    String path = req.getServletPath();
    switch (path) {
      case SERLVET:
        // ... call your function1
        break;
      case SERLVET_ONE:
        // ... call your function2
        break;

      case SERLVET_TWO:
        // ... call your function3
        break;
      default:
        break;
    }

    // do something else
  }

}
Run Code Online (Sandbox Code Playgroud)

getServletPath方法可能仅适用于像您给定的显式url模式。有关URL的其他信息,请检查此链接