import java.io.File;
import java.io.IOException;
import java.util.Map; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.NCSARequestLog;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.HandlerWrapper;
import org.eclipse.jetty.server.handler.RequestLogHandler; public class ManyHandlers {
public static void main(String[] args) throws Exception {
Server server = new Server(); // create the handlers
Handler param = new ParamHandler();
Handler testHandler = new TestHandler();
HandlerWrapper wrapper = new HandlerWrapper() {
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
request.setAttribute("welcome", "Wylazy");
super.handle(target, baseRequest, request, response);
}
}; Handler hello = new HelloHandler();
wrapper.setHandler(hello);
Handler dft = new DefaultHandler(); //HandlerList会依次调用每一个Handler,直到某个Handler将请求标记为已处理,即setHandled(true);
HandlerList list = new HandlerList();
list.setHandlers(new Handler[]{testHandler, param, wrapper, dft});
server.setHandler(list); RequestLogHandler log = new RequestLogHandler();
log.setRequestLog(new NCSARequestLog(File.createTempFile("demo", "log").getAbsolutePath())); //HandlerCollection会依次调用每一个Handler,即使请求已经被处理了
// HandlerCollection handlers = new HandlerCollection();
// handlers.setHandlers(new Handler[] { list, log });
// server.setHandler(handlers); server.start();
server.join();
} public static class ParamHandler extends AbstractHandler {
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
Map params = request.getParameterMap();
if (params.size() > ) {
response.setContentType("text/plain");
response.getWriter().println(params);
baseRequest.setHandled(true);
}
//如果不设置该属性,则还会进入下一个handler
// baseRequest.setHandled(true);
}
}
public static class TestHandler extends AbstractHandler { @Override
public void handle(String s, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
String requestURI = httpServletRequest.getRequestURI();
System.out.println(requestURI);
if (requestURI.contains("/test")) {
httpServletResponse.setContentType("application/json");
httpServletResponse.setCharacterEncoding("utf-8");
httpServletResponse.getWriter().println("测试成功");
request.setHandled(true);
}
}
}
public static 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 World1</h1>");
response.getWriter().println("Request url: " + target);
}
} } 最后访问localhost:8080

jetty启动(server-connector-handle-start-join)的更多相关文章

  1. JFinal启动报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Connector

    - 错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/ ...

  2. Jetty启动配置解析

    目录 1. jetty概述 2. spring-jetty启动配置 1. jetty概述 维基百科:Jetty是一个纯粹的基于Java的网页服务器和Java Servlet容器. Jetty Serv ...

  3. Mvn+Jetty启动项目

    这里要注意,Mvn加jetty启动项目,主要用到的是Maven的jetty插件,和你下的Jetty服务器没什么关系. 我的运行环境是jdk1.7,Eclipse-mars,Maven是Eclipse自 ...

  4. 【技术贴】第二篇 :解决使用maven jetty启动后无法加载修改过后的静态资源

    之前写过第一篇:[技术贴]解决使用maven jetty启动后无法加载修改过后的静态资源 一直用着挺舒服的,直到今天,出现了又不能修改静态js,jsp等资源的现象.很是苦闷. 经过调错处理之后,发现是 ...

  5. Tomcat8源码笔记(七)组件启动Server Service Engine Host启动

    一.Tomcat启动的入口 Tomcat初始化简单流程前面博客介绍了一遍,组件除了StandardHost都有博客,欢迎大家指文中错误.Tomcat启动类是Bootstrap,而启动容器启动入口位于 ...

  6. The thumbprint of same asymmetric key is not same in 'SQL Server Connector for Microsoft Azure Key Vault' 1.0.4.0 and 'SQL Server Connector for Microsoft Azure Key

    https://support.microsoft.com/en-us/help/4470999/db-backup-problems-to-sql-server-connector-for-azur ...

  7. Jetty启动报错排查org.eclipse.jetty.util.MultiException: Multiple exceptions

    最近自己搭建了一个spring的项目,使用Maven做项目构建,使用JDK8,为了方便启动就使用jetty作为启动容器,但是却无意间步入了一个坑 [WARNING] Failed startup of ...

  8. weblogic无需用户名密码启动Server

    创建了Server-0. 但每次启动需要手工输入管理账户和密码. 并不方便. 现在要让它自动输入并启动.一. 新建security文件夹 # cd $WEBLOGIC_HOME/servers/Ser ...

  9. eclipse jetty启动内存溢出

    一.eclipse jetty启动内存溢出, 异常信息 Exception in thread "ConfigClientWorker-Default" java.lang.Out ...

  10. Appium客户端,命令行启动server

    目标:通过命令行启动Appium的server   1.通过命令行安装的Appium   直接命令行输入appium即可启动服务   2.安装的Appium客户端   可以查看客户端中打印的启动日志: ...

随机推荐

  1. Node初学者入门,一本全面的NodeJS教程

    作者: Manuel Kiessling  翻译: goddyzhao & GrayZhang & MondayChen 关于 本书致力于教会你如何用Node.js来开发应用,过程中会 ...

  2. poj3784Running Median——堆维护中间值

    题目:http://poj.org/problem?id=3784 将较小的数放入大根堆,较大的数放入小根堆,控制较小数堆大小比较大数堆小1,则较大数堆堆顶即为中位数. 代码如下: #include& ...

  3. saltstack syndic安装配置使用

    salt-syndic是做神马的呢?如果大家知道zabbix proxy的话那就可以很容易理解了,syndic的意思为理事,其实如果叫salt-proxy的话那就更好理解了,它就是一层代理,如同zab ...

  4. 面向对象(this关键字)

    package com_package2; public class Person3 { private int age; private String name; public int getAge ...

  5. CCD与CMOS的区别?

    我们在购买相机或是摄像机时,都会看到使用CMOS镜头或是CCD镜头,那么CCD与CMOS是什么意思呢,CCD与CMOS的区别是什么?首先,让我们了解CCD与CMOS的意思. CCDCCD使用一种高感光 ...

  6. Swing 添加Esc快捷键退出程序

    JFrame demo = new JFrame(); demo.addKeyListener( new KeyListener(){ public void keyReleased(KeyEvent ...

  7. WPF win7+vs2010开发的打印功能,怎么在XP系统上无法打印

    在wpf 中打印功能很强大,但最近是在win7上可以但是布置到xp上就不可以了,查了好多资料终于知道怎么回事了原来xp里没有.net framework3.5 安装一个就OK了要先安装4.0.

  8. strlen细节以及sizeof细节

    strlen细节以及sizeof细节前者会忽略结束符号,后者不会忽略结束符

  9. TypeScript完全解读(26课时)_汇总贴

    ECMAScript 6 入门:http://es6.ruanyifeng.com/ 官网:http://www.typescriptlang.org/ 中文网:https://www.tslang. ...

  10. HDU - 6341 多校4 Let Sudoku Rotate(状压dfs)

    Problem J. Let Sudoku Rotate Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K ...