HttpServletRequest的getServletPath、getServletURI、getServletURL等区别

HttpServletRequest概述、相关方法、获取请求行信息、获取请求头信息相关方法及获取请求参数相关方法 HttpServletRequest概述及相关方法 阅读详情

HttpServletRequest的getServletPath、getServletURI、getServletURL等区别



现在项目做到加权限了,如何防止用户通过直接输入URL访问网页,去查资料,了解到在filter里用HttpServletRequest里的方法得到该请求的父URL-fatherURL,判断该fatherURL是否为空,如果为空就表示该请求是通过直接输入URL访问的。

代码:

  1. public void doFilter(ServletRequest request, ServletResponse response,   
  2.           FilterChain chain) throws IOException, ServletException {  
  3.      //首先判断如果是在URL输入页面访问,直接非法  
  4.      HttpServletRequest req=(HttpServletRequest)request;  
  5.      HttpServletResponse resp=(HttpServletResponse)response;  
  6.      String fatherUrl = fatherUrl = req.getHeader("REFERER");//取得上一级页面的RUL  
  7.     
  8.      if("".equals(fatherUrl ) || null == fatherUrl ) {  
  9.              String url = req.getServletPath();  
  10.              //第一次转发  
  11.              if("//pages/login.jsp".equals(url )) {  
  12.                      chain.doFilter(request, response);  
  13.              } else {     //设置输出页面编码  
  14.                      resp.setContentType("text/html;charset=gb2312");   
  15.                      resp.getWriter().write("错误页面 ,无此页");  
  16.                      return ;  
  17.               }  
  18.       } else{     //如果不是直接URL输入访问  
  19.           if(null==req.getSession().getAttribute("inWebUser")) {  
  20.                  resp.getWriter().write("非法访问");  
  21.                  return;  
  22.           } else {  
  23.                  chain.doFilter(request, response);  
  24.           }  
  25.      }  
  26. }  


知道这个方法后,感觉HttpServletRequest太好用了,就去了JavaEE API文档,看到HttpServletRequest里有几个得到URL的方法,既然有好几个,说明它们之间肯定有不同之处,针对各种实际情况运用。下面就说说它们的区别:

getServletPath:得到相对项目的url,不带项目名称        如://sys/menu/gomain.htm

  1. String path = ((HttpServletRequest)req).getServletPath();  

getRequestURI:得到相对服务器的url,和上面有不同之处,getRequestURI带有项目root,以项目名称为开头,如:/cms//sys/menu/gomain.htm

  1. String requestURI = ((HttpServletRequest)req).getServletURI();  


getContextPath:得到部署的项目名(Context-root),不是URL,仅仅项目名字  如:/cms

  1. String ContextPath = ((HttpServletRequest)req).getContextPath();  


getRequestURL:得到绝对地址url如:http://localhost:8080/cms//sys/menu/gomain.htm

  1. StringBuffer RequestURL = ((HttpServletRequest)req).getRequestURL();  


getRealPath:得到应用程序部署在服务器上的绝对路径。如:D:\apache-tomcat-5.5.23\webapps\cms\

  1. String realPath = this.fc.getServletContext().getRealPath("/");  

               System.out.println("ServletPath:"+path+"\n"+"ContextPath:"+ContextPath+"\n"+"requestURI:"+requestURI+"\n"+"RequestURL:"+RequestURL+"\n"+"realPath:"+realPath);

结果如下:

ServletPath:/sys/menu/gomain.htm
ContextPath:/cms
requestURI:/cms//sys/menu/gomain.htm
RequestURL:http://localhost:8080/cms//sys/menu/gomain.htm
realPath:D:\apache-tomcat-5.5.23\webapps\cms\ 


速记:

  • getServletPath与getRequestURI相似,区别在于有无项目名称
  • getRequestURL是带有HTTP协议的URL,
  • getContextPath得到项目的名称
  • getRealPath得到在服务器上的绝对路径
Request中getContextPath、getServletPath的区别 NULL 博文链接:https://javachikuang.iteye.com/blog/262264 立即下载

相关推荐

Gazebo仿真UUV水下机器人:从环境搭建到避障算法实战

本文详细介绍了使用Gazebo仿真平台进行UUV水下机器人开发的全流程,涵盖从环境搭建、uuv_simulator配置、传感器集成到核心避障算法实战。通过搭建水下仿真实验室并实现基于激光雷达数据的反应式避障算法,为水下机器人算法验证与开发提供了高效、低成本的解决方案。

weixin_28840591的博客 263

getServletPath()

\ getServletPath java.lang.String getServletPath() Returns the part of this request's URL that calls the servlet. This path starts with a "/" character and includes either the ser

kyi_persisting的博客 3313

飞书多维表格省钱攻略:1个专业版账号,全员合规用、权限全掌控

