[ZZ]JSP、Servlet中的相对路径和绝对路径
作者:mangix 日期:2007-12-10 18:43:41
JSP和Servlet中的绝对路径和相对路径问题困扰了我好几天,经过努力之后将其部分心得和大家共享。
前提:假设你的Http地址为http://192.168.0.1/你的web应用为webapp,那么你的web应用URL为http://192.168.0.1/webapp/
web应用的目录结构:
webapp/
web-inf/
classes/
lib/
web.xml
<servlet-mapping>
<servlet-name>handleservlet</servlet-name>
<url-pattern>/handleservlet</url-pattern>此映射是相对于当前web应用的
</servlet-mapping>
user/
a.jsp
b.jsp
images/
css/
js/
所有相对路径都是由“/”开头的。如:/image/a.gif,/user/main.jsp,大家知道在html中的相对路径是这样的:
有个html文件:a.html,其中有<link href="one.css" rel="stylesheet" type="text/css">,其中href属性表示引用的css文件的路径。
one.css:表示one.css和a.hmtl处于同一个目录
user/one.css:表示one.css处于a.html所在目录的子目录user中。
../one.css:表示one.css位于a.hmtl上一级目录下,
../../one.css:表示one.css位于a.hmtl上一级目录的上一级目录下,
./:表示和a.hmtl同一目录
我们称上述相对路径为html相对路径
1、服务器端的地址
服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://192.168.0.1/webapp/的。
其用到的地方有:
forwarder:servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,所以,你要forwarder到a.jsp应该这么写:request.getRequestDispatcher(“/user/a.jsp”)这个/相对于当前的web应用webapp,其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。
sendRedirect:在jsp中<%response.sendRedirect("/rtccp/user/a.jsp");%>
2、客户端的地址
所有的html中的相对地址都是相对于http://192.168.0.1/的,而不是http://192.168.0.1/webapp/的。
Html中的form表单的action属性的地址应该是相对于http://192.168.0.1/的,所以,如果提交到a.jsp为:action=”/webapp/user/a.jsp”;提交到servlet为action=”/webapp/handleservlet”
Javascript也是在客户端解析的,所以其相对路径和form表单一样。
3、站点根目录和css路径问题
我们称类似这样的相对路径/webapp/….为相对于站点根目录的相对路径。
当在jsp中引入css时,如果其相对路径相对于当前jsp文件的,而在一个和这个jsp的路径不一样的servlet中forwarder这个jsp时,就会发现这个css样式根本没有起作用。这是因为在servlet中转发时css的路径就是相对于这个servlet的相对路径而非jsp的路径了。所以这时候不能在jsp中用这样的路径:<link href="one.css" rel="stylesheet" type="text/css">或者<link href="../../one.css" rel="stylesheet" type="text/css">类似href="one.css"和../../one.css的html相对路径是相对于引用这个css的文件的相对路径。而在servlet中转发时就是相对于这个servlet的相对路径了,因为jsp路径和servlet路径是不一样的,所以这样的引用肯定是出错的。
所以这个时候,要用站点根目录,就是相对于http://192.168.0.1/的目录,以“/”开头。
因此上述错误应更正为href=”/webapp/one.css”类似的站点根目录的相对目录。这样在servlet转发后和jsp中都是相对于站点根目录的相对路径,就能正确使用所定义的css样式了。
前提:假设你的Http地址为http://192.168.0.1/你的web应用为webapp,那么你的web应用URL为http://192.168.0.1/webapp/
web应用的目录结构:
webapp/
web-inf/
classes/
lib/
web.xml
<servlet-mapping>
<servlet-name>handleservlet</servlet-name>
<url-pattern>/handleservlet</url-pattern>此映射是相对于当前web应用的
</servlet-mapping>
user/
a.jsp
b.jsp
images/
css/
js/
所有相对路径都是由“/”开头的。如:/image/a.gif,/user/main.jsp,大家知道在html中的相对路径是这样的:
有个html文件:a.html,其中有<link href="one.css" rel="stylesheet" type="text/css">,其中href属性表示引用的css文件的路径。
one.css:表示one.css和a.hmtl处于同一个目录
user/one.css:表示one.css处于a.html所在目录的子目录user中。
../one.css:表示one.css位于a.hmtl上一级目录下,
../../one.css:表示one.css位于a.hmtl上一级目录的上一级目录下,
./:表示和a.hmtl同一目录
我们称上述相对路径为html相对路径
1、服务器端的地址
服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://192.168.0.1/webapp/的。
其用到的地方有:
forwarder:servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,所以,你要forwarder到a.jsp应该这么写:request.getRequestDispatcher(“/user/a.jsp”)这个/相对于当前的web应用webapp,其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。
sendRedirect:在jsp中<%response.sendRedirect("/rtccp/user/a.jsp");%>
2、客户端的地址
所有的html中的相对地址都是相对于http://192.168.0.1/的,而不是http://192.168.0.1/webapp/的。
Html中的form表单的action属性的地址应该是相对于http://192.168.0.1/的,所以,如果提交到a.jsp为:action=”/webapp/user/a.jsp”;提交到servlet为action=”/webapp/handleservlet”
Javascript也是在客户端解析的,所以其相对路径和form表单一样。
3、站点根目录和css路径问题
我们称类似这样的相对路径/webapp/….为相对于站点根目录的相对路径。
当在jsp中引入css时,如果其相对路径相对于当前jsp文件的,而在一个和这个jsp的路径不一样的servlet中forwarder这个jsp时,就会发现这个css样式根本没有起作用。这是因为在servlet中转发时css的路径就是相对于这个servlet的相对路径而非jsp的路径了。所以这时候不能在jsp中用这样的路径:<link href="one.css" rel="stylesheet" type="text/css">或者<link href="../../one.css" rel="stylesheet" type="text/css">类似href="one.css"和../../one.css的html相对路径是相对于引用这个css的文件的相对路径。而在servlet中转发时就是相对于这个servlet的相对路径了,因为jsp路径和servlet路径是不一样的,所以这样的引用肯定是出错的。
所以这个时候,要用站点根目录,就是相对于http://192.168.0.1/的目录,以“/”开头。
因此上述错误应更正为href=”/webapp/one.css”类似的站点根目录的相对目录。这样在servlet转发后和jsp中都是相对于站点根目录的相对路径,就能正确使用所定义的css样式了。
平均得分
(0 次评分)
评论: 3 | 查看次数: 732
- 共有 3 条评论
- 共有 3 条评论
发表评论
订阅
上一篇
|

