Jar:
1) 单个Handle
public class HelloWorldHandle {
public static void main(String[] args)
throws Exception
{
Server server = new Server();
Connectorconnector=newSocketConnector();
connector.setPort(8080);
server.setConnectors(new Connector[]{connector});
Handler handler=new HelloHandler();
server.setHandler(handler);
server.start();
server.join();
}
public static class HelloHandler extends AbstractHandler
{
@Override
public void handle(String target,HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException,ServletException
{
Request base_request = (request instanceof Request) ? (Request)request:HttpConnection.getCurrentConnection().getRequest();
base_request.setHandled(true);
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>HelloOneHandler</h1>");
}
}
}
在浏览器输入http://localhost:8080/便可以访问到这个Hanele,页面显示
Hello OneHandler。
事实上只要以上面URL开头即可。例如http://localhost:8080/ryuh/ouigjf也可。
2) Context
只有匹配Context Path的请求才会被响应。
public class HelloWorldContext {
public static void main(String[] args)
throws Exception
{
Server server = new Server();
Connectorconnector=newSocketConnector();
connector.setPort(8080);
server.setConnectors(new Connector[]{connector});
ContextHandlercontext = newContextHandler();
context.setContextPath("/context");
context.setResourceBase(".");
context.setClassLoader(Thread.currentThread().getContextClassLoader());
server.setHandler(context);
Handler handler=new HelloHandler();
context.setHandler(handler);
server.start();
server.join();
}
public static class HelloHandler extends AbstractHandler
{
@Override
public voidhandle(String target, HttpServletRequest request, HttpServletResponse response,int dispatch) throws IOException,ServletException
{
Request base_request = (request instanceof Request) ?(Request)request:HttpConnection.getCurrentConnection().getRequest();
base_request.setHandled(true);
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>HelloOneHandler</h1>");
}
}
}
这样以http://localhost:8080/context开头的请求才会被响应。
3) Java web项目嵌入Jetty
以上实际用处并不大,真正有用的如何在Java Web项目中嵌入Jetty.
建立一个maven的web项目。
使用Eclipse的runJettyRun插件运行,用浏览器可以访问,这个项目就是可用的。
public static void main(String[] args) throws Exception
{
String jetty_home = System.getProperty("jetty.home","..");
System.out.println(jetty_home);
Server server = new Server(8080);
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setDescriptor("src/main/webapp/WEB-INF/web.xml");
webapp.setResourceBase("src/main/webapp");
server.setHandler(webapp);
server.start();
server.join();
}
这样当前应用就是它的默认应用,访问http://localhost:8080/便访问到web.xml中指定的<welcome-file>index.jsp</welcome-file>。
如果webapp.setContextPath("/jetty");
那么就应该用http://localhost:8080/jetty/来访问