a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 147|回复: 2

[其他] JAVA技巧:Java相对路径和绝对路径

[复制链接]
发表于 2012-8-4 12:28:23 | 显示全部楼层 |阅读模式
Java相对路径和绝对路径时间:2011-01-04 来源:环球网校 责任编辑:IT考试论坛 6 N6 G# I9 X, |' K

5 b: }0 e  P7 L+ X' j! c) c# l0 U! x' N, b& n) i4 ~
1.根基概念的理解
% y/ o7 p' r1 l+ j+ g- r6 W  绝对路径:绝对路径就是你的主页尚罾υ件或目录在硬盘上真正的路径,(URL和物理路径)例如:  i) M$ n! c1 {  {: A2 @, o7 ^( C) a2 J
  C:xyz est.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。! o# o- y( U6 f! J! Y
  相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
- W3 K" o2 |2 d  |) ]1 v/ X9 V  Servlet中,"/"代表Web应用的跟目录。和物理路径的相对暗示。例如:"./" 代表当前目录,"../"代表上级目录。这种近似的暗示,也是属于相对路径。" o3 M) C: V* i; X- `+ V
  此外关于URI,URL,URN等内容,请参考RFC相关文档尺度。1 a8 x& F& A0 f; d- D
  RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,. b0 n  w2 Y6 s
  (http://www.ietf.org/rfc/rfc2396.txt)4 O( {6 r! [1 o3 _7 A% v) Y- |/ L
2.关于JSP/Servlet中的相对路径和绝对路径 " u4 ]: [3 J  Q2 f
  2.1处事器端的地址
+ D/ d1 M" U/ H  处事器端的相对地址指的是相对于你的web应用的地址,这个地址是在处事器端解析的(分歧于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是嗣魅这时辰在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http: //192.168.0.1/webapp/的。/ n$ [4 P% J. U0 u
  其用到的处所有:1 R' S& p7 L1 W( d8 ]
( G4 j% B  j( E2 y) x# i
  forward:servlet中的request.getRequestDispatcher(address);这个address是在处事器端解析的,所以,你要forward到a.jsp应该这么写:request.getRequestDispatcher(“/user /a.jsp”)这个/ 相对于当前的web应用webapp,其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。 sendRedirect:在jsp中
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:28:24 | 显示全部楼层

JAVA技巧:Java相对路径和绝对路径

</p>  2.2、客户端的地址
$ K; J; z, U' h  所有的html页面中的相对地址都是相对于处事器根目录(http://192.168.0.1/)的,而不是(跟目录下的该Web应用的目录) http://192.168.0.1/webapp/的。 Html中的form表单的action属性的地址应该是相对于处事器根目录(http://192.168.0.1/)的,所以,如不美观提交到a.jsp 为:action="/webapp/user/a.jsp"或action=""/user/a.jsp;
- T7 l! C! \/ n% o5 k4 O8 H5 O! K  提交到servlet为actiom="/webapp/handleservlet" Javascript也是在客户端解析的,所以其相对路径和form表单一样。3 l0 l" D1 l! c2 B
  是以,一般情形下,在JSP/HTML页面等引用的CSS,Javascript.Action等属性前面最好都加上
/ q8 g, |% X; D% B  ,以确保所引用的文件都属于Web应用中的目录。此外,应该尽量避免使用近似".","./","../../"等近似的相对该文件位置的相对路径,这样当文件移动时,很轻易出问题。
4 H* n( Y0 S) {/ K/ o( Y- v/ j3. JSP/Servlet中获适当前应用的相对路径和绝对路径
; i& o8 [4 A) B  l, A/ ?$ J  3.1 JSP中获适当前应用的相对路径和绝对路径
& _+ n1 f: V( I* N2 ^# s  根目录所对应的绝对路径:request.getRequestURI()8 G: S+ C  t$ [6 b6 o0 r4 `
  文件的绝对路径  :application.getRealPath(request.getRequestURI());. {" E0 o2 e9 M, T6 ?
  当前web应用的绝对路径 :application.getRealPath("/");) f; F. t# W- G1 q+ r
  取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()- i/ c2 e/ z1 j& H' Q% f; S1 G
  3.2 Servlet中获适当前应用的相对路径和绝对路径# u2 c' l2 j1 \, s
  根目录所对应的绝对路径:request.getServletPath();7 X6 Y, s0 S( e" {' u
  文件的绝对路径 :request.getSession().getServletContext().getRealPath
$ ]1 ^9 s, o% n& C( a9 g2 \# w0 c  (request.getRequestURI())' Q% }$ S! }0 s" ~" C
  当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");" M2 Q' @  f. _8 \% s# h
  (ServletContext对象获得几种体例:/ c; j2 T' a5 a/ ~! {/ V. R1 B# A" {
  javax.servlet.http.HttpSession.getServletContext()$ {+ w2 @7 |, L9 ^! G
  javax.servlet.jsp.PageContext.getServletContext()( k5 ~  ^7 q. ~6 _& v$ M7 n
  javax.servlet.ServletConfig.getServletContext()
, t  Q/ e: B, q1 ^; A: b$ v  )
. J) |- {8 h1 z4 Y2 |  F9 ^: r4.java 的Class中获得相对路径,绝对路径的体例
7 v. i# f  D6 c8 G  4.1零丁的Java类中获得绝对路径
" C- z, J) t. j* P  按照java.io.File的Doc文挡,可知:. W: B7 x( c& X
  默认情形下new File("/")代表的目录为:System.getProperty("user.dir")。4 }; I: I( k' ^
  一下轨范获得执行类的当前路径
% g+ v$ h4 n; w" A, x  package org.cheng.file;
+ m5 Y8 M! b( }* h. T0 r$ }, [  import java.io.File;3 O' }! o5 a1 ~
  public class FileTest {  \) T! K  y3 ]* l$ A
  public static void main(String[] args) throws Exception {* A: _3 r6 ~% d- R/ {9 J
  System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
- c2 t1 ]3 X1 N* p0 B  System.out.println(FileTest.class.getClassLoader().getResource(""));
, A1 b( X: A$ r- t1 a8 a  U; K4 H  System.out.println(ClassLoader.getSystemResource(""));1 o. v0 ]5 ?  ~# D  X& v
  System.out.println(FileTest.class.getResource(""));- }& A. e  {4 o
  System.out.println(FileTest.class.getResource("/"));
" I+ n( O8 D9 h% I3 D: g  //Class文件地址路径
! x- z6 v* K; `+ c  System.out.println(new File("/").getAbsolutePath());
- q2 |( V+ b* y- f# w  System.out.println(System.getProperty("user.dir"));
* I5 [! v6 D$ U# m$ o" D7 E  }
! a9 `3 W  c8 [! R7 ]% Q( h2 J  p; i( V+ K5 A8 b; K+ S% r
  }
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-4 12:28:25 | 显示全部楼层

JAVA技巧:Java相对路径和绝对路径

</p>  4.2处事器中的Java类获适当前路径" _' [# p% q3 Q2 k
  (1).Weblogic) r- T; a& r( ^4 Q3 ^, W3 o
  WebApplication的系统文件根目录是你的weblogic安装地址根目录。
2 j  i, ^2 ?- N5 D: d7 ^  例如:如不美观你的weblogic安装在c:eaweblogic700.....& K0 \% H& a+ o6 S6 m6 ?3 S
  那么,你的文件根路径就是c:.) W  ]) V3 m& }9 d4 O1 L
  所以,有两种体例能够让你访谒你的处事器端的文件:# \! B% G- U- c# f+ [6 c
  a.使用绝对路径:8 N, ]9 B5 B- O4 |0 A
  好比将你的参数文件放在c:yourconfigyourconf.properties,% N# v4 d% r' c4 ?; m& o. c* G
  直接使用 new FileInputStream("yourconfig/yourconf.properties");. K2 R8 M; V: x# o
  b.使用相对路径:
