当前位置: 首页 > 面试题库 >

如何获取没有上下文路径的请求URI?

薛云瀚
2023-03-14
问题内容

方法request.getRequestURI()返回带有上下文路径的URI。

例如,如果一个应用程序的基本网址http://localhost:8080/myapp/(即上下文路径是 MYAPP
),和我打电话request.getRequestURI()http://localhost:8080/myapp/secure/users,它将返回/myapp/secure/users

有什么办法可以让我们只获得这部分/secure/users,即没有上下文路径的URI?


问题答案:

如果您位于映射在前缀模式上的前contoller
servlet内,则可以使用HttpServletRequest#getPathInfo()

String pathInfo = request.getPathInfo();
// ...

假设您的示例中的servlet映射到/secure,则将返回/users该值,这将是典型的前端控制器servlet中唯一感兴趣的信息。

但是,如果Servlet映射到后缀模式(但是您的URL示例并未表明是这种情况),或者当您实际上处于过滤器中时(当尚未确定要调用的servlet时,因此getPathInfo()可能会返回null),那么最好的选择是使用上下文String方法自己根据上下文路径的长度对请求URI进行子字符串化:

HttpServletRequest request = (HttpServletRequest) req;
String path = request.getRequestURI().substring(request.getContextPath().length());
// ...


 类似资料:
  • 问题内容: 我有一个名为“ localhost:3000 / returnStat”的服务,该服务应将文件路径作为参数。例如“ /BackupFolder/toto/tata/titi/myfile.txt”。 如何在浏览器上测试此服务?例如,如何使用Express格式化此请求? 问题答案: 我尚未测试您的代码,但其他方法可行 如果您想从请求网址获取路径信息 1.如果您获取的URL参数仍然无法读取

  • 我有一个eureka服务,它有一个swagger。eureka在http://localhost:8050,服务按名称 /service.问题是当我打开swagger并尝试发出请求时,它会将其发送到。该服务有一个上下文路径“path”,因此它应该是。这是swagger的配置:

  • 问题内容: 我正在使用express + node.js,并且我有一个req对象,浏览器中的请求是/ account,但是当我登录req.path时,我得到的是’/’ —不是’/ account’。 req.path是/何时应该是/ account? 问题答案: 在自己玩了一点之后,您应该使用:

  • 我正在使用快速节点。js和我有一个req对象,浏览器中的请求是/account,但当我记录req时。我得到的路径是“/”--不是“/account”。 req.path/什么时候应该 /account??

  • 在经典的spring-mvc中,可以在上设置请求范围属性。在此基础上,我们可以在中解析传入请求,设置请求参数,如当前登录的用户、唯一的请求ID(用于日志关联)等等。这些请求属性可以在请求的生存期内从任何服务(不仅仅是控制器)静态检索。 我正在尝试用Spring-WebFlux实现类似的功能。 我可以使用拦截所有传入请求,获取当前的并对其设置属性。但是,除了controller方法之外,我看不到任何

  • 问题内容: 有没有一种简单的方法可以打印的完整路径? 的 应该打印 问题答案: 使用 readlink :