请求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][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][http_lsy.helpdesk.citicsinfo.com_jsp_layout_haha.jsp] (正确显示)
测试3
../layout/haha.jsp
[http://lsy.helpdesk.citicsinfo.com/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][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的路径中实际结果不是根目录,这个确实不敢用。
还没有评论,来说两句吧...