java getpathinfo_request.getServletPath()和request.getPathInfo()用法
在 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;
}
java getpathinfo_request.getServletPath()和request.getPathInfo()用法相关推荐
- request.getServletPath()和request.getPathInfo()用法
为什么80%的码农都做不了架构师?>>> 在 Web 中,我们通常需要获取 URL 相对于 Webapp 的路径,主要是下面的几个方法: request.getServletP ...
- 关于request.getServletPath(),request.getContextPath()的总结
最近对于request中的几种"路径"有点混淆,查找网上资源都没有很好的总结,希望此文章能够帮助我理解一下这几种"路径". ++++++++++++++++++ ...
- Java的几种常见接口用法
2019独角兽企业重金招聘Python工程师标准>>> Java的几种常见接口用法 今天在看阎宏的< Java与模式>,里面对 java的 几种 接口的常用方法的总结: ...
- java实现stack search_Java Stack search()用法及代码示例
Java中的java.util.Stack.search(Object element)方法用于搜索堆栈中的元素并获取其与顶部的距离.此方法从1开始而不是从0开始计数位置.位于堆栈顶部的元素被视为在位 ...
- Java正则表达式--Matcher.group函数的用法
https://www.cnblogs.com/jiafuwei/p/6080984.html Java正则表达式--Matcher.group函数的用法 原来,group是针对()来说的,group ...
- 【Java学习笔记之二十九】Java中的equals和==的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...
- java和python可以在一个项目中同时使用么-java调用python的几种用法(看这篇就够了)...
java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...
- Java中PreparedStatement和Statement的用法区别
Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈 1. PreparedStatement接口继承Sta ...
- java dictionary 实例化_Java Dictionary put()用法及代码示例
字典的put()方法用于在字典中插入映射.这意味着可以将特定键及其值映射到特定字典中. 用法: DICTIONARY.put(key, value) 参数:该方法有两个参数,都属于Dictionary ...
最新文章
- golang实现给图片加水印
- Amazon AWS云计算服务平台概述
- LNMP架构之PHP——MemCache对PHP页面的缓存加速优化
- python系统-基于Python搭建Django后台管理系统
- Python调用PyAutoGUI模块
- 2017年度最值得读的AI论文 | NLP篇 · 评选结果公布
- Redis系列五、redis的五种数据结构和相关指令之Set
- java中算两个时间内的秒数_java – Joda Time – 计算两个日期之间的秒数会引发异常....
- python issuperset_Superset的各种疑难解答
- Delphi 3D Glscene安装
- arm汇编—str,mov等指令
- 什么软件可以压缩图片大小?这几个软件值得收藏
- 百度、阿里、美团、头条…论剑AI,这里有开发者想知道的未来
- 三维旋转矩阵_三维重建中的旋转(Rotation)
- 计算机组成部件及其作用,计算机硬件组成成分各自的功能 计算机硬件有哪几部分组成?请分别说明各部分的作用?...
- Filed II 自定义二维曲面超声换能器阵列
- PRBS码是什么?PRBS生成原理介绍(转)
- win10下注册MSCOMM32控件
- 第三方、第四方扫二维码的支付平台有哪些?
- 红米note4android,红米Note4处理器是什么型号?红米Note4处理器的具体参数和性能
热门文章
- java5分钟项目讲解_5分钟快速创建spring boot项目的完整步骤
- flutter 刷脸_支付宝刷脸认证 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...
- dubbo内置哪几种服务容器_Dubbo服务提供者几种启动方式
- python 发送邮件不显示附件_求助:写python脚本发 带有附件的邮件, 收到邮件后,发现附件直接显示在屏幕上了,而不是以附件形式...
- java对象克隆的例子_Java对象克隆
- 学习JDK源码(一):String
- Spring 7大功能模块的作用[转]
- Initializing Java Tooling 30% 停住不动了
- 通讯簿电话号码同步相关问题
- java 蓝桥杯算法训练 纪念品分组(题解)