⑴ J2EE web项目,绝对路径和相对路径如何设置与获取
在开发Web方面的应用时, 经常需要获取服务器中当前WebRoot的物理路径。
如果是Servlet , Action , Controller, 或者Filter , Listener , 拦截器等相关类时, 我们只需要获得ServletContext, 然后通过ServletContext.getRealPath("/")来获取当前应用在服务器上的物理地址。
如果在类中取不到ServletContext时,有两种方式可以做到:
(1)利用Java的类加载机制:调用 XXX.class.getClassLoader().getResource(""); 方法来获取到ClassPath , 然后处理获得WebRoot目录。这种方式只能是该class在WebRoot/WEB-INF/classes下才能生效, 如果该class被打包到一个jar文件中, 则该方法失效。这时就应该用下面一种方式。
(2)spring框架的思路,在WEB-INF/web.xml中,创建一个webAppRootKey的param,指定一个值(默认为webapp.root)作为键值,然后通过Listener, 或者Filter,或者Servlet 执行String webAppRootKey = getServletContext().getRealPath("/"); 并将webAppRootKey对应的webapp.root 分别作为Key,Value写到System Properties系统属性中。之后在程序中通过System.getProperty("webapp.root")来获得WebRoot的物理路径。
⑵ javaweb中怎么获取文件的绝对路径
在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。
另:在Jsp,Servlet,Java中详细获得路径的方法!
1.jsp中取得路径:
以工程名为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)类的绝对路径:String u=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()
(3)得到相对地址:request.getRequestURI()
结果:/TEST/test
⑶ 关于WEB-INF下的jsp,使用绝对路径如何访问
WEB-INF下的东西是禁止直接访问的。如果这个页面是你的,要想让人访问最好不要放在这个目录下。如果一定放在那里。你可以使用:
request.getRequestDispatcher("/WEB-INF/test.jsp").forward(request,response);
所以你想直接添加一个链接那肯定是没发过去的。你可以先跳到一个jsp,那个jsp里写上上面的代码就可以了。
⑷ 如何在web页面获取文件绝对路径
Server.MapPath
⑸ javaweb中什么时候使用绝对路径,什么时候用相对路径
就我的经验来说,没有什么绝对的情况,想用什么就用什么。一般相对路径,写得少嘛。或者你不想把所有的路径暴露出来,那就用相对路经吧。有时候,发现路径不识别的时候,我就会两种路径都写写,去尝试一下哪种对。
⑹ web中html中的相对路径和绝对路径怎么找
路径是指文件在服务器中的存储位置。我们在使用计算机时要找到所需的文件时就必须知道文件的绝对路径,例如,只要看到这个路径d:/web/logo.gif,我们就知道logo.gif文件是在d盘的web目录下。类似于这样完整的描述文件位置的路径就是绝对路径。
绝对路径还有一种表示方法就是以服务器命名开始(如在本机中http://localhost)的完整描述文件位置的路径,如通过IIS简历一个站点,站点下面有个文件叫test.htm,那么用绝对路径来显示这个文件就是http://localhost//test.htm。
相对路径主要用在我们的网站上,当ASP在发布一个目录时,如果在Web上也像d:/web/test.htm一样,就不会显示在正常的页面。这时需要通
过站点来访问相对目录,网页上所有Web页面程序和所显示的图片都是通过相对路径来访问的。如里面的图片访问就是images/logo.gif我们可以
用"../"来表示上一级目录,"../../"表示上上级目录,依此类推。
⑺ web页面连接是有相对路径和绝对路径,他们之间有什么区别和联系
绝对路径是指比如你把这个index.html页面放在电脑的真实位置,如:我D:\webapps\index.html,那这个index.html的绝对路径就是你电脑上的真实路径"D:\webapps\index.html"
相对路径是指,如果你要把一个web页面发布,让别的电脑能够访问,那么你必须将此页面放在一个服务器的目录,如这个服务器的目录是在"D:\webapps"那么你的网站的index.html的相对路径就就是"\index.html",如果你页面还包含了一些图片文件,图片文件又另外存放在一个文件夹,如"\img\a.jpg",那么你这张图片的绝对路径就是"D:\webapps\img\a.jpg",你这张图片的相对路径就是"\img\a.jpg".