All Projects → 94fzb → simplewebserver

94fzb / simplewebserver

Licence: Apache-2.0 license
SimpleWebServer 是一款使用Java基于NIO编写的超轻量级开源Web Application Server

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to simplewebserver

Voovan
Voovan是高性能异步通信、HTTP服务器和客户端通信、动态编译支持、数据库操作帮助类等工具的框架, 如果项目觉得不错, 请点一下 star, 谢谢
Stars: ✭ 221 (+229.85%)
Mutual labels:  webserver, nio
Webserver
手写简化版Web服务器
Stars: ✭ 89 (+32.84%)
Mutual labels:  webserver, nio
bookish spork
Erlang library for testing http requests
Stars: ✭ 82 (+22.39%)
Mutual labels:  webserver
django-boilerplate-3.6.1
Django served by Gunicorn running behind Nginx reverse proxy. Deploy to AWS Elastic Beanstalk with Fabric3!
Stars: ✭ 13 (-80.6%)
Mutual labels:  webserver
WebListener
A simple, lightweight, PowerShell-based web server, designed for small, temporary projects.
Stars: ✭ 29 (-56.72%)
Mutual labels:  webserver
ruby wolf
Tiny ruby web server for research and studying purpose
Stars: ✭ 19 (-71.64%)
Mutual labels:  webserver
natural
Fastest Framework for NodeJS. Written in pure ES6+
Stars: ✭ 30 (-55.22%)
Mutual labels:  webserver
rpi-nginx
[DEPRECATED] NGINX on Raspberry Pi / ARM
Stars: ✭ 20 (-70.15%)
Mutual labels:  webserver
cordova-plugin-webserver
A webserver plugin for cordova
Stars: ✭ 101 (+50.75%)
Mutual labels:  webserver
Kitura-HelloWorld-iOS
A Hello World example of running Kitura on iOS
Stars: ✭ 55 (-17.91%)
Mutual labels:  webserver
MemoBoard
Flask and React based intranet app where you can create and share lists (e.g. shopping list, todo, ...)
Stars: ✭ 35 (-47.76%)
Mutual labels:  webserver
internetarchivebot
iabot.toolforge.org
Stars: ✭ 67 (+0%)
Mutual labels:  webserver
go-echo-server-sandbox
A scaffold of golang web server using labstack/echo
Stars: ✭ 12 (-82.09%)
Mutual labels:  webserver
AsyncSocket
Asynchronous socket (client+server) continues communications
Stars: ✭ 26 (-61.19%)
Mutual labels:  nio
JavaCertification
This is a full resource guide for my attempt to get Java 11 Certified
Stars: ✭ 67 (+0%)
Mutual labels:  nio
Magician
Magician is a small HTTP service package based on Netty that makes it very easy to start an http service, and also supports WebSocket, using annotated configuration Handler, If you want to develop an http service with netty but find it cumbersome, then Magician may help you.
Stars: ✭ 97 (+44.78%)
Mutual labels:  nio
Teapot
Teapot micro web framework for Pharo Smalltalk
Stars: ✭ 86 (+28.36%)
Mutual labels:  webserver
UDPSender
UDPSender 一个基于NIO的UDP发送-接收器
Stars: ✭ 34 (-49.25%)
Mutual labels:  nio
jdk-source-code-reading
JDK source code reading
Stars: ✭ 19 (-71.64%)
Mutual labels:  nio
toh
TCP over HTTP. 隐藏网站的管理服务
Stars: ✭ 36 (-46.27%)
Mutual labels:  webserver

SimpleWebServer

SimpleWebServer 是一款使用Java基于NIO编写的超轻量级开源Web Application Server

是否遇到有时候想做一些小的Web程序,但是迫于Java运行环境过于繁琐而迟迟没有下手,那么现在除了SpringBoot,广大的Java程序员又多了一个选择

轻量级

并不基于servlet,源代码仅3000行左右,jar包仅 0.1m 左右,零依赖,无xml,极低的内存占用,所以不用担心程序能不能在嵌入式(树莓派)/Android 上能否正常运行

完整

Cookie,Interceptor,Json,模板,文件上传,基本常用API都有,使得写Web应用更容易

快速上手

request, response, controller. interceptor 还是熟悉的配方,熟悉的味道

<dependency>
    <groupId>com.hibegin</groupId>
    <artifactId>simplewebserver</artifactId>
    <version>0.2.42</version>
</dependency>
public class DemoController extends Controller{

    public static void main(String[] args) {
        ServerConfig serverConfig = new ServerConfig();
        serverConfig.getRouter().addMapper("", DemoController.class);
        new WebServerBuilder.Builder().serverConfig(serverConfig).build().startWithThread();
    }

    public void index() {
          getResponse().renderText("Hello world/v" + ServerInfo.getVersion());
    }
}

然后浏览器输入 http://localhost:6058

打包

推荐使用 maven-assembly-plugin

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.5.5</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.hibegin.http.server.test.DemoController</mainClass>
                    </manifest>
                </archive>
                <finalName>simplewebserver-demo</finalName>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

mvn clean compile assembly:single

性能

简单与号称 “性能打爆网卡的tio” 对比,感兴趣移步到 https://gitee.com/94fzb/simplewebserver-performance

Changelog

完整的版本变化日志

TODO

  • 支持HTTP2.0基本协议(不包含服务端推送)
  • 实现多线程解码HTTP请求
  • 提供类似 SpringMVC 通过注解完成 Restful API的编写
  • 提供多种 JSON 序列化工具包支持
  • 提供HTTP错误码错误页面配置功能

其他

  • WebServer 默认端口为 6058conf/conf.properties 中,或则通过代码的方式进行配置
  • 使用 FreeMarkerKit.init 初始化模板文件根目录,FreeMarkerKit.initClassTemplate 初始模板相对jar中的根目录
  • 服务器上时建议打包为 jar 文件运行(推荐使用 maven,jar文件路径与conf 文件夹同目录)
  • 依赖的json和freemarker的jar都是非必须

License

SimpleWebServer is Open Source software released under the Apache 2.0 license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].