Jetty實戰之 嵌入式Jetty運行Servlet

jopen 12年前發布 | 1K 次閱讀 pyClamd

在嵌入式Jetty中,有時候我們想運行一些的Servlet,此時就需要創建創建Context,然后讓自己的Servlet運行在這些ServletContext中。

  1. 首先創建一個ServletContextServer類,用來初始化web應用程序的Context,并且指定Servlet和Servlet匹配的 url。這里指定了兩個Servlet,分別是HelloServlet和GoodbyeServlet,并分別對應/hello/和/goodbye /
    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();
}

}</pre>2. 兩個簡單的Servlet:HelloServlet和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());
}

}</pre>3. 運行ServletContextServer類,然后分別訪問以下四個url

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

 

4. 除了上面的方式外,也可以創建兩個個Context,分別綁定到"/hello"和"/goodbye",如下:

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();
}

}</pre>

轉自:http://blog.csdn.net/kongxx/article/details/7230080

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!