提一个问题,很简单,在线等待

qeveeqnui 国家海洋环境监测中心 Web前端工程师  2006-02-20 11:34:57
Server.xml配置.
<Context path="" docBase="E:\Eclipse\workplace1\memweb\.deployables\memweb"
source="com.ibm.wtp.web.server:memweb"
reloadable="true" debug="0">
.....
</Context>
<Context path="/ziliao" docBase="F:\temp" reloadable="true">
</Context>

以下是我在Server.xml中关于Context的配置.我在Jsp的脚本中
<%
String confdir=application.getRealPath("/");
System.out.println(application.getServletContextName());
//System.out.println(application.getContext("/ziliao").getRealPath(""));
%>
可是脚本中注释掉的代码会出现:org.apache.jasper.JasperException
异常.
望高手指点一二.
...全文
251 点赞 收藏 23
写回复
23 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
doway 2006-02-22
楼主,不是没人会,只是不知道楼主你哪里做错了。

你再重头做两个应用,每个应用都尽可能简单(第一个应用中只有一个 JSP 或 Servlet,第二个应用中啥都没有),再试一试。只要多做几次,保证可以找到错就所在。
回复
qeveeqnui 2006-02-22
等了两天,查资料也没有解决,看来只有另辟蹊径了。
回复
qeveeqnui 2006-02-22
这是一个简单的程序,只有一个index.jsp,大家看一下吧,愁死了,弄不出来。
回复
qeveeqnui 2006-02-22
我用Eclispe建立一个新工程,只有一个index.jsp文件,默认的根是:myapp
<Context docBase="F:\Eclipse_Project\workplace1\mytest\.deployables\mytest" path="/myapp" reloadable="true" source="com.ibm.wtp.web.server:mytest"/>
然后在Server.xml后面加了个/ziliao的根。
<Context docBase="F:\temp" path="/ziliao" reloadable="true" />
在index。jsp文件中加入如下语句:
<%
out.println("application path is:"+application.getRealPath(""));%>
<br>
<%out.println("application path is:"+((application.getContext("/ziliao")==null)?"null":application.getContext("/ziliao").getRealPath("")));%>
输出为:
这只是个测试程序 application path is:F:\Eclipse_Project\workplace1\mytest\.deployables\mytest
application ziliao path is:null
为何得不到ziliao这个根的实际路径?
回复
doway 2006-02-21
大小写有问题没?
回复
qeveeqnui 2006-02-21
application.getContext("/xxx") 是不会导致 org.apache.jasper.JasperException 的。

如果名称为 xxx 的应用未部署,会返回 null。
我部署了,而且web可以访问ziliao下的文件.
可为什么就是得不到ziliao这个Context的实际路径呢?而且返回是Null{application.getContext("/ziliao");返回null}
回复
qeveeqnui 2006-02-21
难道没人会吗?
回复
qeveeqnui 2006-02-21
../表示上层目录,但两个Context对应路径根本不在一个分区上。我想从一个根application得到另一个根,然后从得到的根中得到对应路径。
回复
human_2 2006-02-21
out.println(application.getRealPath("../"));//这里应该输出F:\temp?
回复
qeveeqnui 2006-02-21
重申一下,在一个web程序建立了两个根。一个是是<Context path="/ziliao"...></context>
另一个是 <Context path=""...></context>,前一个用application.getRealPath();得到真实路径,后一个用application.getContext("/ziliao")得到的是null,所以就无法得到ziliao的真实路径。
回复
qeveeqnui 2006-02-21
大小写是对的。
回复
dlxu 2006-02-20
同意楼上的,因为application本身就是一个ServletContext了
回复
doway 2006-02-20
application.getRealPath("/ziliao")
回复
qeveeqnui 2006-02-20
在线等待,有高手帮我看一下,愁了一上午了,用Google查相关问题也挺少.
回复
qeveeqnui 2006-02-20
回复: itzhiren因为/对应的目录就是E:盘下的目录,getRealPath()应该对应E:\*\*\**路径.
回复
qeveeqnui 2006-02-20
if(application.getContext("/ziliao")==null) System.out.println("ddd: ");我用这个句子试了一下,果然是null,可是我的两个Context中的/ziliao中的文件可以在web中访问呀,
.
回复
itzhiren 2006-02-20
<%
String confdir=application.getRealPath("/");//这里怎么会输出E:\**呢?
out.println(confdir);

//out.println(application.getServletContextName());
out.println(application.getContext("/ziliao").getRealPath(""));//这里应该输出F:\temp?
%>
回复
qeveeqnui 2006-02-20
楼上的没明白,我的意思不是输出两个E:\jsp,而是一个输出的是:E:\**,另一个是F:\temp.
回复
doway 2006-02-20
application.getContext("/xxx") 是不会导致 org.apache.jasper.JasperException 的。

如果名称为 xxx 的应用未部署,会返回 null。

如果想获得物理路径,web 应用必须部署为一个展开的目录结构,而不可以部署为 war。但即使如此,也不会导致 org.apache.jasper.JasperException,可能的异常是空引用。
回复
itzhiren 2006-02-20
<%
String confdir=application.getRealPath("/");
out.println(confdir);

//out.println(application.getServletContextName());
out.println(application.getContext("/jsp").getRealPath(""));
%>
我的jsp文件放在e:\jsp下面,我这样写就没有问题,输出了两个e:\jsp
回复
加载更多回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-02-20 11:34
社区公告
暂无公告