zoukankan      html  css  js  c++  java
  • java(web)相对路径,绝对路径

    1、定义

      绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
    C:/xyz/test.txt 代表了test.txt文件的绝对路径。http://www.baidu.com/index.htm也代表了一个
    URL绝对路径。

      相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
    Servlet中,"/"代表Web应用的根目录。和物理路径的相对表示。例如:"./" 代表当前目录,
    "../"代表上级目录。这种类似的表示,也是属于相对路径。

    2、JSP/Servlet中的相对路径写法

      2.1带有"/"的相对路径

      要点:确定是服务器调用  还是  浏览器调用

      (1)服务器端带有"/"的相对路径(服务器调用)

        指的是相对于你的web项目的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候
    在jsp和servlet中的相对地址应该是相对于你的web项目,即相对于http://localhost:8080/webapp/的。

      例如:request.getRequestDispatcher("/reg/reg.jsp").forward(request,response)

    这里的地址就是服务器端调用,“/”相对于当前的web应用webapp,
    其绝对地址就是:http://localhost:8080/webapp/reg/reg.jsp

      (2)客户端带有"/"的相对路径(浏览器调用)

       所有的html页面中的相对地址都是相对于服务器根目录(http://localhost:8080/)的,
    而不是(跟目录下的该Web应用的目录)http://localhost:8080/webapp/的。
     Html中的form表单的action属性的地址应该是相对于服务器根目录(http://localhost:8080/)的

    例如:如果提交到toreg.jsp为:action="/webapp/reg.jsp"或action="<%=request.getContextPath()%>"/reg.jsp;
      提交到servlet为actiom="/webapp/regservlet"  
       Javascript也是在客户端解析的,所以其相对路径和form表单一样。
     

      因此,一般情况下,在JSP/HTML页面等引用的CSS,Javascript.Action等属性前面最好都加上
    <%=request.getContextPath()%>,以确保所引用的文件都属于Web应用中的目录。
    另外,应该尽量避免使用类似".","./","../../"等类似的相对该文件位置的相对路径,这样
    当文件移动时,很容易出问题。

     2.2不带"/"的相对路径

    例如,假如当前的页面路径是http://localhost:8080/myWebApp/login.jsp那么在这个页面访问"main.jsp"即是访问http://localhost:8080/myWebApp/main.jsp

    也就是说,使用不带"/"的相对路径  那么访问的是  当前页面路径  所属 目录下的文件路径(这个特征无论是服务器端还是客户端都适用)

      

    3. JSP/Servlet中获得当前应用的相对路径和绝对路径
    3.1 JSP中获得当前应用的相对路径和绝对路径
     根目录所对应的绝对路径:request.getRequestURI()
     文件的绝对路径     :application.getRealPath(request.getRequestURI());
     当前web应用的绝对路径 :application.getRealPath("/");
     取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()

    3.2 Servlet中获得当前应用的相对路径和绝对路径
     根目录所对应的绝对路径:request.getServletPath();
     文件的绝对路径    :request.getSession().getServletContext().getRealPath
    (request.getRequestURI())   
     当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
         (ServletContext对象获得几种方式:
           javax.servlet.http.HttpSession.getServletContext()
           javax.servlet.jsp.PageContext.getServletContext()
           javax.servlet.ServletConfig.getServletContext()
         )

    3.3 在SSH各个层次获得项目根目录 REQUEST 等

    Java代码 
    1. 1.System.out.println(ServletActionContext.getServletContext().getRealPath("/"));     
    2. 2.ystem.out.println(Struts2Utils.getParameter("loginName"));    
    3.     System.out.println(ServletActionContext.getServletContext().getRealPath("/"));  
    4. System.out.println(Struts2Utils.getParameter("loginName"));  


    利用了STRUTS2的ServletActionContext类
    他是线程安全的 使用了threadlocal

    或者利用springside的Struts2Utils类
    他封装了struts2的ServletActionContext类

  • 相关阅读:
    selenium操作浏览器-窗口切换
    selenium操作浏览器
    selenium+java+chrome环境搭建
    python-s and s.strip()
    java-趣味算法
    基础正则表达式介绍与练习
    python网络爬虫,知识储备,简单爬虫的必知必会,【核心】
    django模型——数据库(二)
    模型——数据库(一)
    django的模板(二)
  • 原文地址:https://www.cnblogs.com/Lanyuxuan/p/5296047.html
Copyright © 2011-2022 走看看