「造个轮子」——设计 HTTP 请求全局上下文

  • 时间:
  • 浏览:1
  • 来源:uu直播快3平台

   }

public class TextAction implements WorkAction {

在起初 Cicada 默认只能响应 json,你这个 点嘴笨 欠缺灵活。加带后续也打算支持模板解析,全都不如直接在 API 中加入可让用户自行选泽不同的响应办法。

   public void execute(CicadaContext context, Param param) throws Exception {

* abstract execute method

* @param context current context

   /**

嘴笨 通过有有哪些特点只能看出有有哪些信息嘴笨 都和一次 请求、响应 密切相关,假若各个请求之间的信息应互不影响。

当然不止是头信息:

    * set cicada context

       ThreadLocalHolder.setCicadaContext(context) ;

这里只保存了请求的 URL、method 等信息,后续要加的请求头也存放上此处即可。

原应 目前 Cicada 开的tcp连接,占用的资源都有的是有点儿多,全都很久关闭了 Netty 所使用的tcp连接。

获取请求的 method(get/post)等。

首先是将 request 初始化:

很久输出 text/plain 时。

这里改的较大的很久有有另一个红框处,第一次很久做上下文初始化及赋值。

原应 后续新增了自身的tcp连接等资源,那也只能全版放上这里来进行释放。

成员变量是有有另一个接口 CicadaRequestCicadaResponse,名称就能看出肯定是存放请求和响应数据的。

后续会重点实现模板解析和注解请求路由完成,把 MVC 中的 view 完成就差太大了。

    */

*/

假若原有的业务 action 中也加入了有有另一个上下文的参数:

   }

       context.text("hello world url=" + url + " method=" + method);

CicadaRequestcicadaRequest=CicadaHttpRequest.init(defaultHttpRequest);

设置 cookie

   }

从前的价值形式是有的是非常熟悉,没错那很久 ThreadLocal,它只能将每个tcp连接的信息存储起来互不影响。

全都 CicadaContext.removeContext() 很久为了及时删除当前上下文。

/**

原应 这里不做补救,完后 随着请求的增多, ThreadLocal 里存放的数据也太大,最终肯定会原应 内存溢出。

最后有点儿非常重要,那很久 卸载上下文

这有有另一个具体的实现类都私有化了构造函数,补救结构破坏了整体性。

优雅停机。

ThreadLocal 的原理本次不做太大分析,只谈它在 Cicada 中的应用。

* @param param request params

   @Override

   public static void setCicadaContext(CicadaContext context){

主很久补救了有有另一个 issue,#9(Bosstcp连接数好像设置有误 ) #8(为啥返回纯字符串内容暂且JSON格式?)。

而你这个 函数本质使用的则是 ThreadLocal 来存放 CicadaContext

下面就来看看你这个 Context 是何如完成的。

接着很久补救业务,调用不同的 API 做不同响应。

}

最后还新增了有有另一个停机的办法。

       String method = context.request().getMethod();

而响应输出 application/json 时只只能把只能响应的对象写入到 json() 办法中.

嘴笨 也很久利用 Hook 函数实现的。

先看初始化。

Cicada 原应 更新了 4 个版本,雏形有的是了。

假若调整后的 API 如下。

第二次要自然很久卸载上下文。

   private static final ThreadLocal<CicadaContext> CICADA_CONTEXT= new ThreadLocal() ;

   public static void setContext(CicadaContext context){

Response 也是同理的。

支持多种响应办法(完后 只能 json,现在支持 text)。

比如全都场景下让当我们歌词 只能拿到本次请求中的头信息,这时就只能通过你这个 Context 对象直接获取。

业务补救完后 调用 responseContent() 进行响应:

接着将当前请求的上下文保存到了 CicadaContext 中。

responseContent(ctx,CicadaContext.getResponse().getHttpContent());

设置响应头。

很久存放本次请求的上下文自然是在真正请求埋点的地方 HttpDispatcher

获取请求头。

context.text() 来说:

全都本次的主要更新为:

先来看看 CicadaContext 你这个 类的主要成员变量以及办法。

       CICADA_CONTEXT.set(context) ;

       String url = context.request().getUrl();

void execute(CicadaContext context ,Param param) throws Exception;

嘴笨 很久设置了对应的响应办法、以及把响应内容写入了 CicadaResponsehttpContent中。

CicadaHttpRequest 自然是实现了 CicadaRequest 接口:

嘴笨 很久在上下文中拿到的响应办法及响应内容返回给客户端。

本次 Cicada 原应 更新到了  v1.0.3

    * @param context current context

先看看有了你这个 上下文完后 只能做有哪些。

Cicada 采用合理的tcp连接分配来补救接入请求tcp连接以及 IO tcp连接。

为了满足上者引入了 context

@CicadaAction("textAction")

获取请求 URL

* @throws Exception throw exception

其中我嘴笨 最核心也最有用的很久你这个 Context,并为此重构了大次要代码。

CicadaContext.setContext(new CicadaContext(cicadaRequest,cicadaResponse));