一、Servlet 与 Solon 常见对象比较
1、常见对象比较
Solon | Servlet 4.0 | 说明 |
---|---|---|
Context | HttpServletRequest + HttpServletResponse | 请求上下文 |
Handler | HttpServlet | 请求处理 |
Filter | Filter | 请求过滤器 |
SessionState | HttpSession | 请求会话状态类 |
UploadedFile | MultipartFile | 文件上传接收类 |
DownloadedFile | / | 文件下载输出类 |
ModelAndView | / | 模型视图输出类 |
Solon 还提供了些简化接口,比如( 更多可见:认识请求上下文(Context) ):
接口 | 说明 |
---|---|
ctx.realIp() | 获取用户端真实ip |
ctx.paramAsInt(name) | 获取请求参数,并转为 int 类型 |
ctx.file(name) | 获取上传文件 |
ctx.outputAsJson(str) | 输出并做为 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){
}
}
但千万别这么干 !!! 框架的设计是使用统一接口,从而自由切换不同的插件!!!