像运动馆、 托管班、作业辅导、少儿美术、书法、口才班等等。对于大多数中小团队而言,飞书多维表格的核心需求是“协作高效、数据可控、成本可控”,而“1个专业版账号+多联系人”的模式,恰好完美契合这三点——既不用为不必要的席位付费,又能解锁全部专业功能,还能通过精细化权限管控保障数据安全。尤其是餐饮店、乒乓球训练馆这类个体经营或小型团队,人员分工清晰、权限需求明确,采用这种模式能最大化节省成本,同时提升管理效率。无需复杂的配置,无需额外的技术支持,5分钟就能搭建起全员协作的省钱体系。

涛涛讲AI 2213

搭建网站框架踩到的坑之获取ServletPath

路径问题RealPathServletPathContextPathRequestURI获取真实ServletPath的方法 RealPath String realPath=request.getServletContext().getRealPath(); String realPath=request.getServletContext().getRealPath("XXX"); 1)取得服务应用的绝对路径(本地路径)。 2)取得服务应用的绝对路径,再和参数进行拼接。(在应用绝对路径下创建一个目录,

玄霄 1716

Anaconda安装教程傻瓜教程

网上好多教程找的我心好累,为了方便新手安装,我这边整理了大致详细的教程,参考了好几个大佬的教程,废话不多说,直接开始~ **前言:**有人纠结先安装python还是安装anaconda,这边的建议是装anaconda,就不需要单独装python了。 其次,有小伙伴的Anaconda的安装分两种情况: 情况一:电脑现在没有装python或者现在装的可以卸载掉(装Anaconda时先卸python); 情况二:电脑目前装了python,但想保留它;

zlc2351951436的博客 5万+

YOLOv12改进前必看 - YAML模型配置文件详细解读(再也不用担心通道数不匹配) 附网络结构图

YOLOv12的模型配置文件在中,里面包含yolov12的以及的不同大小的模型,本文将详细介绍一下YOLOv12模型文件中各参数的含义。

Limiiiing的博客 3275

request获取路径的方式和区别

  假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp   则执行下面向行代码后打印出如下结果: 1、 System.out.println(request.getContextPath()); 打印结果:/news  2、System.out.println(request.get...

renyucheng的专栏 731

Altium Designer(AD24/25)PCB编辑的几种方法介绍

本文介绍了Altium Designer(AD24/25)软件中PCB编辑的四种操作方法:1)通过菜单栏"Place→Component"激活;2)点击工具栏元器件图标;3)右键快捷菜单选择;4)快捷键P+C组合操作。建议初学者先通过菜单栏和快捷菜单熟悉操作,熟练后转为工具栏和快捷键以提高效率。文章配有操作示意图,帮助用户快速掌握PCB元器件放置技巧。

fydar的博客 940

HttpServletRequest的getServletPath、getServletURI、getServletURL等区别 &&如何防止用户通过直接输入URL访问网页

现在项目做到加权限了,如何防止用户通过直接输入URL访问网页,去查资料,了解到在filter里用HttpServletRequest里的方法得到该请求的父URL-fatherURL,判断该fatherURL是否为空,如果为空就表示该请求是通过直接输入URL访问的。 代码: [html] view plaincopyprint? public

梓烽学编程 1443

TC3XX - MCAL知识点(三十三):基于EB Tresos配置Tc3xx的MCAL代码如何产生中心对称的三相六路发波波形

本文用于记录如何在英飞凌 tc3xx 芯片的应用开发中,借助 EB Tresos 配置工具生成的配置代码与 MCAL 源码相结合,进而实现三相六路中心对称互补的 PWM 输出效果。外部资源需求:EB Tresos23.0以上、Tasking\Hightec编译器、示波器\逻辑分析仪。

梦想技术家 1210

一篇文章带你快速入门 MATLAB

文章目录一、认识 MATLAB 界面二、MATLAB 的运行方式三、Matlab 中的窗口1. 命令窗口2. MATLAB的程序编辑窗口3. 工作空间窗口4. 命令历史窗口5. 图形窗口6. 当前目录窗口四、MATLAB的帮助系统1. 帮助命令2. 联机帮助五、其他知识补充1. MATLAB的搜索路径2. 变量命名规则3. M文件命名规则 一、认识 MATLAB 界面 在 MATLAB Desktop 中,工具条取代了菜单和工具栏。应用程序库收纳了 MATLAB 产品系列的应用程序,单一文件应用程序打包为一

南淮北安的博客 5126

HttpServletRequest 的几种获取路径的方法

HttpServletRequest 的几种获取路径的方法

底层码农 3万+

车企自动泊车技术全解|纯视觉/多传感器融合双路线、端到端大模型革新 助力机械车位/无划线车位/极窄车位精准泊车落地

