博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
request.getServletPath()和request.getPathInfo()用法
阅读量:6110 次
发布时间:2019-06-21

本文共 2285 字,大约阅读时间需要 7 分钟。

  hot3.png

在 Web 中,我们通常需要获取 URL 相对于 Webapp 的路径,主要是下面的几个方法:

request.getServletPath()request.getPathInfo()request.getContextPath()request.getRequestURI()

其中 request.getRequestURI() 的返回值包含了 request.getContextPath(),所以是相对于网站的根目录的。

下面我们分析 request.getServletPath() 和 request.getPathInfo()

1. 如果我们的 servlet-mapping 如下配置:

jetbrick-template
*.jetx

那么访问: /context/templates/index.jetx

request.getServletPath() == "/templates/index.jetx"request.getPathInfo() == 

2. 如果我们的 servlet-mapping 如下配置:

jetbrick-template
/*
那么访问: /context/templates/index.jetx

request.getServletPath() == ""request.getPathInfo() == "/templates/index.jetx"
3. 如果我们的 servlet-mapping 如下配置:
jetbrick-template
/template/*

那么访问: /context/templates/index.jetx

request.getServletPath() == "/templates"request.getPathInfo() == "/index.jetx"

总结

所以,我们要获取相对于 request.getContextPath() 的路径,我们可以使用如下的代码:

String uri = request.getServletPath();String pathInfo = request.getPathInfo();if (pathInfo != null && pathInfo.length() > 0) {    uri = uri + pathInfo;}

或者:

String uri = request.getRequestURI();String contextPath = request.getContextPath();if (contextPath != null && contextPath.length() > 0) {    uri = uri.substring(contextPath.length());}

===============================

2013-02-08 补上一个 Tomcat 自身的实现:

catalina.jar,  DefaultServlet.java

protected String getRelativePath(HttpServletRequest request)  {    if (request.getAttribute("javax.servlet.include.request_uri") != null)    {      String result = (String)request.getAttribute("javax.servlet.include.path_info");      if (result == null) {        result = (String)request.getAttribute("javax.servlet.include.servlet_path");      } else {        result = (String)request.getAttribute("javax.servlet.include.servlet_path") + result;      }      if ((result == null) || (result.equals(""))) {        result = "/";      }      return result;    }    String result = request.getPathInfo();    if (result == null) {      result = request.getServletPath();    } else {      result = request.getServletPath() + result;    }    if ((result == null) || (result.equals(""))) {      result = "/";    }    return result;  }

转载于:https://my.oschina.net/sub/blog/182408

你可能感兴趣的文章
(转)HTML的代码(从朋友那转的,看着觉得会有用就转了)
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>
416. Partition Equal Subset Sum
查看>>
centos7.0 64位系统安装 nginx
查看>>
数据库运维平台~自动化上线审核需求
查看>>
注解开发
查看>>
如何用 Robotframework 来编写优秀的测试用例
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>
Docker - 创建支持SSH服务的容器镜像
查看>>
[TC13761]Mutalisk
查看>>
三级菜单
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
查看>>
while()
查看>>
常用限制input的方法
查看>>