java web 相对路径_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=""/reg.jsp;

提交到servlet为actiom="/webapp/regservlet"

Javascript也是在客户端解析的,所以其相对路径和form表单一样。

因此,一般情况下,在JSP/HTML页面等引用的CSS,Javascript.Action等属性前面最好都加上

,以确保所引用的文件都属于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.System.out.println(ServletActionContext.getServletContext().getRealPath("/"));

2.ystem.out.println(Struts2Utils.getParameter("loginName"));

System.out.println(ServletActionContext.getServletContext().getRealPath("/"));

System.out.println(Struts2Utils.getParameter("loginName"));

利用了STRUTS2的ServletActionContext类

他是线程安全的 使用了threadlocal

或者利用springside的Struts2Utils类

他封装了struts2的ServletActionContext类

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值