这是我的第一个问题(所以请温和:))。我到处寻找,找不到我问题的答案(在这个过程中也有点疯狂)。Apache Tomcat:请求的资源()不可用(同时访问应该可用的资源)
我为Java EE开发人员(Eclipse平台3.7.2和Java EE IDE 1.4.2)使用Tomcat 7和最新的Eclipse IDE。 所以,我得到这个错误:“请求的资源()不可用”,同时访问http://127.0.0.1:8080/myTest/WEB-INF/jsp/savename.jsp。我已经检查了很多次,这个文件是在确切的文件夹中的磁盘上。我试过在Eclipse内部运行Tomcat,并在Tomcat中部署导出的.war。每次弹出相同的错误。
我的文件:
myTest/index.jsp
myTest/WEB-INF/html/GetName.html
myTest/WEB-INF/jsp/savename.jsp
当我运行的 “http://本地主机/ MYTEST” 的index.jsp始终正常运行。 然后我用
"<jsp:forward page="WEB-INF/html/GetName.html"></jsp:forward>"
我的index.jsp内导航到前面教程的GetName.html并且还有效。 问题在前面教程的GetName.html弹出:
<form action='WEB-INF/jsp/savename.jsp' method="post" >
What's your name? <INPUT TYPE=TEXT NAME=username SIZE=20>
<P><INPUT TYPE=SUBMIT>
</form>
当我按下的形式提交按钮,浏览器重定向到: http://127.0.0.1:8080/myTest/WEB-INF/jsp/savename.jsp和错误弹出。
所以,我真的不明白为什么会这样......默认的Tomcat应用程序很好地工作......
附:我曾尝试也manualy导航到文件:
http://127.0.0.1:8080/myTest/WEB-INF/html/GetName.html
http://127.0.0.1:8080/myTest/WEB-INF/jsp/savename.jsp
但我也得到了错误(即使idex.jsp导航也没有任何问题,前面教程的GetName.html)..
任何帮助很大apreciated! 谢谢!
感谢的人!但问题仍然存在......我如何链接不同文件夹内的不同文件?为什么GetName.html中的表单无法访问WEB-INF/jsp/savename.jsp?解决方案是什么? (除了将所有文件放在根目录中......) – MoD 2012-03-01 18:11:49
很抱歉地说,但是对于普通的JSP,没有其他解决方案。表单数据由浏览器发送,因此浏览器会组装URL并使用该URL将数据发送到服务器,并且服务器说“不,您无法进入WEB-INF”。因此,必须将* savename.jsp *放在根目录或根目录下的另一个目录中,并使用包含标记或指令从WEB-INF下的文件加载实际内容。 – t0r0X 2012-03-01 18:36:00
我想我知道你在努力实现什么:保护/隐藏所有的JSP和相关的代码。正如我所说的,不能用简单的JSP来完成。您需要构建一个作为“网关”的servlet或过滤器,并将其映射到不在/位于WEB-INF下的URI,并将请求转发到WEB-INF中的JSP。我宁愿推荐使用为您提供这种功能的框架,例如Spring MVC框架。让我给你一些指示:http://static.springsource.org/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-features – t0r0X 2012-03-01 18:50:55