使用 Java Servlet 的 URL 路由

问题描述 投票:0回答:1

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

在表达中我可以说例如:

app.get('/:name',function(bla bla)){}

:/name
是一个参数,其中get的url可以是

localhost/kevin
localhost/joe

或者其他什么......这很棒,因为我可以以那个名字

(request.params.name)
为例,等等。它也很棒,因为(据我所知)我可以创建多少条路线没有限制,它只是作为占位符。

有没有办法使用 Java servlet 来做到这一点?我希望能够有一个 html 页面,当我单击一个按钮时,它会转到

localhost/button1
如果我单击另一个按钮,它会转到
localhost/button2
.. 等等.. 但我也让用户创建按钮动态的,所以我不想预先创建 jsp 页面,我只想让 servlet 创建一个..?

谢谢

javascript express jsp servlets
1个回答
6
投票

几乎。借助前缀映射

/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);
        // ...
    }

}

将其调用为

您可以选择将 servlet 映射到

/*
上,但是它将像一个全局前端控制器一样运行,这不一定是一个好主意,因为您必须考虑 CSS/JS/图像等静态资源。

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

© www.soinside.com 2019 - 2024. All rights reserved.