最近才发现这个问题,WEB-INF目录下面的页面访问是受限的. 我的项目页面目录结构如下所示:
WebRoot
|--WEB-INF
|--pages
|--a.jsp
|--b.jsp
在a.jsp中,有一段js片段,代码为window.open('b.jsp'),目的是在a.jsp页面中打开一个b.jsp页面的窗口,由于a.jsp和b.jsp在同一目录结构下,我想当然的认为这肯定是能够成功的,但事与愿违. 开始我以为相对路径可能有问题,用b.jsp的绝对路径代替,结果还是失败,报404错误. 随后,我把b.jsp又放在WebRoot目录下,即与WEB-INF处在同级目录并在window.open中指定当前b.jsp路径,不管是绝对路径还是相对路径,都能在a.jsp中打开页面. 非常诡异,b.jsp与WEB-INF处在同级目录能够打开,为什么放到WEB-INF目录下就不能访问呢?冥思苦想,最后解决之.
总结:如果页面与WEB-INF目录同级,在window.open指定动作或页面url都可以;如果页面在WEB-INF目录下,在window.open中指定动作,而不是页面url,比如window.open('abc.action/abc.do'); 至于为什么,还不清楚,也暴露出自己对java web项目目录路径的机制作用还不熟悉.
如若转载,请说明出处!http://blog.youkuaiyun.com/xukunddp