内置jetty(转)ITeye - 亚美娱乐

内置jetty(转)ITeye

2019年04月03日09时25分45秒 | 作者: 尔容 | 标签: 一个,处理,运用 | 浏览: 2942

handler会设置response的状况、response的内容类型、而且符号request被处理了,最终才经过out生成response的内容。

3.2运转helloworld Handler

为了答应handler去处理http恳求,你有必要把它绑定到server实例上。下面的代码显现了jetty server是怎么和handler绑定的。

import org.eclipse.jetty.server.Server;
 * Created by zdd on 2017/4/1.
public class SimpleServer {
 public static void main(String[] args) throws Exception{
 Server server = new Server(8090);
 server.setHandler(new HelloHandler());
 server.start();
 server.join();
}

在jetty中,一般总会有一个或许多个handler区处理一切的恳求。有些handler会挑选其他指定的handler去做处理,例如(一个ContextHandlerCollection运用context path去挑选ContextHandler);还有一些是运用程序的逻辑去发作response,例如(ServletHandler将恳求转发给Servlet来处理),还有其他的一些是做一些无关的使命来生成response,例如(RequestLogHandler或许StatisticsHandler)。

后边的章节描绘了你能够像切面相同兼并多个handler。你能够看到一些有价值的handler在org.eclipse.jetty.server.handler包中。

4.Handler Collections and Wrappers

杂乱的恳求需求你兼并多个handler来处理。jetty供给了几个HandlerContainer接口的完结:

HandlerCollection:具有一个handler的调集而且调用顺序调用每个handler。当你想兼并计算和日志的handler这是很有用的。 HandlerList:一个handler的调集,会顺次调用这个调集里边的handler,直到如果有反常发作、response现已被提交、resquest.isHandled()被调用。你能够运用这个来兼并一些handler,例如调用handler来处理直到被匹配到的情况下。 HandlerWrapper:你能够运用这个来完结衔接handlers类似于面向切面编程的风格。例如,一个规范的web程序被完结成一个context、session、security和servlet的串联。 ContextHandlerClollection:一个特别的HandlerCollection,运用最长uri匹配准则来挑选handler。 5.Scoped Handlers
Server.handle(...)
 ContextHandler.doScope(...)
 ServletHandler.doScope(...)
 ContextHandler.doHandle(...)
 ServletHandler.doHandle(...)
 SomeServlet.service(...)
6.Resource Handler

下面的代码给你展现了你能够运用ReourceHandler去处理静态的资源。

public class FileServer {
 public static void main(String[] args) throws Exception{
 // 创立一个最基本的jetty server而且绑定8090端口
 // 如果把端口指定为0,那么程序会主动挑选一个可用的端口
 Server server = new Server(8090);
 ResourceHandler resourceHandler = new ResourceHandler();
 // 设置resourceHandler监听的目录
 resourceHandler.setDirectoriesListed(true);
 resourceHandler.setWelcomeFiles(new String[]{"idenx.html"});
 resourceHandler.setResourceBase(".");
 HandlerList handlers = new HandlerList();
 handlers.setHandlers(new Handler[]{resourceHandler, new DefaultHandler()});
 server.setHandler(handlers);
 server.start();
 server.join();
}

留意咱们运用了ResourceHandler和DefaultHandler,所以DefaultHandler关于没有匹配的恳求会友爱的回来404。

7.内置connectors

在上面的比如中,server实例都会绑定一个端口而且创立一个默许的connector来监听这个端口。可是,在内置jetty中,自定义一个或许多个connetor是很常见的。

7.1一个connector
public class OneConnector {
 public static void main(String[] args) throws Exception{
 Server server = new Server();
 ServerConnector http = new ServerConnector(server);
 http.setHost("localhost");
 http.setPort(8090);
 http.setIdleTimeout(30000);
 server.addConnector(http);
 server.setHandler(new HelloHandler());
 server.start();
 server.join();
}

在这个比如里connector处理http协议,由于这是ServerConnetor默许的装备。

7.2多connector

当装备多connector的时分,最好是多个connector享受相同的装备信息。为了完结这个你需求清晰的指定serverConnector的装备,运用的是ConnectionFactory这个实例。

8内置servlets

servlet是让应用程序经过逻来处理恳求的规范的方法。servlet和handler很类似。servlet在jetty中是被ServletHandler处理的。它运用规范的途径映射到一个servlet。

下面的代码创立了一个ServletHandler而且装备了一个简略的HelloServlet:

public class MinimalServlets {
 public static void main(String[] args) throws Exception{
 Server server = new Server(8090);
 ServletHandler handler = new ServletHandler();
 server.setHandler(handler);
 // 需求留意的是,这是个原生的servlet,你能够经过web.xml或许@WebServlet来装备
 handler.addServletWithMapping(HelloServlet.class,"/*");
 server.start();
 server.join();
class HelloServlet extends HttpServlet{
 @Override
 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 resp.setContentType("text/html");
 resp.setStatus(HttpServletResponse.SC_OK);
 resp.getWriter().println(" h1 hello from HelloServlet /h1 ");
 }
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    内置jetty(转)ITeye

    一个,处理,运用
  • 2

    java有值类型吗ITeye

    类型,引证,指向
  • 3
  • 4

    spring aopITeye

    署理,结构,调用
  • 5
  • 6

    Shell 练习题(append)ITeye

    实例,文件,上述
  • 7

    获取checkbox复选框的值ITeye

    依据,获取,拿到
  • 8

    Redis的耐久化机制ITeye

    耐久,方法,内存
  • 9
  • 10

    记一次线程池的运用ITeye

    线程,运用,行列