如何从主要方法加载servlet

时间:2019-02-18 13:50:07

标签: java servlets intellij-idea java-server

我有Main类,在那里我进行api请求并与数据库集成。 我还创建了servlet,我希望从客户端获取数据并将其放入数据库中。 它是Main类中的主要方法:

public static void main(String[] args) throws IOException {

    serverSocket = new ServerSocket(8888); // Server port
    System.out.println("Server started. Listening to the port 8888");

    initProviderList();
    initNewsAppDB();

    Thread newFeedsUpdate = new Thread(new NewFeedsUpdate(providerList));
    newFeedsUpdate.start();
}

它是servlet:

  @WebServlet(name = "GetClientTokenServlet")
public class GetClientTokenServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String token = request.getParameter("token");
        System.out.println(token);
    }

web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<web-app
        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
        version="4.0">

    <servlet>
        <servlet-name>GetClientTokenServlet</servlet-name>
        <servlet-class>GetClientTokenServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>GetClientTokenServlet</servlet-name>
        <url-pattern>/GetClientTokenServlet</url-pattern>
    </servlet-mapping>
</web-app>

如何将GetClientTokenServlet(能够侦听客户端调用)设置为主方法?

1 个答案:

答案 0 :(得分:1)

在大多数情况下,Java中的Web应用程序没有main方法。 main方法是由Servlet容器(例如Tomcat)实现的,这就是您实际运行的方法。 servlet容器通常通过在WAR file中找到它们的类和web.xml来发现应用程序的类和web.xml,而您已经放置在servlet容器定义的目录中,例如Tomcat的webapps目录。然后,该Servlet容器实例化您的web.xml文件中标识的servlet。

也就是说,有一些Web服务器可以实例化为自己的应用程序中的组件。通常用于此目的的服务器是Jetty。 Jetty是一种Web服务器,它将传入的请求传递到您定义的“处理程序”。您可以让Jetty从WAR文件中加载整个Web应用程序并实例化web.xml中定义的servlet,也可以使用ServletHandler手动注册servlet。在这种情况下,您不需要web.xml