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

时间:2014-03-27 10:48:17

标签: java servlets

我一直在玩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。但是可以从上面的简单服务器部署它吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

  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实现。