随着智能驾驶技术全面下沉,自动泊车已从高端车型专属配置,普及至十万级家用车型,成为车载核心刚需功能。但市面主流车企的泊车能力差距极大,核心差异源于传感器硬件架构、算法迭代逻辑、场景训练体系的全方位分化。传统规则式泊车算法仅适配标准划线车位,面对地库暗光、标线磨损、机械双层车位、极窄靠墙车位、无划线空地泊车等真实长尾场景极易失效。

getusushu的博客 105

关于request.getServletPath()返回路径问题的探究

前缀匹配:如 /down/* 1.仅仅一个Servlet情况下: 请求URL:http://127.0.0.1:8080/free/down/xxx/yyy/123.jpg,其中/free为ContextPath。 package my; import java.io.IOException; import javax.servlet.ServletException; import javax...

代码搬运工 4481

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

getContextPath、getServletPath、getRequestURI、getRequestURL、getRealPath、getPathInfo的区别;URI和URL的区别比较;

本篇博客的目的是:在【OA系统十七:请假功能四:编写Controller代码;(实现请假申请的控制器;仅仅涉及新增部分的Controller代码)】中的遇到了【String uri = request.getRequestURI();】,而对【String uri = request.getRequestURI();】有点不清楚;本篇博客就是为了详细阐述这个问题的。 本篇博客参考和转载的博客有:【request.getRequestURL()和request.getRequestURI()的区别】,.

小枯林的博客 3887

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

关于request.getServletPath(),request.getContextPath()的总结

最近对于request中的几种“路径”有点混淆,查找网上资源都没有很好的总结,希望此文章能够帮助我理解一下这几种“路径”。 +++++++++++++++++++++++++++++++++++++++++++++++++ 本文章主要讨论以下几种request获取路径的方法: request.getServletPath() request.getPathInfo() request.g...

jwnba24的博客 6万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

javaWeb中获取路径的几种方法详解,request.getServletPath(),request.getContextPath()的区别

request.getServletPath() 首先从字面我们就知道这个方法获得的是servlet的路径 假如我们在tomcat下部署了一个名为store的项目 我们访问:http://localhost:8080/store/UserServlet?method=findByName 其中UserServlet就是我们的servlet,那么如果 system.out.println(request.getServletPath); //输出结果就是/UserServlet 记住不带参数 现在大家明白了

Q36_524的博客 3315

关于request.getServletPath(),request.getContextPath()等获取路径的总结

最近在学习javaweb的过程中,遇到了一些相对路径和绝对路径的问题,对于几种request获取路径方法了解的不是很清楚,在网上发现了这篇文章,通俗易懂,希望可以帮助到大家。 本文章主要讨论以下几种request获取路径的方法: request.getServletPath() request.getPathInfo() request.getContextPath() request.getRe...

weixin_42971543的博客 3469

getContextPath()・getRequestURI・getServletPath・getPathInfo区别

getContextPath(),getRequestURI() ,getServletPath() ,getPathInfo()区别

张紫娃的博客 1413

request.getServletPath(),request.getContextPath()

2018-11-2416:34:33 1. getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括。 2. getPageInfo():与getServletPath()获取的路径互补,能够得到的是“url-pattern”中*d的路径部分 3. getContextPath():获取项目的根路径 4. getRequestU...

weixin_34318956的博客 386

request.getServletPath()和request.getPathInfo()用法

在 Web 中,我们通常需要获取 URL 相对于 Webapp 的路径,主要是下面的几个方法: request.getServletPath() request.getPathInfo() request.getContextPath() request.getRequestURI() 其中request.getRequestURI()的返回值包含了request.getContext...

以爱护甲,爱满枫林。 2504

Servlet 中 url-pattern 和 getServletPath 的一点疑惑

对 Servlet 处理请求有点不太清楚,所以花了半天时间把他搞搞懂。 总结: 前提:在web.xml中配置 url-pattern 为 *.do (1)getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括。 (2)login.do,find.do 等 .do 结尾的,为表单的 action 所反馈的对象、超链接 href...

宝付支的博客 959

getRequestURI,getRequestURL的区别

test1.jsp======================= 跳转到test2 test2.jsp======================= String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+reque

稻香的专栏 621

HttpServletRequest、HttpServletResponse对象的常用方法getServletPath()、getSession()、getRequestDispatcher()等

HttpServletRequest和ServletRequest都是接口,HttpServletRequest继承自ServletRequest ;1、获取项目路径 请求地址: http://localhost:8090/JSPStudy/09/index.jspreq.getServletPath(): 获取请求地址 ,得到相对项目的url,不带项目名称           String se...

u012671435的博客 1099

getServletPath

log.debug("getRequestURI() is : " + getRequest().getRequestURI()); log.debug("getRequestURL() is : " + getRequest().getRequestURL()); log.debug("getServletPath() is : " + get

lyz19890927的专栏 944
上一篇: Eclipse中添加文档注释快捷键
下一篇: 13位时间戳(单位为毫秒)转换为10位字符串(单位为秒)
jorny_java
博客等级 码龄9年 4粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值