[b]
request.getcontextPath() 详解[/b]
<%=request.getContextPath()%>
是为了解决相对路径的问题,可返回站点的根路径。
但不用也可以,比如
<a
href="<%=request.getContextPath()%>/catalog.jsp">
,
可以直接用
<a
href="catalog.jsp">
也行,这两个文件是在同一个目录下的。比如你要生成一个文件放在服务
器上得一个目录下
,
可以使用
request.getContextPath()+/dir,
组成一个完整得目录结构
!
但在
JSP
文件里
,
有时通过
request.getContextPath()
得到的路径却为空
,
为什
么
?
context
中没有配置
path
属性,所以你的工程文件就是在根目录下,相当于
path="";
即是你直接在浏览器中输入你的服务器
ip
就会到你的
jsp
页面,
而不是
tomcat
的默认页面;
所
以你通过
request.getContextPath()
得到的字符串是为空的;它是获得虚目录的;
如果你想得到工程文件的实际物理路径,可通过:
<%=request.getRealPath("/")%>
,这样页面
就会输出:
d:/web
。
参考
servlet
中的接口:
request.getScheme();
返回的协议名称
,
默认是
http
request.getServerName()
返回的是你浏览器中显示的主机名,你自己试一下就知道了
getServerPort()
获取服务器端口号
request.getContextPath()
应该是得到项目的名字,
如果项目为根目录,
则得到
一个
""
,即空的字条串。如果项目为
abc,
<%=request.getContextPath()%
>
将
得到
abc
,服务器端的路径则会自动加上,
<a
href="XXXX.jsp">
是指当前路径
下的这个
xxx.jsp
页面,有时候也可以在
head
里设置
html:base
来解决路径的
问题,不过用的最多的还是
request.getContextPath
。
在
js
文件中得到
request.getContextPath()
的值,不想在
JSP
中写太多的
Javascript
代码:
一种方法是用
hidden:
<input
type=hidden
name=contextPath
value=<%=
request.getContextPath()>
再就是在本页面的
js
里面也是可以使用
Scriptlet
来赋值的:
var a = '<%= request.getContextPath()>'
或者你赋值给一个
hidden
的控件都是可以的,然后
js
取,这样
js
可以不用写
在
jsp
里。
实际应用中,一般用来解决
jsp
测试和生产环境路径不同的问题:
<%
String appContext = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+
request.getServerPort() + appContext;
%>
request.getcontextPath() 详解[/b]
<%=request.getContextPath()%>
是为了解决相对路径的问题,可返回站点的根路径。
但不用也可以,比如
<a
href="<%=request.getContextPath()%>/catalog.jsp">
,
可以直接用
<a
href="catalog.jsp">
也行,这两个文件是在同一个目录下的。比如你要生成一个文件放在服务
器上得一个目录下
,
可以使用
request.getContextPath()+/dir,
组成一个完整得目录结构
!
但在
JSP
文件里
,
有时通过
request.getContextPath()
得到的路径却为空
,
为什
么
?
context
中没有配置
path
属性,所以你的工程文件就是在根目录下,相当于
path="";
即是你直接在浏览器中输入你的服务器
ip
就会到你的
jsp
页面,
而不是
tomcat
的默认页面;
所
以你通过
request.getContextPath()
得到的字符串是为空的;它是获得虚目录的;
如果你想得到工程文件的实际物理路径,可通过:
<%=request.getRealPath("/")%>
,这样页面
就会输出:
d:/web
。
参考
servlet
中的接口:
request.getScheme();
返回的协议名称
,
默认是
http
request.getServerName()
返回的是你浏览器中显示的主机名,你自己试一下就知道了
getServerPort()
获取服务器端口号
request.getContextPath()
应该是得到项目的名字,
如果项目为根目录,
则得到
一个
""
,即空的字条串。如果项目为
abc,
<%=request.getContextPath()%
>
将
得到
abc
,服务器端的路径则会自动加上,
<a
href="XXXX.jsp">
是指当前路径
下的这个
xxx.jsp
页面,有时候也可以在
head
里设置
html:base
来解决路径的
问题,不过用的最多的还是
request.getContextPath
。
在
js
文件中得到
request.getContextPath()
的值,不想在
JSP
中写太多的
Javascript
代码:
一种方法是用
hidden:
<input
type=hidden
name=contextPath
value=<%=
request.getContextPath()>
再就是在本页面的
js
里面也是可以使用
Scriptlet
来赋值的:
var a = '<%= request.getContextPath()>'
或者你赋值给一个
hidden
的控件都是可以的,然后
js
取,这样
js
可以不用写
在
jsp
里。
实际应用中,一般用来解决
jsp
测试和生产环境路径不同的问题:
<%
String appContext = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+
request.getServerPort() + appContext;
%>