我有一个webconf,其中包含webcontext rootname" testProject"。我尝试使用web.xml
并配置welcome-file:
<welcome-file-list>
<welcome-file>/jspFiles/index.html</welcome-file>
</welcome-file-list>
这适用于tomcat,但不适用于码头:
Tomcat 7.0:
localhost:8080/testProject/
,localhost:8080/testProject/jspFiles/index.html
Jetty 9.0:
localhost:8080/testProject/
,则localhost:8080/testProject/jspFiles/index.html
我的webcontent文件夹如下所示;
Webcontent
|
+ jspFiles/index.html
|
+ META-INF
|
+ WEBINF
|
+ web.xml
我是否需要配置额外的东西以使其在jetty上工作?
答案 0 :(得分:1)
<welcome-file>
中找到的值只是附加到传入请求中,试图找到http客户端要求的资源。
带有'/'
的条目只会使事情变得复杂(特别是在开头,这被认为是非规范化的)
以下面的例子为例:
Webapp deployed to '/foo'
You have 1 <welcome-file>jsps/index.jsp</welcome-file> set
Your webapp contents are:
/WEB-INF/web.xml
/jsps/index.jsp
/css/main.css
/js/jquery.js
/bar/list.jsp
让我们看几个场景。
/foo
的来电请求
{webapp-base}/
作为文件资源存在吗?都能跟得上{webapp-base}/jsps/index.jsp
作为文件资源存在吗?是的,处理它。/foo/bar
的来电请求
{webapp-base}/bar
作为文件资源存在吗?不。{webapp-base}/bar/jsps/index.jsp
作为文件资源存在吗?不。“as file resource”部分过于简单,因为搜索文件资源可能是以下任何位置(这不是官方搜索顺序,请参阅官方订单的servlet规范)< / p>
/WEB-INF/classes
/WEB-INF/resources/
/META-INF/resources/
/WEB-INF/lib/
中找到的任何内容
然后,JSP实现本身就增加了在其他位置查找内容的功能。
主要是因为您对以*.jsp
结尾的文件的请求意味着JspServlet(通常映射在jsp
servlet名称)也会被要求提供内容。
有些实现甚至会对request.getPathInfo()
中的任何内容使用传入的/WEB-INF/
(这样做是为了允许jsps存在于/WEB-INF/my.jsp
中以供JspServlet使用(编译时)并提供服务响应,但也获得/WEB-INF/
的标准servlet规范安全性,并且永远不会在未经处理的情况下提供jsp源代码。
答案 1 :(得分:0)
我发现Eclipse.jsp向导使jsp非常接近应该的位置,但Eclipse嵌入式jetty或Eclipse生成.war都将.jsp放在服务器无法找到的地方。在这两种情况下,我都右键单击了jsp,选择了MOVE,然后将其放在嵌入式webapp文件夹或Java EE WAR的WebContent文件夹中。我在两种情况下为每个新的jsp I代码执行此操作。
很难展示,但我会尝试。 Eclipse运行嵌入式jetty的错误方法:
src/main/webapp (folder)
+>css (package)
+>images (package)
+>WEB-INF (folder)
++>lib (folder)
web.xml
my.jsp
ohmy.jsp
ohmygod.jsp
这里的web.xml在正确的位置,但我从未弄清楚到底是哪个地方。 永远找不到my.jsp。
现在,如果你使用move函数将my.jsp移动到src / main / webapp中 最终看起来像这样,找到my.jsp,一切正常。
src/main/webapp (folder)
+>css (package)
+>images (package)
+>WEB-INF (folder)
++>lib (folder)
web.xml
my.jsp
ohmy.jsp
ohmygod.jsp
正如我所说,我仍然不知道web.xml&#34;&#34;因为它与lib文件夹有关,但不在其中。 .jsp位于webapp文件夹中(它们确实是),文档说它们应该存在并且一切正常。它看起来与.war有点不同,但问题和解决方案是一样的。在最坏的情况下,只需移动.jsp(或者在您的情况下是欢迎文件),直到服务器找到它们,如果这些说明对您没有意义。
我现在有我需要的东西,但是当我(如果)找出欢迎文件时,我会回来并更新。