gpt4 book ai didi

java - 如何使用@WebServlet 接受参数(以 RESTFul 方式)?

转载 作者:行者123 更新时间:2023-11-29 10:11:48 24 4
gpt4 key购买 nike

假设我想接受以下网址:

http://myserver/myapplication/posts
http://myserver/myapplication/posts/<id>
http://myserver/myapplication/posts/<id>/delete

如何使用 servlet 装饰器 @WebServlet这样做?我正在调查 valueurlPatterns但我不知道该怎么做。例如,

@WebServlet(urlPatterns={"/posts", "/posts/*"})
[..]
String param = request.getPathInfo();

给了我一些结果,但是如何使用它呢?另外,request.getPathInfo()似乎返回通配符的值,但如果我想要更多参数,如 http://http://myserver/myapplication/posts/<id>/delete/<force> 怎么办? ?

最佳答案

在 servlet 规范中,您没有路径变量的概念。一些 MVC 框架确实支持它们,例如 Struts 或 Spring MVC。

对于 servlet 的观点,URL 是:

scheme://host.domain/context_path/servlet_path/path_info?parameters

任何部分(从上下文路径开始可能为空)

servlet 3.0 状态规范:

  • 上下文路径:与这个ServletContext关联的路径前缀servlet 的一部分。如果此上下文是 Root 于Web 服务器的 URL namespace ,此路径将为空字符串。否则,如果context 不是以服务器 namespace 的根为根,路径以/字符但不以/字符结尾。
  • Servlet Path:直接对应映射的路径部分激活了这个请求。此路径以“/”字符开头,除非在大小写请求与“/*”或“”模式匹配,在这种情况下它是一个空字符串。
  • PathInfo:请求路径中不属于上下文路径或小服务程序路径。如果没有额外的路径,它要么是 null,要么是一个带有前导的字符串‘/’。

HttpServletRequest接口(interface)中存在以下方法访问this信息:

  • 获取上下文路径
  • 获取Servlet路径
  • 获取路径信息

需要注意的是,请求之间的URL编码差异除外URI 和路径部分,下面的等式总是成立的:

requestURI = contextPath + servletPath + pathInfo

这意味着您只需使用@WebServlet(urlPatterns={"/posts"}),然后手动解码pathInfo部分来提取命令和参数

关于java - 如何使用@WebServlet 接受参数(以 RESTFul 方式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31322586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com