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。可为什么在项目里的同一路径下就不行呢?
19 个解决方案
#1
WebRoot
|--WEB-INF
|--pages
|--config
|--a.jsp
|--b.jsp
|--WEB-INF
|--pages
|--config
|--a.jsp
|--b.jsp
#2
WebRoot
|--WEB-INF
|--pages
|--config
|--a.jsp
| --b.jsp
|--WEB-INF
|--pages
|--config
|--a.jsp
| --b.jsp
#3
WebRoot
|--WEB-INF
|--pages
|--config
|--a.jsp
|--b.jsp
应该是这样的目录结构
|--WEB-INF
|--pages
|--config
|--a.jsp
|--b.jsp
应该是这样的目录结构
#4
嗯? window.open()是JS中用的吧
#5
对的,在jsp里面用的js片段,里面有个方法内容是window.open
#6
应该是能打开html,我觉得window.open()中的参数中如果是jsp的话,不会被编译,所以会报404错误
#7
我也换个方式试了一下,a是jsp, b是html,纯文本,但还是报404
#8
没有遇到这样的问题
确定服务器端的程序两个页面是在同路径下吗?
无论是JSP或者HTML都是可以的
确定服务器端的程序两个页面是在同路径下吗?
无论是JSP或者HTML都是可以的
#9
偶刚才试了一下,看来光靠想是不行的。我的是可以的
我a.jsp和b.jsp建在根目录下
a.jsp中加入一行代码如下:
<script type="text/javascript">window.open("b.jsp")</script>
这样在a.jsp刷出来的时候,b.jsp就会弹窗口了 我试过,是可以的
我a.jsp和b.jsp建在根目录下
a.jsp中加入一行代码如下:
<script type="text/javascript">window.open("b.jsp")</script>
这样在a.jsp刷出来的时候,b.jsp就会弹窗口了 我试过,是可以的
#10
我非常确定是同一路径。
另外再补充一下,window.open打开后,路径显示是http://localhost:8080/ProjectName/b.html
#11
由于CSDN编辑器的问题,目录层级不好表示。就是WebRoot下面有WEB-INF,WEB-INF下面有pages,pages下面有config,最后config文件夹里面是a.jsp和b.html
#12
呃 偶试了一下,有IE下是弹窗,在FF下是打开一个新的标签页 木有问题
#13
但window.open打开后显示路径是http://localhost:8080/ProjectName/b.html,所以报404
#14
汗咧 我把jsp放到web-inf文件夹下都访问不到,你是怎么做到的?
估计你的a.jsp也是404吧
#15
首先我的a.jsp没有问题,能够访问。其次,jsp的位置只要在WebRoot根目录下就ok,与WEB-INF的位置没有关系。至少我的a.jsp就是放在WEB-INF下,且能够访问。
#16
学习一下子。。
#17
WEB-INF下的东西不能外部访问,
没做特殊处理window.open不能访问WEB-INF下的任何资源。
可以用普通的html引进该页,
也可以使用过滤器返回该资源。
方法有很多,拜访一下GOOGLE老师
没做特殊处理window.open不能访问WEB-INF下的任何资源。
可以用普通的html引进该页,
<%@ include file="WEB-INF/pages/yourPage.jsp" %>
也可以使用过滤器返回该资源。
方法有很多,拜访一下GOOGLE老师
#18
我又试了一下,你说的还是有道理。当我把我的b.html放在了WebRoot根目录下,才成功的。btw,我正在维护原来的项目,原来所有的jsp都放在WEB-INF下的不同文件夹中,如果像你说的这种情况,那且不是不能在这个项目中用window.open了?
#19
谢谢各位,解决了。原来是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
#20
#1
WebRoot
|--WEB-INF
|--pages
|--config
|--a.jsp
|--b.jsp
|--WEB-INF
|--pages
|--config
|--a.jsp
|--b.jsp
#2
WebRoot
|--WEB-INF
|--pages
|--config
|--a.jsp
| --b.jsp
|--WEB-INF
|--pages
|--config
|--a.jsp
| --b.jsp
#3
WebRoot
|--WEB-INF
|--pages
|--config
|--a.jsp
|--b.jsp
应该是这样的目录结构
|--WEB-INF
|--pages
|--config
|--a.jsp
|--b.jsp
应该是这样的目录结构
#4
嗯? window.open()是JS中用的吧
#5
对的,在jsp里面用的js片段,里面有个方法内容是window.open
#6
应该是能打开html,我觉得window.open()中的参数中如果是jsp的话,不会被编译,所以会报404错误
#7
我也换个方式试了一下,a是jsp, b是html,纯文本,但还是报404
#8
没有遇到这样的问题
确定服务器端的程序两个页面是在同路径下吗?
无论是JSP或者HTML都是可以的
确定服务器端的程序两个页面是在同路径下吗?
无论是JSP或者HTML都是可以的
#9
偶刚才试了一下,看来光靠想是不行的。我的是可以的
我a.jsp和b.jsp建在根目录下
a.jsp中加入一行代码如下:
<script type="text/javascript">window.open("b.jsp")</script>
这样在a.jsp刷出来的时候,b.jsp就会弹窗口了 我试过,是可以的
我a.jsp和b.jsp建在根目录下
a.jsp中加入一行代码如下:
<script type="text/javascript">window.open("b.jsp")</script>
这样在a.jsp刷出来的时候,b.jsp就会弹窗口了 我试过,是可以的
#10
我非常确定是同一路径。
另外再补充一下,window.open打开后,路径显示是http://localhost:8080/ProjectName/b.html
#11
由于CSDN编辑器的问题,目录层级不好表示。就是WebRoot下面有WEB-INF,WEB-INF下面有pages,pages下面有config,最后config文件夹里面是a.jsp和b.html
#12
呃 偶试了一下,有IE下是弹窗,在FF下是打开一个新的标签页 木有问题
#13
但window.open打开后显示路径是http://localhost:8080/ProjectName/b.html,所以报404
#14
汗咧 我把jsp放到web-inf文件夹下都访问不到,你是怎么做到的?
估计你的a.jsp也是404吧
#15
首先我的a.jsp没有问题,能够访问。其次,jsp的位置只要在WebRoot根目录下就ok,与WEB-INF的位置没有关系。至少我的a.jsp就是放在WEB-INF下,且能够访问。
#16
学习一下子。。
#17
WEB-INF下的东西不能外部访问,
没做特殊处理window.open不能访问WEB-INF下的任何资源。
可以用普通的html引进该页,
也可以使用过滤器返回该资源。
方法有很多,拜访一下GOOGLE老师
没做特殊处理window.open不能访问WEB-INF下的任何资源。
可以用普通的html引进该页,
<%@ include file="WEB-INF/pages/yourPage.jsp" %>
也可以使用过滤器返回该资源。
方法有很多,拜访一下GOOGLE老师
#18
我又试了一下,你说的还是有道理。当我把我的b.html放在了WebRoot根目录下,才成功的。btw,我正在维护原来的项目,原来所有的jsp都放在WEB-INF下的不同文件夹中,如果像你说的这种情况,那且不是不能在这个项目中用window.open了?
#19
谢谢各位,解决了。原来是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