请求url的相对路径研究

struts_hdlogin.xml :

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <package name="hdlogin" extends="cx-struts-default" namespace="/hdlogin">
     <!-- 登录--> 
  <action name="login" class="org.hd.login.action.LoginAction" method="login">
     <result name="success">/jsp/layout/main.jsp</result>
     <result name="loginfail">/hdlogin.jsp</result>
  </action>
 </package>
</struts>


上面的请求返回的页面:

main.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
 String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>客户服务中心系统</title>
<link rel="shortcut icon" href="<%=path%>/resource/images/favicon.ico" type="image/x-icon"/>
</head>
<body>

<iframe src="layout/haha.jsp" width="100%" height="100%"
       name="maininner"  id="maininner"  frameborder="0" scrolling="hidden"></iframe>
      

</body>
</html>

工程的页面路径关系:


在main.jsp中有一个iframe,其中需要填写src的路径,如果使用相对路径,那么他的src应该怎么写呢?

工程路径:http://lsy.helpdesk.citicsinfo.com/
请求路径:
http://lsy.helpdesk.citicsinfo.com/hdlogin/login.action

首先测试反斜杠“/”在url中的作用.在iframe的src填写:
haha.jsp
http://lsy.helpdesk.citicsinfo.com/hdlogin/haha.jsp (404)

/haha.jsp
http://lsy.helpdesk.citicsinfo.com/haha.jsp (404)

有三点结论:
1:反斜杠“/”在url中的作用是返回工程的根路径。
反斜杠“/”的内容会加到url后面;


2:不加反斜杠“/”代表你使用的是相对当前路径。
这个相对是相对于你现在的路径而言。
比如我现在的路径是:
http://lsy.helpdesk.citicsinfo.com/hdlogin/login.action
那我使用“haha.jsp”就是相对于现在的
http://lsy.helpdesk.citicsinfo.com/hdlogin/
在这个路径上加上我写的东西“haha.jsp”,最后就拼成了:
http://lsy.helpdesk.citicsinfo.com/hdlogin/haha.jsp


3:在struts的xml中有个namespace="/hdlogin"属性,
这个命名空间是会加到url中去的,作为url的一层。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分割~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
测试1
jsp/layout/haha.jsp
http://lsy.helpdesk.citicsinfo.com/hdlogin/jsp/layout/haha.jsp (404)

测试2
../jsp/layout/haha.jsp
http://lsy.helpdesk.citicsinfo.com/jsp/layout/haha.jsp (正确显示)

测试3
../layout/haha.jsp
http://lsy.helpdesk.citicsinfo.com/layout/haha.jsp (404)

测试4
layout/haha.jsp
http://lsy.helpdesk.citicsinfo.com/hdlogin/layout/haha.jsp (404)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分割~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
测试5
/jsp/layout/haha.jsp
http://lsy.helpdesk.citicsinfo.com/jsp/layout/haha.jsp (正确显示)

测试6
/layout/haha.jsp
http://lsy.helpdesk.citicsinfo.com/layout/haha.jsp (404)

*********************************************************************************************************

上面有2个是实际能正确显示的,我们要仔细研究为什么正确。
测试2
../jsp/layout/haha.jsp
http://lsy.helpdesk.citicsinfo.com/jsp/layout/haha.jsp (正确显示)

首先,这个路径使用相对当前路径,
其次,../jsp/layout/haha.jsp中../表示回到上一层路径,
现在路径:
http://lsy.helpdesk.citicsinfo.com/hdlogin/login.action
那上一层就是http://lsy.helpdesk.citicsinfo.com/
后面再加上“jsp/layout/haha.jsp”,那完整的路径就是:
http://lsy.helpdesk.citicsinfo.com/jsp/layout/haha.jsp (能正确显示是因为这个路径是实际存在的!,有这个url的文件)

测试5
/jsp/layout/haha.jsp
http://lsy.helpdesk.citicsinfo.com/jsp/layout/haha.jsp (正确显示)

首先,这个路径使用相对根路径。
其次,“/”表示根路径就是:
http://lsy.helpdesk.citicsinfo.com/
再加上后面的内容就是:
http://lsy.helpdesk.citicsinfo.com/jsp/layout/haha.jsp (能正确显示是因为这个路径是实际存在的!,有这个url的文件)


"../" 代表当前路径的上一层目录。
"/" 代表当前路径的根目录

网上有的说:"./"代表根目录。
测试如下:
./haha.jsp
http://lsy.helpdesk.citicsinfo.com/hdlogin/haha.jsp
这个测试说明是和""一样的,代表相对当前目录,在js文件中也见过这个用法,不过在jsp的路径中实际结果不是根目录,这个确实不敢用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值