同一个目录下不能用window.open打开页面

电灯泡 2010-12-14 04:25:06
项目中的目录树如下:
WebRoot
WEB-INF
pages
config
a.jsp
b.jsp
我的两个jsp页面如上所示,我在a.jsp里面包含了window.open('b.jsp'),但总是报404错误,按理说是没有问题的。为了测试,我在桌面上建立了两个页面c.html和d.html,在c.html中包含window.open('d.html'),没有问题,能够打开d.html。可为什么在项目里的同一路径下就不行呢?
...全文
403 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
谢谢各位,解决了。原来是window.open('b.jsp'),由于像17楼所说”window.open不能访问WEB-INF下的任何资源“,所以失败。现在换了下用window.open('b.action'),然后在struts.xml配置,b.action映射到/WEB-INF/pages/config/b.jsp,所以即使在WEB-INF下面也可以用window.open
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ousyuryu 的回复:]

WEB-INF下的东西不能外部访问,
没做特殊处理window.open不能访问WEB-INF下的任何资源。
可以用普通的html引进该页,
Java code

<%@ include file="WEB-INF/pages/yourPage.jsp" %>


也可以使用过滤器返回该资源。
方法有很多,拜访一下GOOGLE老师
[/Quote]

我又试了一下,你说的还是有道理。当我把我的b.html放在了WebRoot根目录下,才成功的。btw,我正在维护原来的项目,原来所有的jsp都放在WEB-INF下的不同文件夹中,如果像你说的这种情况,那且不是不能在这个项目中用window.open了?
ousyuryu 2010-12-14
  • 打赏
  • 举报
回复
WEB-INF下的东西不能外部访问,
没做特殊处理window.open不能访问WEB-INF下的任何资源。
可以用普通的html引进该页,

<%@ include file="WEB-INF/pages/yourPage.jsp" %>

也可以使用过滤器返回该资源。
方法有很多,拜访一下GOOGLE老师
sdfsf双方各 2010-12-14
  • 打赏
  • 举报
回复
学习一下子。。
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lrbyantai 的回复:]

引用 11 楼 xukunddp 的回复:

由于CSDN编辑器的问题,目录层级不好表示。就是WebRoot下面有WEB-INF,WEB-INF下面有pages,pages下面有config,最后config文件夹里面是a.jsp和b.html

汗咧  我把jsp放到web-inf文件夹下都访问不到,你是怎么做到的?
估计你的a.jsp也是404吧
[/Quote]
首先我的a.jsp没有问题,能够访问。其次,jsp的位置只要在WebRoot根目录下就ok,与WEB-INF的位置没有关系。至少我的a.jsp就是放在WEB-INF下,且能够访问。
蛋黄车 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xukunddp 的回复:]

由于CSDN编辑器的问题,目录层级不好表示。就是WebRoot下面有WEB-INF,WEB-INF下面有pages,pages下面有config,最后config文件夹里面是a.jsp和b.html
[/Quote]
汗咧  我把jsp放到web-inf文件夹下都访问不到,你是怎么做到的? 
估计你的a.jsp也是404吧
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
但window.open打开后显示路径是http://localhost:8080/ProjectName/b.html,所以报404
蛋黄车 2010-12-14
  • 打赏
  • 举报
回复
呃 偶试了一下,有IE下是弹窗,在FF下是打开一个新的标签页 木有问题
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
由于CSDN编辑器的问题,目录层级不好表示。就是WebRoot下面有WEB-INF,WEB-INF下面有pages,pages下面有config,最后config文件夹里面是a.jsp和b.html
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 byl0516 的回复:]

没有遇到这样的问题
确定服务器端的程序两个页面是在同路径下吗?
无论是JSP或者HTML都是可以的
[/Quote]
我非常确定是同一路径。

另外再补充一下,window.open打开后,路径显示是http://localhost:8080/ProjectName/b.html
蛋黄车 2010-12-14
  • 打赏
  • 举报
回复
偶刚才试了一下,看来光靠想是不行的。我的是可以的
我a.jsp和b.jsp建在根目录下
a.jsp中加入一行代码如下:
<script type="text/javascript">window.open("b.jsp")</script>

这样在a.jsp刷出来的时候,b.jsp就会弹窗口了 我试过,是可以的
byl0516 2010-12-14
  • 打赏
  • 举报
回复
没有遇到这样的问题
确定服务器端的程序两个页面是在同路径下吗?
无论是JSP或者HTML都是可以的
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
我也换个方式试了一下,a是jsp, b是html,纯文本,但还是报404
蛋黄车 2010-12-14
  • 打赏
  • 举报
回复
应该是能打开html,我觉得window.open()中的参数中如果是jsp的话,不会被编译,所以会报404错误
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lrbyantai 的回复:]

嗯? window.open()是JS中用的吧
[/Quote]
对的,在jsp里面用的js片段,里面有个方法内容是window.open
蛋黄车 2010-12-14
  • 打赏
  • 举报
回复
嗯? window.open()是JS中用的吧
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
WebRoot
|--WEB-INF
|--pages
|--config
|--a.jsp
|--b.jsp
应该是这样的目录结构
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
WebRoot
|--WEB-INF
|--pages
|--config
|--a.jsp
| --b.jsp
电灯泡 2010-12-14
  • 打赏
  • 举报
回复
WebRoot
|--WEB-INF
|--pages
|--config
|--a.jsp
|--b.jsp

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