我正在读一本关于jsp的书(学校书),还有一些我无法理解的东西。在本书中我们必须执行一个jsp页面,为此他们在tomcat 5.5中的servlet.xml中设置了一个上下文:
<Context path="JSPTEST" docBase = "G:\Tomcat5.5"\webapps\JSPTEST"></Context>
并在http://localhost:8080/JSPTEST/filename.jsp
我意识到的第一件事是docBase实际上是服务器上的一个webapp,所以无论是否设置这个上下文,它仍然会在同一个url
上运行,那么重点是什么?
我安装了一个tomcat 7并在conf/context.xml
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中)?
答案 0 :(得分:3)
1-上下文描述了Web容器中的webb-app。在那里,您可以定义用于访问web-app path="JSPTEST"
的路径,资源所在的位置(文档库/根目录)docBase = "G:\Tomcat5.5"\webapps\JSPTEST"
以及其他内容,例如用于访问数据库的JNDI资源。
所以你在Tomcat 5中做的配置如下:
当我向服务器询问路径JSPTEST
(女巫是您的网络应用程序的根目录)时,他会查看相应上下文元素的docBase
中定义的物理目录。一旦服务器看起来比资源filename.jsp
进程(因为它不是静态内容,jsps首先需要编译并运行以生成html)并将其提供给客户端。
以同样的方式,您可以阅读为Tomcat 7制作的配置。
2-为了能够从Tomcat 7(或wahtever版本)检索资源hello.jsp
,网址应为http://localhost:8080/serverside/hello.jsp
物理存储内容的目录名称在访问内容的URL中不起作用。它是元素path
和docbase
之间的组合。
将上下文元素放在conf/context.xml
中,它本身有一个context
元素作为root是错误的,这就是导致你得到错误的原因(读取时{xml-parsing错误} { 1}})。有两种方法可以使用context.xml配置Web应用程序,看看here。仔细阅读第1点和第2点!
为了让事情顺利进行:
无论
1-在conf/context.xml
serverside.xml
且内容为<Context docBase="F:\work\bscit\serverside\practical" path="serverside" reloadable="true" ></Context>
的文件
或者
2-在名为conf/Catalina/localhost/
的{{1}}内创建一个目录,并将你的jsps放在其中。在这种情况下,不需要webapps
文件,除非您要为网络应用定义其他资源,serverside
和serversid/META-INF/context.xml
元素可能不会显示在其中。
然后拨打docBase
(1)有利于发展,(2)有利于生产。