Java怎么获取网页中相对路径的绝对路径

今天看一份报纸的网页:http://ctdsb.cnhubei.com/HTML/ctdsb/20101029/ctdsb1211884.html,想到一个问题。
网页源码中图片的路径是相对路径,
它的绝对路径就是这样的:
用java的HTTPConnection可以获得某个网页的源码,获得的源码里的图片是相对路径的,用Java应该怎么由......\ctdsb\20101029\m_20100f01a29c_7.jpg来获得http://ctdsb.cnhubei.com/ctdsb/20101029/m_20100f01a29c_7.jpg呢
小弟只有5分,呵呵不好意思。

[quote]enet_java 写道
看来没有实践的发言可靠性比较差!!!

目录rmrb/存在两个目录
html/2010-10/30/nw.D110000renmrb_20101030_4-01.htm
res/1/20101030/1288391715375_1.jpg

nw.D110000renmrb_20101030_4-01.htm引入的图片相对路径就是 ../../../res/1/20101030/1288391715375_1.jpg

这样你如果要获取图片的真实路径就像你说的,应该是http://paper.people.com.cn/rmrb/res/1/20101030/1288391715375_1.jpg
所以前面的说法是不正确的,../代表了目录的深度,也就是需要根据这个../来确定图片你的真实路径,../代表需要上一级目录,有几次代表URL中从文件(nw.D110000renmrb_20101030_4-01.htm)需要向上几级目录。
然后在追加后面的部分(/res/1/20101030/1288391715375_1.jpg)
不知道能不能明白。

越来越靠谱了 问题是怎么判断相对路径中有几个../或..\? [/quote]

利用正则表达式就可以做到了。
表达式规则:(.{2}/+)
通过Matcher可以得到groupcount
然后可以将getPath获取的部分,利用/进行分割
rmrb/res/1/20101030

然后就可以根据../的个数groupcount 获取到需要得到目录级别,譬如:如果是3 就是rmrb/
如果是2 就是 res/

可以一次类推。

得到下面的信息

String context = request.getContextPath();
String server = request.getServerName();
int port = request.getServerPort();

然后就可以组装据对地址的串了。

楼主的意思是不是想从外网链接原图片?

已知网页地址
http://ctdsb.cnhubei.com/HTML/ctdsb/20101029/ctdsb1211884.html是当前

而图片相对与网页的地址是
src=......\ctdsb\20101029\m_20100f01a29c_7.jpg

如何得到
http://ctdsb.cnhubei.com/ctdsb/20101029/m_20100f01a29c_7.jpg

其实和 容易就找出 个通用的办法啊
[quote]已知网页地址
http://ctdsb.cnhubei.com/HTML/ctdsb/20101029

而图片相对与网页的地址是
src=......\ctdsb\20101029\m_20100f01a29c_7.jpg [/quote]

不管 哪个 [color=red]。。/[/color] 有多少个
有一个 上面的url 就去掉一个 /***从最后开始算! 然后直接加在最后面 就OK !

看了看那,这篇文章上写的太明白了,呵呵!!
LZ也参考一下吧。
http://www.iteye.com/topic/117978

[quote]不管 哪个 ..\ 有多少个
有一个 上面的url 就去掉一个 /***从最后开始算! 然后直接加在最后面 就OK !

不太懂你的意思 [/quote]

他的意思就是从跟开始 ......\ctdsb\20101029\m_20100f01a29c_7.jpg

不要考虑......\,直接忽略

获取到http://server:port/context/以后,之间将\ctdsb\20101029\m_20100f01a29c_7.jpg 追加到后面就可以。

url.getPath 获取到的就是了。

其实这个../../../ctdsb\20101029\m_20100f01a29c_7.jpg
都是相对根路径的,都是这个的缩写 http://xxxx.xx.com/ctdsb/20101029/m_20100f01a29c_7.jpg 只要是可以得到http://xxxx.xx.com/ 就可以了!!
context对这个的意义不大。

一开始我理解错了,你获取的是对方的url,我理解成通过程序过获取自己的了
:oops:

看来没有实践的发言可靠性比较差!!! 8)

目录rmrb/存在两个目录
html/2010-10/30/nw.D110000renmrb_20101030_4-01.htm
res/1/20101030/1288391715375_1.jpg

nw.D110000renmrb_20101030_4-01.htm引入的图片相对路径就是 ../../../res/1/20101030/1288391715375_1.jpg

这样你如果要获取图片的真实路径就像你说的,应该是http://paper.people.com.cn/rmrb/res/1/20101030/1288391715375_1.jpg
所以前面的说法是不正确的,../代表了目录的深度,也就是需要根据这个../来确定图片你的真实路径,../代表需要上一级目录,有几次代表URL中从文件(nw.D110000renmrb_20101030_4-01.htm)需要向上几级目录。
然后在追加后面的部分(/res/1/20101030/1288391715375_1.jpg)
不知道能不能明白。 :)