我在看一本关于jsp的书(教科书),有一点看不懂。在书中,我们必须执行一个 jsp 页面,为此他们在 tomcat 5.5 的 servlet.xml 中设置了一个上下文:
<Context path="JSPTEST" docBase = "G:\Tomcat5.5"\webapps\JSPTEST"></Context>
并且该文件夹中的 jsp 可通过 http://localhost:8080/JSPTEST/filename.jsp
我意识到的第一件事是 docBase 实际上是服务器上的一个 web 应用程序,因此无论是否设置此上下文,它仍然会在相同的 url
上运行,这有什么意义呢?
我安装了一个tomcat 7,并在conf/context.xml
中添加了一个context
Context docBase="F:\work\bscit\serverside\practical" path="serverside" reloadable="true" />
我将 hello.jsp 放在 practical
文件夹下,重新启动了 tomcat,但没有响应。服务器已关闭 this in catalina_log .对我来说,这是设置虚拟主机的另一种方式(我对如何在 apache httpd 下创建虚拟主机有一个好主意)所以我现在有点困惑。
问题 1 上下文究竟用于什么?我看过tomcat doc它没有响铃
问题 2 我怎样才能使“相同”的东西在 tomcat 7 上工作(当然不用把文件放在 tomcat 中)?
最佳答案
1- 上下文是描述网络容器内的网络应用程序的内容。在那里您可以定义用于访问网络应用程序的路径 path="JSPTEST"
,资源所在的位置(文档库/根目录)docBase = "G:\Tomcat5.5"\webapps\JSPTEST"
和其他东西,例如用于访问数据库的 JNDI 资源。
因此您在 Tomcat 5 中所做的配置应按如下方式读取:
当我向服务器询问路径时 JSPTEST
(女巫是你的网络应用程序的根目录)他查看了 docBase
中定义的物理目录。对应的上下文元素。一旦到达那里,服务器就会查找资源 filename.jsp
流程(由于不是静态内容,需要先编译运行jsps生成html)服务给客户端。
以同样的方式,您可以读取为 Tomcat 7 所做的配置。
2- 能够检索资源 hello.jsp
来自 Tomcat 7(或 wahtever 版本)的 url 应该是 http://localhost:8080/serverside/hello.jsp
内容物理存储目录的名称在访问内容的 url 中没有任何作用。是元素之间的组合path
和 docbase
.
回复2
将上下文元素放在 conf/context.xml
中, 它本身有一个 context
作为根的元素是错误的,这就是导致您收到错误的原因(阅读时出现 xml 解析错误 conf/context.xml
)。有两种方法可以使用 context.xml 配置 Web 应用程序,请查看 here .请仔细阅读第 1 点和第 2 点!
为了让事情正常进行:
要么
1- 放置一个名为 serverside.xml
的文件内容<Context docBase="F:\work\bscit\serverside\practical" path="serverside" reloadable="true" ></Context>
在 conf/Catalina/localhost/
或者
2- 在 webapps
中创建一个目录名为 serverside
并将您的jsps放入其中。在这种情况下,不需要 serversid/META-INF/context.xml
文件,除非您想为网络应用程序定义其他资源,docBase
和 path
元素可能不会出现在其中。
然后调用http://localhost:8080/serverside/hello.jsp
(1) 有利于开发,(2) 有利于生产。
关于java - tomcat/conf/context.xml 中的上下文是做什么用的?虚拟主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11710981/