Jetty combat (5) embedded Jetty running Servlet

In embedded Jetty, sometimes we want to run some servlets, then we need to create a Context, and then let our servlets run in these ServletContexts.

1. First create a ServletContextServer class to initialize the Context of the web application, and specify the url that matches the servlet and the servlet. Two servlets are specified here, HelloServlet and GoodbyeServlet, and correspond to /hello/* and /goodbye/* respectively.

package com.google.code.garbagecan.jettystudy.sample5;  
  
import org.eclipse.jetty.server.Server;  
import org.eclipse.jetty.servlet.ServletContextHandler;  
import org.eclipse.jetty.servlet.ServletHolder;  
  
public class ServletContextServer {  
    public static void main(String[] args) throws Exception {  
        Server server = new Server(8080);  
  
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);  
        context.setContextPath("/");  
        server.setHandler(context);  
  
        // http://localhost:8080/hello  
        context.addServlet(new ServletHolder(new HelloServlet()), "/hello");  
        // http://localhost:8080/hello/kongxx  
        context.addServlet(new ServletHolder(new HelloServlet("Hello Kongxx!")), "/hello/kongxx");  
  
        // http://localhost:8080/goodbye  
        context.addServlet(new ServletHolder(new GoodbyeServlet()), "/goodbye");  
        // http://localhost:8080/goodbye/kongxx  
        context.addServlet(new ServletHolder(new GoodbyeServlet("Goodbye kongxx!")), "/goodbye/kongxx");  
          
        server.start();  
        server.join();  
    }  
}  

 2. Two simple Servlets: HelloServlet and GoodbyeServlet:

package com.google.code.garbagecan.jettystudy.sample5;  
  
import java.io.IOException;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
public class HelloServlet extends HttpServlet {  
    private static final long serialVersionUID = 1L;  
    private String msg = "Hello World!";  
  
    public HelloServlet() {  
    }  
  
    public HelloServlet(String msg) {  
        this.msg = msg;  
    }  
  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        response.setContentType("text/html");  
        response.setStatus(HttpServletResponse.SC_OK);  
        response.getWriter().println("<h1>" + msg + "</h1>");  
        response.getWriter().println("session=" + request.getSession(true).getId());  
    }  
}  
  
package com.google.code.garbagecan.jettystudy.sample5;  
  
import java.io.IOException;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
public class GoodbyeServlet extends HttpServlet {  
    private static final long serialVersionUID = 1L;  
    private String msg = "Goodbye!";  
  
    public GoodbyeServlet() {  
    }  
  
    public GoodbyeServlet(String msg) {  
        this.msg = msg;  
    }  
  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        response.setContentType("text/html");  
        response.setStatus(HttpServletResponse.SC_OK);  
        response.getWriter().println("<h1>" + msg + "</h1>");  
        response.getWriter().println("session=" + request.getSession(true).getId());  
    }  
}  

 3. Run the ServletContextServer class, and then access the following four urls respectively

 

  http://localhost:8080/hello
  http://localhost:8080/hello/kongxx
  http://localhost:8080/goodbye
  http://localhost:8080/goodbye/kongxx

 

4. In addition to the above method, you can also create two Contexts, which are bound to "/hello" and "/goodbye" respectively, as follows:

package com.google.code.garbagecan.jettystudy.sample5;  
  
import org.eclipse.jetty.server.Handler;  
import org.eclipse.jetty.server.Server;  
import org.eclipse.jetty.server.handler.ContextHandlerCollection;  
import org.eclipse.jetty.servlet.ServletContextHandler;  
import org.eclipse.jetty.servlet.ServletHolder;  
  
public class MultiContextServer {  
    public static void main(String[] args) throws Exception {  
        Server server = new Server(8080);  
  
        // http://localhost:8080/hello/kongxx  
        ServletContextHandler context1 = new ServletContextHandler(ServletContextHandler.SESSIONS);  
        context1.setContextPath("/hello");  
        context1.setResourceBase(".");  
        context1.setClassLoader(Thread.currentThread().getContextClassLoader());  
        context1.addServlet(new ServletHolder(new HelloServlet("Hello Kongxx!")), "/kongxx");  
  
        // http://localhost:8080/goodbye/kongxx  
        ServletContextHandler context2 = new ServletContextHandler(ServletContextHandler.SESSIONS);  
        context2.setContextPath("/goodbye");  
        context2.setResourceBase(".");  
        context2.setClassLoader(Thread.currentThread().getContextClassLoader());  
        context2.addServlet(new ServletHolder(new GoodbyeServlet("Goodbye kongxx!")), "/kongxx");  
  
        ContextHandlerCollection contexts = new ContextHandlerCollection();  
        contexts.setHandlers(new Handler[] { context1, context2 });  
  
        server.setHandler(contexts);  
  
        server.start();  
        server.join();  
    }  
}  

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326385928&siteId=291194637