</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
} |