开源 Servlet 服务器 smart-servlet v0.1.1 发布

代码狂魔 2020-12-21 13:11:16 ⋅ 759 阅读

smart-servlet 是一款实现了 Servlet 3.1 规范,支持多应用隔离部署的的 Web 服务器。

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 一应俱全,满足你的开发、部署等各项需求。

更新内容

  1. 升级 smart-http 至最新版 1.0.21。
  2. 根据《Servlet3.1规范中文版》12.2 映射规范 中的定义重新设计 URI 在servlet、filter中的路由解析算法,并通过索引的方式降低过程中字符串的内存开销。
  3. PrintWriter 输出内容支持缓冲区暂存。
  4. 重构 url-mapping 处理逻辑。
  5. servlet、filter 匹配结果支持缓存,提升处理性能,降低内存开销。
  6. 优化 cookie 解析方式,提升内存利用率。
  7. 实现 servlet 规范:getRequestedSessionId、isRequestedSessionIdValid、isRequestedSessionIdFromCookie、isRequestedSessionIdFromURL、isRequestedSessionIdFromUrl。
  8. 采用 org.w3c.dom 解析 web.xml,解除 dom4j 的依赖。

项目体验

  1. 下载项目进行本地编译。

  2. 运行archives模块中的org.smartboot.servlet.starter.Bootstrap启动服务器。

  3. 若启动过程无任何异常,打开浏览器访问 http://127.0.0.1:8080/examples

应用集成

根据业务工程实际情况选择相应的集成方式。

  • maven plugin

    适用于传统的 Servlet 或者 Spring MVC 工程,且必须是 maven 工程。需要在 web 模块所在的 pom.xml 中加入以下配置,若存在端口冲突自行调整。完成配置后通过:mvn smart-servlet:run 启动服务。

    <!-- pom.xml -->
    <project>
     <build>
       <plugins>
         <plugin>
           <groupId>org.smartboot.servlet</groupId>
           <artifactId>smart-servlet-maven-plugin</artifactId>
           <version>0.1.1</version>
           <configuration>
             <port>8080</port>
           </configuration>
           <dependencies>
             <dependency>
               <groupId>org.smartboot.servlet</groupId>
               <artifactId>plugin-session</artifactId>
               <version>0.1.1</version>
             </dependency>
             <dependency>
               <groupId>org.smartboot.servlet</groupId>
               <artifactId>plugin-dispatcher</artifactId>
               <version>0.1.1</version>
             </dependency>
           </dependencies>
         </plugin>
       </plugins>  
     </build>
    </project>
  • springboot starter

    面向 Springboot 提供的集成方式,替换原 spring-boot-starter-web 默认绑定的 Servlet 容器。

     <!-- pom.xml -->
     <project>
       <dependencies>
         <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
           <exclusions>
             <exclusion>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-tomcat</artifactId>
             </exclusion>
           </exclusions>
         </dependency>
         <dependency>
           <groupId>org.smartboot.servlet</groupId>
           <artifactId>smart-servlet-spring-boot-starter</artifactId>
           <version>0.1.1</version>
         </dependency>
       </dependencies>
     </project>

