我正在Tomcat 7.0和Eclipse中使用。Tomcat服务器与Eclipse同步。创建完第一个类之后,我将.java文件放在src /(默认程序包)/HelloWorld.java下(我不知道这是一种好习惯,仅用于测试)
内容如下,相当简单:
import java.io.*; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; @WebServlet("/HelloWorld") public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println ("Hello World"); } }
很多教程声称我必须使用它们javac来编译代码。但是我什么也没做,它运行没有问题。同样,每次我更改代码时,它都会像魔术一样立即更新。某些东西必须在工作,但我不知道它是什么。
javac
是的,这显然是一个新手问题,因此欢迎您提供任何帮助。如果您有任何系统的且易于遵循的教程链接,也更好。我正在搜索他们几天,但得到了许多不一致的答案。
对我来说,您混合了两种主要技术- 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)发生了很多事情:
下次调用JSP时,它将已经编译。
这里的最后一个问题是Eclipse如何与所有这些故事联系起来:)实际上,Eclipse与tomcat集成在一起,因此所有创建和部署战争的工作都是透明的。这就是为什么您在Eclipse上按下“播放”键,然后它编译您的项目,创建战争,确保Tomcat意识到这场战争(配置与部署相关的内容),启动Tomcat和瞧!-您的应用程序正在运行。
了解在什么级别发生什么很重要
希望这对 马克有帮助