繁体   English   中英

在简单的java服务器上部署servlet

[英]deploy servlet on simple java server

我一直在玩java服务器和servlet。 但是仍有一个问题。 让我们说我写这样的服务器:

class server {
  public static void main(String[] args){
    int port = 8080;
    try{      
      ServerSocket ss = new ServerSocket(port);
      Socket s = ss.accept();
    }catch(Exception e){
      System.out.println("Something went wrong");
    }
  }
}

这将在端口8080上侦听httprequest。现在假设我有一个看起来像这样的servlet:

public class HelloWorld extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res)
                               throws ServletException, IOException {

    res.setContentType("text/html");
    PrintWriter out = res.getWriter();

    out.println("<HTML>");
    out.println("<HEAD><TITLE>Hello World</TITLE></HEAD>");
    out.println("<BODY>");
    out.println("<BIG>Hello World</BIG>");
    out.println("</BODY></HTML>");
  }
}

我可以轻松地使用像tomcat或glassfish这样的现有服务器来部署这个servlet。 但是可以从上面的简单服务器部署它吗?

不,你需要一个Servlet实现,或者你想重新发明轮子创建自己的。 例如, Catalina是Tomcat servlet的实现。

不需要。您需要java实现来处理servlet的代码并返回html。 基本上glassfish或tomcat是一个服务器,它监听你的请求,在后端运行java代码并返回结果。 在表面层面上,tomcat和glassfish使用基本服务器来捕获请求。 但是还有很多事情要做。

在简单的服务器中,没有什么可以处理用servlet编写的java代码。

您的服务器将返回servelet文本而不是运行它。

  1. 不是一个简单的方法。
  2. servlet需要一个java容器实现,比如tomcat或glassfish。如果你认为tomcat或glassfish太重,可以尝试jetty。

     public class HelloHandler extends AbstractHandler { public void handle(String target,Request baseRequest, HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=utf-8"); response.setStatus(HttpServletResponse.SC_OK); baseRequest.setHandled(true); response.getWriter().println("<h1>Hello World</h1>"); } } public static void main(String[] args) throws Exception { Server server = new Server(8080); server.setHandler(new HelloHandler()); server.start(); server.join(); } 
  3. 你也可以通过netty编写一个简单的Servlet实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM