# smart-servlet
**Repository Path**: amlove2/smart-servlet
## Basic Information
- **Project Name**: smart-servlet
- **Description**: smart-servlet 是一款实现了Servlet 3.1规范,支持多应用隔离部署的的 Web 容器。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://smartboot.gitee.io/book/smart-servlet/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 45
- **Created**: 2021-05-13
- **Last Updated**: 2021-05-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# smart-servlet
smart-servlet 是一款实现了Servlet 3.1规范,支持多应用隔离部署的的 Web 容器。
除此之外,smart-servlet 还是一款插件化容器,基于内置的沙箱环境确保 smart-servlet 拥有最精简的运行能力,用户还可以通过自定义插件扩展容器的服务能力。
## Part 1. 项目概述
smart-servlet 在 smart-http 的架构之上,通过继承 HttpHandle 实现了 Servlet 规范。这意味着任何 smart-http 服务都可以通过单独引入 smart-servlet 核心包的方式,将普通的 http 应用改造成 servlet 应用,而且这个成本是极低的。

**产品特色**
- 零学习成本,素未谋面,却已相知。保留用户原有的 Tomcat、Undertow 使用习惯。
- 朴实无华,用最初级的设计手法打造专业级服务器。
- 实现 Servlet 核心规范:request、response、session、cookie、dispatcher、servletContext。
- 插件化设计,自由 DIY 服务器。
- 延续一贯的极简、易用、高性能设计风格。
- 开箱即用,运行程序包、maven本地开发/调试插件、springboot starter 一应俱全,满足你的开发、部署需求。
**有所不为**
有些规范我们默认不会提供实现方案,毕竟时代不一样了。
很多东西在当下已经过时或有了更好的替代方案,我们认为是时候跟过去告别了。
- JNDI
- Security Role
- JSP
### 工程模块
- smart-servlet 【工程主目录】
- servlet-core【servlet规范实现核心包】
- plugins【容器可扩展插件】
- dispatcher【RequestDispatcher插件,**必选**】
- session【HttpSession插件,**可选**】
- websocket【 JSR 356 规范插件,**可选**】
- smart-servlet-maven-plugin【业务系统通过pom.xml集成本地开发环境】
- spring-boot-start【springboot业务系统通过pom.xml集成本地开发环境】
- archives【用于部署War包的可执行环境软件包,开箱即用】
## Part 2. 操作手册
### 准备工作
smart-servlet 还未正式发布,如需体验请从本仓库下载源码并导入 IDE 完成工程编译,编译执行顺序如下:
1. 路径:smart-servlet/pom.xml,执行`mvn install`。当控制台出现以下信息时,说明编译成功。
```she
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] smart-servlet-parent ............................... SUCCESS [ 1.168 s]
[INFO] servlet-core ....................................... SUCCESS [ 10.142 s]
[INFO] smart-servlet-spring-boot-starter .................. SUCCESS [ 2.107 s]
[INFO] smart-servlet-maven-plugin ......................... SUCCESS [ 6.330 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
```
2. 路径:smart-servlet/plugins/pom.xml,执行`mvn install`。当控制台出现以下信息时,说明编译成功。
```she
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for servlet-plugins-parent 0.1.4-SNAPSHOT:
[INFO]
[INFO] servlet-plugins-parent ............................. SUCCESS [ 2.403 s]
[INFO] plugin-session ..................................... SUCCESS [ 3.104 s]
[INFO] plugin-dispatcher .................................. SUCCESS [ 2.005 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
```
3. 路径:smart-servlet/archives/pom.xml,执行`mvn install`。当控制台出现以下信息时,说明编译成功。
```shell
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
```
### 2.1 示例演示
> 特别说明:smart-servlet 提供的演示文件来自 Tomcat 的示例,存放于`smart-servlet/archives/webapps`目录下。
1. 完成前面的工程编译后,运行archives模块中的`org.smartboot.servlet.starter.Bootstrap`启动服务器。
2. 若启动过程无任何异常,打开浏览器访问 [http://127.0.0.1:8080/examples](http:127.0.0.1:8080/examples)。
### 2.2 业务系统集成smart-servlet
根据业务工程实际情况选择相应的集成方式。
- maven plugin
适用于传统的 Servlet 或者 Spring MVC 工程,且必须是 maven 工程。需要在 web 模块所在的 pom.xml 中加入以下配置,若存在端口冲突自行调整。完成配置后通过:`mvn smart-servlet:run` 启动服务。
```xml
org.smartboot.servlet
smart-servlet-maven-plugin
0.1.4-SNAPSHOT
8080
org.smartboot.servlet
plugin-session
0.1.4-SNAPSHOT
org.smartboot.servlet
plugin-dispatcher
0.1.4-SNAPSHOT
```
- springboot starter
对于 Springboot 提供的集成方式,替换原 spring-boot-starter-web 默认绑定的 Servlet 容器。
```xml
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.smartboot.servlet
smart-servlet-spring-boot-starter
0.1.4-SNAPSHOT
```
## 特别说明
本项目还处于研发阶段,还未完成所有 Servlet 标准的兑现。如若在使用过程中发现问题可提 [Issues](https://gitee.com/smartboot/smart-servlet/issues) 反馈,我们会尽快安排处理,感谢您的理解和支持!
### 代码贡献者
[三刀](https://gitee.com/smartdms)、[**@cwq108**](https://gitee.com/cwq108)、[**@slef**](https://gitee.com/slef)
## 项目推荐
- [smart-socket](https://gitee.com/smartboot/smart-socket)
极简、易用、高性能的AIO通信框架,5G时代的通信微内核,适用于IM、RPC、IoT等诸多领域
- [smart-http](https://gitee.com/smartboot/smart-http)
基于smart-socket实现的轻量级http服务器