>>分享Java Web开发技术,并且对孙卫琴的《Tomcat与Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 28594 个阅读者 刷新本主题
 * 贴子主题:  在Java Web应用中获取绝对路径和相对路径 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-03-30 19:33:00     消息  查看  搜索  好友  邮件  复制  引用

          request.getRealPath() 这个方法已经不推荐使用了,代替方法是:

          request.getSession().getServletContext().getRealPath()

          从Request对象中可以获取各种路径信息,以下例子:  

假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下  
String path =  request.getContextPath();  

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/" ;  

String remoteAddress= request.getRemoteAddr();  

String servletPath= request.getServletPath();  

String realPath=request.getRealPath("/" );  

String remoteUser= request.getRemoteUser();  

String requestURI= request.getRequestURI();  

out.println("path:"+path+"<br>" );  

out.println("basePath:"+basePath+"<br>" );  

out.println("remoteAddr:"+remoteAddress+"<br>" );  

out.println("servletPath:"+servletPath+"<br>" );  

out.println("realPath:"+realPath+"<br>" );  

out.println("remoteUser:"+remoteUser+"<br>" );  

out.println("requestURI:"+requestURI+"<br>" );  

结果:  

path:/ WebDemo  

basePath:http: // localhost:8683/WebDemo/  

remoteAddr:127.0.0.1  

servletPath:/ index.jsp  

realPath:D:\apache-tomcat-6.0.13 \webapps\WebDemo\  

remoteUser: null  

requestURI:/WebDemo/ index.jsp  

从上不难看出request各个对应方法所代表的含义  

参考servlet中的接口:

         request.getScheme();
返回的协议名称,默认是http

         request.getServerName()
返回的是你浏览器中显示的主机名,你自己试一下就知道了

         getServerPort()
获取服务器端口号

          例如:

<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/servlet/test/*</url-pattern>
</servlet-mapping>

         dwr为工程名

    http://localhost:8080/dwr/servlet/test/joejoe1991/a.html?name=test

    getPathInfo() 返回的仍然是:

    "/joejoe1991/a.html" ,而并不包括后面的"?name=test";

    在servlet里用this.getServletContect().getRealPath()

    从request获取各种路径总结

                request.getRealPath("url"); // 虚拟目录映射为实际目录

               request.getRealPath("./");    // 网页所在的目录

                request.getRealPath("../"); // 网页所在目录的上一层目录

                request.getContextPath();    // 应用的web目录的名称

                            如http://localhost:7001/bookStore/

                           /bookStore/ => [contextPath] (request.getContextPath())

                获取Web项目的全路径

              String strDirPath = request.getSession().getServletContext().getRealPath("/");

                以工程名为TEST为例:

                (1)得到包含工程名的当前页面全路径:request.getRequestURI()

                 结果:/TEST/test.jsp

                (2)得到工程名:request.getContextPath()

                结果:/TEST

                (3)得到当前页面所在目录下全名称:request.getServletPath()

                结果:如果页面在jsp目录下 /TEST/jsp/test.jsp

                (4)得到页面所在服务器的全路径:application.getRealPath("页面.jsp")

                结果:D:\resin\webapps\TEST\test.jsp

                (5)得到页面所在服务器的绝对路径:
                absPath=new java.io.File(application.getRealPath(
                                 request.getRequestURI())).getParent();

                结果:D:\resin\webapps\TEST

                2.在类中取得路径:

                (1)类的绝对路径:Class.class.getClass().getResource("/").getPath()

                结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/

                (2)得到工程的路径:System.getProperty("user.dir")

                结果:D:\TEST

                3.在Servlet中取得路径:

                (1)得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。

                结果:E:\Tomcat\webapps\TEST

               (2)得到IE地址栏地址:request.getRequestURL()

               结果:http://localhost:8080/TEST/test

              (3)得到相对地址:request.getRequestURI()

              结果:/TEST/test


----------------------------
原文链接:https://www.cnblogs.com/hello-yao-ge/p/6606564.html

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-03-30 19:33:00 重新编辑]
  Java面向对象编程-->数据类型
  JavaWeb开发-->数组
  JSP与Hibernate开发-->Web运作原理(Ⅱ)
  Java网络编程-->JSP中使用JavaBean(Ⅱ)
  精通Spring-->Java对象持久化技术概述
  Vue3开发-->域对象在持久化层的四种状态
  HTTP 响应头信息
  JSP 表达式语言
  JSP 标准标签库(JSTL) 概览
  JSP 服务器响应:自动刷新时间的范例
  Servlet 发送电子邮件
  Apache网页与安全优化——网页压缩及缓存(理论实践相结合!...
  设置和获取Cookie
  《Tomcat与Java Web》新版即将出炉,业界大咖们力荐
  Java Web开发 快速入门
  JSTL标签库的标签用法
  JSP自定义标签的用法
  JSP实现分页展示MySQL数据库中的数据
  用Servlet API中的Part接口实现文件上传
  在web应用中使用数据库连接池
  Tomcat容器管理安全的几种验证方式
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。