对我来说,您混合了两种主要技术-
tomcat作为Web容器,eclipse作为您的IDE。它们的集成使您感到困惑。现在让我们离开JSP并只谈论servlet,因为它会使您更加困惑
Tomcat无法使用源文件(* .java)。例如,您 必须 使用javac编译应用程序,并创建一个名为WAR的文件-网络归档-
一个zip文件,其中将包含您的已编译类并遵守tomcat可以理解的一些EE标准(也可以使用文件夹而不是zip,但请放下它此外,它与该说明无关)。
除其他外,这种战争(一旦正确编译)将包含您已编译的Servlet类HelloWorld.class。
一旦tomcat启动并在部署文件夹中识别出您的war文件,它将打开它并在运行时加载。没有编译,只有运行时加载。
现在人们在这里谈论JSP。实际上,JSP在技术上等同于servlet,但类似于HTML。您将文件扩展名为.jsp并构建您的WAR。Java编译器无法读取JSP文件,因此您应以某种方式将它们放入war文件中(通常是通过构建工具/
IDE为您完成)。最重要的是,您拥有在战争中创建的JSP文件。现在,您将战争付诸于Tomcat,它可以像以前一样识别并加载。此时,它仍然对您的JSP无效。
因此,部署了您的战争,启动了tomcat并从您的浏览器转到“ http:// localhost:8080 /
myfirstjsp.jsp ”。这时(第一次调用JSP)发生了很多事情:
- Tomcat获取浏览器的HTTP请求
- Tomcat意识到应该处理JSP文件
- Tomcat解析您的JSP文件
- Tomcat在内部将其编译为您不知道的某些类文件(其内部存储在Tomcat中),
- Tomcat在运行时加载此文件,并将其视为已编译的Java类。
下次调用JSP时,它将已经编译。
这里的最后一个问题是Eclipse如何与所有这些故事联系起来:)实际上,Eclipse与tomcat集成在一起,因此所有创建和部署战争的工作都是透明的。这就是为什么您在Eclipse上按下“播放”键,然后它编译您的项目,创建战争,确保Tomcat意识到这场战争(配置与部署相关的内容),启动Tomcat和瞧!-您的应用程序正在运行。
了解在什么级别发生什么很重要
希望这对
马克有帮助
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)