我有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(能够侦听客户端调用)设置为主方法?
答案 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
。