>>分享Java Web开发技术,并且对孙卫琴的《Tomcat与Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 25267 个阅读者 刷新本主题
 * 贴子主题:  在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开发-->映射组成关系
  Java网络编程-->XML数据处理
  精通Spring-->Vue组件开发基础
  Vue3开发-->计算属性和数据监听
  统计网站访问次数的过滤器
  JSP 点击量统计范例
  一个最简单的JSP入门程序
  Servlet 点击计数器范例
  Servlet生成HTTP 响应头
  Servlet的运作原理
  一文看懂web服务器、应用服务器、web容器、反向代理服务器区...
  Java Web 开发必须掌握的三个技术:Token、Cookie、Session
  Java动态追踪技术探究
  JSP自定义标签的用法
  JSP 到数据库查询的数据 分页显示
  Tomcat版本与JDK版本的对应关系
  JavaWeb分页的简单实现
  JavaEE的发展趋势
  Java Servlet完全教程
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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