(转)Jetty实战之 嵌入式Jetty运行Servlet .
本文链接:http://blog.csdn.net/kongxx/article/details/7230080
在嵌入式Jetty中,有时候我们想运行一些的Servlet,此时就需要创建创建Context,然后让自己的Servlet运行在这些ServletContext中。
1. 首先创建一个ServletContextServer类,用来初始化web应用程序的Context,并且指定Servlet和Servlet匹配的url。这里指定了两个Servlet,分别是HelloServlet和GoodbyeServlet,并分别对应/hello/*和/goodbye/*。
[java] view plaincopyprint?
01.package com.google.code.garbagecan.jettystudy.sample5;
02.
03.import org.eclipse.jetty.server.Server;
04.import org.eclipse.jetty.servlet.ServletContextHandler;
05.import org.eclipse.jetty.servlet.ServletHolder;
06.
07.public class ServletContextServer {
08. public static void main(String[] args) throws Exception {
09. Server server = new Server(8080);
10.
11. ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
12. context.setContextPath("/");
13. server.setHandler(context);
14.
15. // http://localhost:8080/hello
16. context.addServlet(new ServletHolder(new HelloServlet()), "/hello");
17. // http://localhost:8080/hello/kongxx
18. context.addServlet(new ServletHolder(new HelloServlet("Hello Kongxx!")), "/hello/kongxx");
19.
20. // http://localhost:8080/goodbye
21. context.addServlet(new ServletHolder(new GoodbyeServlet()), "/goodbye");
22. // http://localhost:8080/goodbye/kongxx
23. context.addServlet(new ServletHolder(new GoodbyeServlet("Goodbye kongxx!")), "/goodbye/kongxx");
24.
25. server.start();
26. server.join();
27. }
28.}
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. 两个简单的Servlet:HelloServlet和GoodbyeServlet:
[java] view plaincopyprint?
01.package com.google.code.garbagecan.jettystudy.sample5;
02.
03.import java.io.IOException;
04.import javax.servlet.ServletException;
05.import javax.servlet.http.HttpServlet;
06.import javax.servlet.http.HttpServletRequest;
07.import javax.servlet.http.HttpServletResponse;
08.
09.public class HelloServlet extends HttpServlet {
10. private static final long serialVersionUID = 1L;
11. private String msg = "Hello World!";
12.
13. public HelloServlet() {
14. }
15.
16. public HelloServlet(String msg) {
17. this.msg = msg;
18. }
19.
20. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
21. response.setContentType("text/html");
22. response.setStatus(HttpServletResponse.SC_OK);
23. response.getWriter().println("<h1>" + msg + "</h1>");
24. response.getWriter().println("session=" + request.getSession(true).getId());
25. }
26.}
27.
28.package com.google.code.garbagecan.jettystudy.sample5;
29.
30.import java.io.IOException;
31.import javax.servlet.ServletException;
32.import javax.servlet.http.HttpServlet;
33.import javax.servlet.http.HttpServletRequest;
34.import javax.servlet.http.HttpServletResponse;
35.
36.public class GoodbyeServlet extends HttpServlet {
37. private static final long serialVersionUID = 1L;
38. private String msg = "Goodbye!";
39.
40. public GoodbyeServlet() {
41. }
42.
43. public GoodbyeServlet(String msg) {
44. this.msg = msg;
45. }
46.
47. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
48. response.setContentType("text/html");
49. response.setStatus(HttpServletResponse.SC_OK);
50. response.getWriter().println("<h1>" + msg + "</h1>");
51. response.getWriter().println("session=" + request.getSession(true).getId());
52. }
53.}
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. 运行ServletContextServer类,然后分别访问以下四个url
http://localhost:8080/hello
http://localhost:8080/hello/kongxx
http://localhost:8080/goodbye
http://localhost:8080/goodbye/kongxx
4. 除了上面的方式外,也可以创建两个个Context,分别绑定到"/hello"和"/goodbye",如下:
[java] view plaincopyprint?
01.package com.google.code.garbagecan.jettystudy.sample5;
02.
03.import org.eclipse.jetty.server.Handler;
04.import org.eclipse.jetty.server.Server;
05.import org.eclipse.jetty.server.handler.ContextHandlerCollection;
06.import org.eclipse.jetty.servlet.ServletContextHandler;
07.import org.eclipse.jetty.servlet.ServletHolder;
08.
09.public class MultiContextServer {
10. public static void main(String[] args) throws Exception {
11. Server server = new Server(8080);
12.
13. // http://localhost:8080/hello/kongxx
14. ServletContextHandler context1 = new ServletContextHandler(ServletContextHandler.SESSIONS);
15. context1.setContextPath("/hello");
16. context1.setResourceBase(".");
17. context1.setClassLoader(Thread.currentThread().getContextClassLoader());
18. context1.addServlet(new ServletHolder(new HelloServlet("Hello Kongxx!")), "/kongxx");
19.
20. // http://localhost:8080/goodbye/kongxx
21. ServletContextHandler context2 = new ServletContextHandler(ServletContextHandler.SESSIONS);
22. context2.setContextPath("/goodbye");
23. context2.setResourceBase(".");
24. context2.setClassLoader(Thread.currentThread().getContextClassLoader());
25. context2.addServlet(new ServletHolder(new GoodbyeServlet("Goodbye kongxx!")), "/kongxx");
26.
27. ContextHandlerCollection contexts = new ContextHandlerCollection();
28. contexts.setHandlers(new Handler[] { context1, context2 });
29.
30. server.setHandler(contexts);
31.
32. server.start();
33. server.join();
34. }
35.}
(转)Jetty实战之 嵌入式Jetty运作Servlet
(转)Jetty实战之 嵌入式Jetty运行Servlet .本文链接:http://blog.csdn.net/kongxx/article/details/723008
