Solon v2.7.5

一、Servlet 与 Solon 常见对象比较

</> markdown

1、常见对象比较

Solon 2.5.2Servlet 4.0说明
ContextHttpServletRequest + HttpServletResponse请求上下文
HandlerHttpServlet请求处理
FilterFilter请求过滤器
SessionStateHttpSession请求会话状态类
UploadedFileMultipartFile文件上传接收类
DownloadedFile/文件下载输出类
ModelAndView/模型视图输出类

Solon 还提供了些简化接口,比如( 更多可见:认识请求上下文(Context) ):

接口说明
ctx.realIp()获取用户端真实ip
ctx.paramAsInt(name)获取请求参数,并转为 int 类型
ctx.file(name)获取上传文件
ctx.outputAsJosn()输出并做为 json 内容类型

2、支持 Servlet 接口的插件

目前适配有:jdkhttp、jlhttp、smarthttp、jetty、undertow 等 http 通讯容器。其中支持 Servlet 有:

  • solon.boot.jetty
  • solon.boot.unertow

更多可见:生态 / Solon Boot

3、如何获得 Servlet 常用接口

框架在设计方面,是可以获取 context.request() 和 context.response() 对象的,只要类型能对上就可在 Mvc 里注入。所以可以通过参数注入,获得两个常用的 Servlet 对象:

@Controller
public class DemoController{
    @Mapping("hello")
    public void hello(HttpServletRequest req, HttpServletResponse res){
    
    }
}

按框架设计角度,如果是 jdkhttp 可以获取:

@Controller
public class DemoController{
    @Mapping("hello")
    public void hello(HttpExchange exch){
    
    }
}

如果是 jlkhttp 可以获取:

@Controller
public class DemoController{
    @Mapping("hello")
    public void hello(HTTPServer.Request req, HTTPServer.Response res){
    
    }
}

但千万别这么干 !!! 框架的设计是使用统一接口,从而自由切换不同的插件!!!