全部评论: 0

    我有话说:

    国产自研 servlet 容器,smart-servlet 体验版发布

    smart-servlet 是一款实现了Servlet 3.1规范,支持多应用隔离部署的的 Web 容器。除此之外,smart-servlet 还是一款插件化容器,用户可以通过开发自定义插件扩展容器

    smart-http 1.0.18 发布,轻量级的国产 HTTP 服务器

    smart-http 是一款采用 Java 语言编写的 Http 服务器,有别于业界知名的 Web容器:Tomcat、Undertow,smart-http 并不支持 Servlet 规范,但对于

    开源资讯】JWCloud 专业版 v1.0.0 发布,基于 SpringCloud 研发的微服务框架

    简介 JavaWeb_Cloud 微服务平台是一款基于 SpringCloud 框架研发的分布式微服务框架,主要使用技术栈包括: SpringCloud、Vue、ElementUI

    smart-socket v1.5.1 发布,bug 修复与 UDP 更新

    smart-socket 是一个 AIO 通信框架,可以快速、轻松地开发 Client/Server 网络应用程序。它大大简化了网络编程难度和复杂度,可广泛应用与各类TCP/UDP的通信场景

    开源资讯】cppweb 1.0.2 发布,基于 C++ 开发的 Web 服务器

    cppweb是一个基于C++开发的 WEB 服务器,支持C/C++、Python、Java等多语言混合开发WEB应用。 cppweb同时也是一个跨平台的微服务开发框架,通过两个核心组件

    微型Java开发框架Solon 1.1发布,QPS达10万+

    简介 Solon 是一个微型的Java开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,2700多次的commit;内核保持0.1m的身材,超高的Web跑分,良好的使用体验

    Nginx Unit 1.21.0 发布,动态 Web 应用服务器

    Nginx Unit 1.21.0发布,更新内容除了常规的 bugfix 外,还增加了部分新特性,例如支持条件匹配的 PCRE 和多线程请求处理等。 因此,开发者现在可以调整每个应用程序进程中

    WebMIS 1.0.0 beta.3 发布,全栈开发基础框架

    全栈开发基础框架,包括 PHP / Python / SpringBoot / Phalcon / Flutter / NodeJS / Vue / Swoole / Redis / API 等技术

    CKEditor 5 v23.1.0 发布,支持嵌入 Raw HTML

    CKEditor 5 v23.1.0 稳定版已发布,主要更新内容包括:支持在编辑器嵌入原生 HTML 代码并进行渲染、改进 reconversion API 以及支持将表格内容粘贴到另一个表格

    NGINX Unit 1.22 发布,动态 Web 应用服务器

    最新版本 1.22.0 已正式发布,以下是此次更新...

    Helidon 2.1.0 发布,Oracle 微服务框架

    Helidon 2.1.0 现已发布,这是一个次要发行版,包含了一些错误修复和增强功能。Helidon 是 Oracle 开源的一个用于编写微服务的 Java 框架,这些微服务运行在由 Netty

    开源资讯」Atom 1.52.01.53.0-beta0发布,跨平台文本编辑器

    Atom 同时发布1.52.01.53.0-beta0 版本。Atom 是 GitHub 专门为程序员推出的一个跨平台文本编辑器。具有简洁和直观的图形用户界面,并有很多有趣的特点:支持

    Dapr 1.0 发布,分布式应用运行时

    Dapr 1.0 正式发布。 Dapr 是一个开源、可移植的、事件驱动的运行时,可以帮助开发人员构建在云和边缘上运行的弹性的、微服务的、无状态和有状态应用程序,并且关注于业务逻辑而不用考虑分布式相关

    Gitea 1.13.0 发布,流行的自托管 Git 服务

    Gitea 1.13.0发布,其团队表示在此版本的开发周期里合并了 649 个 PR。 部分更新亮点: 从 1.13.0 开始,Gitea 最低要求 TLS 1.2 支持 (#12689

    Gradle 6.8 发布,禁用 TLS v1.0v1.1 协议

    Gradle 6.8 已经发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建工具

    Angular 11.1.0 正式发布,支持 TypeScript 4.1

    。 近日,Angular 11.1.0 正式发布...

    FileZilla Client 3.53.0-rc1 发布,FTP 客户端

    FileZilla Client 3.53.0-rc1 发布了。FileZilla 是一种快速、可信赖的 FTP 客户端以及服务器开源程序,具有多种特色、直观的接口。FileZilla

    httpclient v1.2.11 已经发布

    httpclient v1.2.11 已经发布。本项目针对http协议定义了所有http实现之上的接口来描述一个http请求,使用者只需要面对同一套语义化的接口, 如果需要切换http的

    Deno 1.8.1 发布,基于 V8 的 TypeScript 运行时

    Deno 1.8.1 现已发布,Deno 是 V8 上的安全 TypeScript 运行时。 此版本更新内容如下: fix(cli/ast):将 importsNotUsedAsValues 传递