如何编写Hello World Servlet示例

4

Java类

package com.example;

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

// Extend HttpServlet class
public class Helloworld extends HttpServlet {
    private String message;

    public void init() throws ServletException {
        // Do required initialization
        message = "Hello World";
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // Set response content type
        response.setContentType("text/html");
        // Actual logic goes here.
        PrintWriter out = response.getWriter();
        out.println("<h1>" + message + "</h1>");
    }

    public void destroy() {
        // do nothing.
    }
}

web.xml

<servlet>
        <servlet-name>HelloForm</servlet-name>
        <servlet-class>HelloForm</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloForm</servlet-name>
        <url-pattern>/HelloForm</url-pattern>
    </servlet-mapping>

提供了代码,但运行项目时没有输出,网页显示404错误。我们需要为servlet创建Jsp页面吗?我对servlet非常新,请帮忙编写“Hello World” Servlet。


1
Servlet-class 应该是 Helloworld 吗?好久没做这种事了... - MadProgrammer
请把下面这段与编程有关的内容翻译成中文。只返回翻译后的文本,不要进行任何解释或编辑。 否则,下面所有的答案都将失效。 - Pradeep Simha
6个回答

9

您创建了这样的servlet类:

public class Helloworld extends HttpServlet

但是在web.xml文件中,您有以下映射:

<servlet-class>HelloForm</servlet-class>

您需要使用相同的名称,否则会出现404错误。将您的Servlet名称更改为HelloForm或在web.xml中更改 <servlet-class>HelloWorld.


你提供的URL是什么? - Pradeep Simha
不对,试试输入 localhost:8080/ServlteExample/HelloWorld。 - Pradeep Simha
尝试重新启动服务器?你的项目名称是什么? - Pradeep Simha
maklee322@gmail.com,请在此电子邮件地址中使用。 - user2782773
你能否帮我做这个并发邮件给我,这样我就能知道我的错误在哪里了。 - user2782773
显示剩余2条评论

3

你的类位于com.example中。

因此,servlet-class应该,

<servlet-class>com.example.Helloworld</servlet-class>

我们只需要改变这个吗? - user2782773
是的,看起来只需要这个更改就足够了。而且你正在容器中部署它(tomcat或jboss),所以如果遇到问题,请在错误日志中发布。 - Himanshu Bhardwaj

2
现在您可以切换到Servlet 3.0。这非常简单。
@WebServlet("/example")
public class AnnotationServlet extends HttpServlet{

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter prinOut = response.getWriter();
        prinOut.write("Hello, This is the first servlet 3 annotation example");
    }

}

来自Java中的Servlet 3.0注释示例

这里是完整的Java Servlet教程


2
使用以下内容:
<servlet>
    <servlet-name>HelloForm</servlet-name>
    <servlet-class>com.example.Helloworld</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>HelloForm</servlet-name>
    <url-pattern>/HelloForm</url-pattern>
</servlet-mapping>

输入您的URL:例如localhost:8080/projectName/HelloForm。这样可能会起作用。我认为您是初学者,所以请参考此链接。这里有完整的教程...关于这个。


我已经将它更改为如下内容:<?xml version="1.0" encoding="UTF-8"?> <web-app> <display-name>Helloworld</display-name> <servlet> <servlet-name>Helloworld</servlet-name> <servlet-class>com.example.Helloworld</servlet-class> </servlet><servlet-mapping> <servlet-name>Helloworld</servlet-name> <url-pattern>/Helloworld</url-pattern> </servlet-mapping> </web-app> - user2782773
1
@user2782773 展示你的目录树 :) - 0decimal0

0
您还没有指定servlet类的包名 请按照以下格式编写: com.example.Helloworld

仍然无法工作,我已经更改了包名 com.example.Helloworld。 - user2782773

0

以下方法可行。

在webapps中创建一个文件夹(项目名称,例如project)。 在项目文件夹内创建另一个文件夹,命名为WEB-INF。 在WEB-INF文件夹中粘贴web.inf文件。 在项目文件夹中创建另一个文件夹并命名为classes,将.class文件放入其中。 现在按照Himanshu Bhardwaj的建议修改你的web.xml文件。 重新启动服务器。然后运行。


我已经重新启动了服务器,但仍然无法正常工作。我不知道在哪里犯了错误,因为我只是从谷歌上复制粘贴了一个示例。我们需要为此创建JSP页面吗? - user2782773
@user2782773,你按照我建议的文件夹结构做了吗? - SpringLearner
@user2782773 那么进入Tomcat文件夹,找到webapps文件夹,按照我的说法进行操作。重启服务器并运行您的应用程序。 - SpringLearner
我已经尝试了,但是没有得到输出。您能否请提供一个简单的“Hello World”示例给我,我的ID是maklee322@gmail.com - user2782773
@user2782773,我在工作中无法访问电子邮件,你可以在StackOverflow上发布另一个问题。还有其他用户也会帮助你的。 - SpringLearner
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接