我想知道是否有一种方法可以在 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 创建一个..?
谢谢
几乎。借助前缀映射
/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.