[英]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文本而不是运行它。
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(); }
你也可以通过netty编写一个简单的Servlet实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.