4 R& u2 }: t7 \# ]1 p  相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放  N$ k7 T9 a* O+ h
  在yourwebappyourconfigyourconf.properties,
0 o$ ^# d0 J% W1 b& ^: r  这样使用:
+ k- J8 b8 {# [* s  new FileInputStream("./yourconfig/yourconf.properties");
0 s! p4 `) g8 \" {) D+ p! d  这两种体例均可,自己选择。9 l: x  F) k/ g
  (2).Tomcat
1 |9 b, O7 @' X8 M  在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin
1 D& `7 T) }4 @8 E6 o  (3).Resin+ S9 Q9 j2 ?+ s- M& g5 |
  不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET" w% g: U3 ?' E; t* k, [" Z: L" u! u, Y
  的路径为根.好比用新建文件法测试File f = new File("a.htm");! Y9 G# @! T' X3 }
  这个a.htm在resin的安装目录下% P+ }5 M$ X+ Z4 C& A. H7 _
  (4).若何读相对路径哪?9 L) u  o# n( Y* d
  在Java文件中getResource或getResourceAsStream均可+ O0 A+ x, ?0 c2 `* |
  例:getClass().getResourceAsStream(filePath);//filePath可所以"/filename",这里的/代表web8 ]( F4 O& u" M/ r% N
  发布根路径下WEB-INF/classes
+ V# p6 T! Q  f) \  默认使用该体例的路径是:WEB-INF/classes。已经在Tomcat中测试。
- K, o8 e3 I7 X  ]! |$ c$ Z总结:
1 q, M; @7 g; T  经由过程膳缦沔内容的使用,可以解决在Web应用处事器端,移动文件,查找文件,复制
, q8 ?' u& e  Y( p  删除文件等操作,同时对处事器的相对地址,绝对地址概念加倍清楚。
3 h- U6 e8 b( r. j2 Y1 V/ I  建议参考URI,的RFC尺度文挡。同时对Java.io.File. Java.net.URI.等内容体味透辟0 ~+ N4 `( H" f) a" _) s, ]
  对其他方面的理解可以加倍深切和透辟。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-22 11:19 , Processed in 0.202214 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表