### 1、常见对象比较

|  Solon  | Servlet 4.0 | 说明 |
| --------- | -------- | -------- |
| Context       | HttpServletRequest + HttpServletResponse     | 请求上下文     |
| Handler       | HttpServlet | 请求处理 |
| Filter           | Filter | 请求过滤器 |
| | |
| SessionState     | HttpSession    | 请求会话状态类     |
| | |
| UploadedFile         | MultipartFile     | 文件上传接收类     |
| DownloadedFile     |  /    | 文件下载输出类     |
| ModelAndView       | /     | 模型视图输出类     |


Solon 还提供了些简化接口，比如（ 更多可见：[认识请求上下文（Context）](/article/216) ）：


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




### 2、支持 Servlet 接口的插件

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

* solon-server-jetty 
* solon-server-unertow 

更多可见：[生态 / Solon Server](/article/family-solon-server)

### 3、如何获得 Servlet 常用接口

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

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

按框架设计角度，如果是 jdkhttp 可以获取：

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

如果是 jlkhttp 可以获取：

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

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

