使用 Java Servlet 的 URL 路由

Kev*_*hen 4 html javascript jsp servlets

我想知道是否有办法在 java servlet 中执行类似的代码,就像我在 express.js 中所做的那样

在快递中,我可以说例如:

app.get('/:name',function(bla bla)){}
Run Code Online (Sandbox Code Playgroud)

:/name它的参数,其中获取的URL可以

localhost/kevin
localhost/joe
Run Code Online (Sandbox Code Playgroud)

或者其他什么......这很棒,因为我可以拿那个名字(request.params.name)和其他东西作为例子。这也很棒,因为我可以创建多少条路线没有限制(据我所知),它只是一个占位符。

有没有办法使用 Java servlet 来做到这一点?我希望能够有一个 html 页面,当我单击一个按钮时,它会转到localhost/button1如果我单击另一个按钮,它会转到localhost/button2.. 等等.. 但我也让用户动态创建按钮,所以我不想事先创建jsp页面,我只是想让servlet创建一个..?

谢谢

Bal*_*usC 5

几乎。借助前缀映射/foo/*HttpServletRequest#getPathInfo().

@WebServlet("/name/*")
public class NameServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getPathInfo().substring(1);
        // ...
    }

}
Run Code Online (Sandbox Code Playgroud)

调用它作为

您可以选择将 servlet 映射到 /*,但它会像一个全局前端控制器一样工作,这不一定是一个好主意,因为您必须考虑 CSS/JS/图像等静态资源。

如果您确实打算创建 REST 服务,请查看 JAX-RS 而不是“普通的”servlet。它将进一步减少样板代码。另请参阅 ao Servlet 与 RESTful