gpt4 book ai didi

apache - 在 Apache Tomcat 中运行 Servlet

转载 作者:行者123 更新时间:2023-11-28 21:56:00 25 4
gpt4 key购买 nike

我正在学习 Java Ranch Cattle Drive 在线教程并开始着手 Servlet 项目。我想安装和运行 Apache 而不是 Orion,因为我想学习更主流的 HTTP 服务器。

我在我的机器上启动并运行了 Apache(这是一个 Windows XP/Cygwin 环境,所以我使用的是最新版本的 cygwin 附带的 Apache 包,目前是 httpd 版本 1.3.33)

我要将浏览器定向到 http://localhost并且服务器正在 C:\cygwin\var\www\htdocs 正确获取欢迎页面 (index.html)。

我已经安装了 Java EE 并且能够编译以下 Servlet:

import java.io.* ;
import javax.servlet.http.* ;

public class BeeServlet extends HttpServlet
{

public void doGet( HttpServletRequest request , HttpServletResponse response )
{
response.setContentType("text/html");
try
{
PrintWriter out = response.getWriter();
out.println( "a-buzz-buzz ..." );
out.close();
}
catch( Exception e )
{
System.out.println( "cannot get writer: " + e );
}
}

}

这会编译成一个 .class 文件而不会出错。我的问题是,我应该在服务器的什么位置安装这个文件?

该文件名为 BeeServlet.class,教程说将浏览器定向到 http://localhost/servlet/BeeServlet在 Web 服务器的适当目录中安装 BeeServlet.class 之后。

(编辑:我已经成功安装了 Tomcat 并显示了基本的欢迎页面,如下面的步骤所述。我仍然不确定将 .class 文件放在哪里或如何访问它):

以下是安装 Tomcat 并通过 Cygwin 运行它的步骤:

  1. 转到 http://tomcat.apache.org/并下载最新版本的Tomcat(以上系统配置,选择32位/64位Windows Service Installer方式,会在C:\Program Files\Apache Software Foundation\Tomcat 7.0创建一个9MB的安装)。

  2. 将此路径添加到 Windows 系统环境变量“路径”

  3. 启动 Cygwin bash shell

  4. 键入“tomcat7”(设置路径后,它将在上述路径中找到此 .exe)。这将启动 tomcat 服务器。

  5. 启动浏览器并将其定向到 http://localhost:8080 .这将调出 Tomcat 欢迎屏幕(实际上是 Tomcat 读取文件:C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\ROOT\index.jsp)。

  6. 在 C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps 下创建名为 examples\WEB-INF\classes 的新目录。

  7. 将 @WebServlet 注释添加到源代码文件(这将位于任何导入之后):@WebServlet(urlPatterns={"/servlet/BeeServlet"})。编译BeeServlet.java文件,将.class文件放在C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\examples\WEB-INF\classes\BeeServlet.class

  8. 将您的浏览器指向 http://localhost:8080/examples/servlet/BeeServlet

最佳答案

您需要让 servletcontainer 知道您有一个它必须执行的 servlet。由于您已经在使用 Tomcat 7.0,因此 @WebServlet注释应该足够了。

@WebServlet(urlPatterns={"/servlet/BeeServlet"})
public class BeeServlet extends HttpServlet {
// ...
}

或者通过在 web.xml 中声明的旧方法(可能就像 JavaRanch 教程应该提到的那样)。

<servlet>
<servlet-name>beeServlet</servlet-name>
<servlet-class>BeeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>beeServlet</servlet-name>
<url-pattern>/servlet/BeeServlet</url-pattern>
</servlet-mapping>

请注意,将类放在默认包中是一种不好的做法。如果您希望类对包内的类可见,您应该将类​​放在包中。用纯 Java 编写的 servletcontainer 也需要能够看到它们。现在,Tomcat 对此进行了修改,但这仅适用于特定版本/配置。总是,总是将 servlet 类放在一个包中。

另见:


与具体问题无关:

I've installed Java EE

请注意,从 Oracle.com 下载的 Java EE 基本上包含 Glassfish 应用服务器以及一些文档。如果您只想在 Tomcat 上运行 servlet,则不需要它。

另见:

关于apache - 在 Apache Tomcat 中运行 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6025735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com