0

我正在读一本关于 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 docBase="F:\work\bscit\serverside\practical" path="serverside" reloadable="true" />

我将 hello.jsp 放在practical文件夹下,重新启动了 tomcat 并且没有 response.server在 catalina_log 中出现此问题。对我来说,这是另一种设置虚拟主机的方法(我对如何在 apache httpd 下创建虚拟主机有一个好主意)所以我现在有点困惑。

问题 1究竟上下文是用来做什么的?我看过tomcat doc它没有响铃

问题 2如何使“相同”的东西在 tomcat 7 上工作(当然不将文件放入 tomcat)?

4

1 回答 1

2

1- 上下文是描述 web 容器内的 webb 应用程序的内容。在那里,您可以定义用于访问 web-app 的路径、path="JSPTEST"资源所在的位置(文档库/根目录)docBase = "G:\Tomcat5.5"\webapps\JSPTEST"以及用于访问数据库的 JNDI 资源等其他内容。

因此,您在 Tomcat 5 中所做的配置应如下读取:

当我向服务器询问路径时JSPTEST(witch 是您的网络应用程序的根目录),他会查看docBase相应上下文元素中定义的物理目录。一旦在那里,服务器就会查找资源filename.jsp进程(由于它不是静态内容,因此需要首先编译并运行 jsps 以生成 html)并将其提供给客户端。

以同样的方式,您可以阅读为 Tomcat 7 制作的配置。

2-为了能够hello.jsp从 Tomcat 7(或 wahtever 版本)中检索资源,url 应该是http://localhost:8080/serverside/hello.jsp

内容物理存储的目录名称在访问内容的 url 中没有任何作用。它是元素path和之间的组合docbase

回复 2

将 context 元素放在 中conf/context.xml,它本身有一个context元素作为 root 是错误的,这就是导致您得到错误的原因(读取时的 xml 解析错误conf/context.xml)。有两种方法可以使用 context.xml 配置 web-app,看看这里。仔细阅读第 1 点和第 2 点!

所以要让事情发挥作用:

任何一个

1-将一个以serverside.xml内容命名的文件<Context docBase="F:\work\bscit\serverside\practical" path="serverside" reloadable="true" ></Context>放入conf/Catalina/localhost/

或者

webapps2-在named中创建一个目录serverside并将你的jsps放入其中。在这种情况下,不需要serversid/META-INF/context.xml文件,除非您想为 Web 应用程序定义其他资源,docBase并且path元素可能不会出现在其中。

然后打电话http://localhost:8080/serverside/hello.jsp

(1) 有利于开发,(2) 有利于生产。

于 2012-07-29T17:15:24.980 回答