文章来自:
标签: 
机票,深圳机票0755-88866618
http://www.szpiaopiao.cn
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
机票
飞机票
深圳特价机票
深圳特价机票
深圳打折机票
深圳打折机票
深圳飞机票查询
深圳飞机票查询
深圳国际机票
深圳国际机票
深圳机票
深圳机票
深圳到北京机票
深圳到北京机票
深圳到上海机票
深圳到上海机票
深圳到成都机票
深圳到成都机票
深圳到重庆机票
深圳到重庆机票
深圳到哈尔滨机票
深圳到哈尔滨机票
深圳到南昌机票
深圳到南昌机票
深圳到福州机票
深圳到福州机票
深圳到三亚机票
深圳到三亚机票
深圳到桂林机票
深圳到桂林机票
深圳到贵阳机票
深圳到贵阳机票
深圳到海口机票
深圳到海口机票
深圳到合肥机票
深圳到合肥机票
深圳到昆明机票
深圳到昆明机票
深圳到济南机票
深圳到济南机票
深圳到乌鲁木齐机票
深圳到乌鲁木齐机票
深圳到太原机票
深圳到太原机票
深圳到西安机票
深圳到西安机票
深圳到沈阳机票
深圳到沈阳机票
深圳到长春机票
深圳到长春机票
深圳到兰州机票
深圳到兰州机票
深圳到大连机票
深圳到大连机票
深圳到郑州机票
深圳到郑州机票
深圳到呼和浩特机票
深圳到呼和浩特机票
深圳到天津机票
深圳到天津机票
深圳到重庆特价机票
深圳到长春特价机票
深圳到哈尔滨特价机票
深圳到沈阳特价机票
深圳到昆明特价机票
深圳到西安特价机票
深圳到北京特价机票
深圳到太原特价机票
深圳到上海特价机票
深圳到武汉特价机票
深圳到成都特价机票
深圳到石家庄特价机票
深圳到呼和浩特特价机票
深圳到兰州特价机票
深圳到合肥特价机票
深圳到乌鲁木齐特价机票
深圳到郑州飞机票
深圳到大连飞机票
深圳到北京飞机票
深圳到北京飞机票
wow gold
powerleveling
power leveling
rs gold
runescape gold
runescape money
runescape gp
runescape items
buy runescape gold
runescape gold
rs gold
runescape money
メル友
裏DVD
大人のおもちゃ
語学留学
川崎 ソープランド
会社設立
風俗
出会い系
無料 出会い
人材派遣会社
ライブチャット
転職
格安航空券
FX
合宿免許
ドレス
ストラップ
wow gold
wow gold
wow gold
wow gold
wow gold
item4sale
item4sale
item4sale
item4sale
item4sale
buy age of conan gold
buy age of conan gold
buy age of conan gold
buy age of conan gold
buy age of conan gold
连锁洗衣店加盟
连锁洗衣店加盟
加盟干洗店连锁
加盟干洗店连锁
干洗机价格
干洗机价格
洗涤机械
洗涤机械
洗鞋
洗鞋
擦鞋连锁
擦鞋连锁
擦鞋店加盟
擦鞋店加盟
鞋机
鞋机
擦鞋修鞋
擦鞋修鞋
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold