java轻量级后端应用服务器从零开始一步步搭建到上线运行(一) java 轻量级http服务器框架源码
java轻量级后端应用服务器从零开始一步步搭建到上线运行(一) java 轻量级http服务器框架源码
简介
这是一个轻量级服务器搭建的系列文章,各个功能模块都被分解,一章一章的整合进去,从简单到复杂,从简陋到完善,最终就是一个完整的java后台应用服务器项目.
一, 开发 准备和工具
- 熟悉 java 语法.
- jdk1.8
- IntelliJ IDEA 2018.1 (这里我使用的是idea 如果用eclipse也行,不过下面部分步骤图 会有些地方不同)
二, idea 创建空白项目
- 新建一个空项目,File -> New -> Project , 直接 点击 next , next , 项目名 输入server-demo1 , 点击finish 完成,如下:
三, http框架核心源码
- http框架代码,如下图:
- 简单介绍一下这些文件(熟悉运行流程后可以自行看下http框架源码,并不复杂,希望大家能在其中学到些东西.模仿该框架可以搭建别的框架,后面文章中就会出现比如socker,mqtt框架的实现 都和这个http框架类似。如果有看不明白的,可以在评论里面提出来,或者有更好的建议也可以提出来,谢谢 !)
- 介绍http服务器启动入口 main.Http代码如下:
package main; import frame.Server; import frame.http.HttpServer; public class Http { public static void main(String[] args) { try { //获取项目工作目录 String user_dir = System.getProperty("user.dir"); //加载jar frame.JarLoader.load(user_dir + "/libs"); frame.JarLoader.addusr_paths(user_dir + "/libs"); //加载类 frame.ClassLoader.loadClassesFromPath(); //启动http服务器,下面的81是监听的端口 final HttpServer httpserver = new HttpServer(81); httpserver.bootstrap(); //程序退出的清理工作 Server.cleanShutdownHooks(); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { try { httpserver.shutdown(); } catch (Throwable e) { e.printStackTrace(); } } }); } catch (Throwable e) { e.printStackTrace(); System.exit(0); } } }
-
http框架代码源文件(包含libs)连接:https://pan.baidu.com/s/1Nye9_VqXoRggNUO_VV0Liw
提取码:zn2t -
将源码、依赖包按上图所示结构添加到项目里面
-
添加依赖包
-
启动http服务(如果报错确认是不是端口(这里监听的是81端口)被占用了,任务管理器结束占用了该端口的应用,或改本代码中启动监听的端口号如18081)
四, http接口开发
-
上面成功启动了http服务,但是并没实现任何外部访问的接口,下面介绍如何创建一个简单的接口
-
新建一个处理业务逻辑的包 service , 然后在service 包下新建一个 测试接口所在包 test
-
test 包下 ,新增一个简单的测试接口类 HttpCmdTestQuery (我的http接口命名规范: HttpCmd XXXX ),代码如下:
import frame.http.HttpCmd; public class HttpCmdTestQuery extends HttpCmd {//http接口需要继承 HttpCmd static { //注册接口 "/test/query" HttpCmd.register("/test/query",HttpCmdTestQuery.class); } @Override public void execute() { //接口业务逻辑处理方法 result.put("ret","0"); result.put("msg","this is a test"); response(result); //响应请求 } }
五, http服务器本地运行,调试
-
测试接口写完后,重新启动http服务并测试接口,如下:
-
浏览器输入 127.0.0.1:81/test/query , 结果如下
获取post请求携带json格式参数
-
本后端服务器代码主要针对的是应用端而非web端, 没提供获取get请求的参数(如要实现,熟悉框架源码后,可自行改造HttpCmd , HttpHandler 实现), 只实现了获取 http post请求body中json格式的参数
-
在上面HttpCmdTestQuery 接口类中 增加代码接收post请求的json格式的参数,如下:
import frame.http.HttpCmd; import org.json.JSONObject; public class HttpCmdTestQuery extends HttpCmd {//http接口需要继承 HttpCmd static { //注册接口 "/test/query" HttpCmd.register("/test/query",HttpCmdTestQuery.class); } @Override public void execute() { //接口业务逻辑处理方法 JSONObject params = getJSONObject();//读取post请求json参数并创建JSONObject String test = params.optString("test","");// System.out.println("test="+test); result.put("ret","0"); result.put("msg","this is a test,param test=:"+test); response(result); //响应请求 } }
- 重启http服务后, 在http 调试工具 postman 中 发送post请求 测试/test/query 接口 接收json格式的参数,如下:
(如果没装http调试工具postman,可以看下:https://www.geek-share.com/detail/2762784799.html)
附录 项目代码
链接:https://pan.baidu.com/s/1kCeArj77WtAdrnaudvJhkA
提取码:bea2
后面会在此代码的基础上一个个添加各种项目中会用到的功能模块
才开的博客,之前工作中笔记都只是在自己的私人空间随意记录没法分享。
趁着最近不太忙,打算将自己的积累的一些知识分享出来,希望能帮助到在学习工作中遇到类似问题或有类似需求的朋友们。
最后,
如果哪里写的有问题或不清楚 请大家在评论中指出来,我有时间会来处理。
当然如果我的文章对你有所帮助,也希望你能够收藏。这是对我的最直接的肯定和支持,会给我更多的动力分享出更多高质量的文章 (〃‘▽’〃)。
- 从零开始写javaweb框架笔记16-搭建轻量级JAVAWEB框架-加载Controller,初始化框架
- 从零开始写javaweb框架笔记14-搭建轻量级JAVAWEB框架-实现Bean容器
- 从零开始写javaweb框架笔记16-搭建轻量级JAVAWEB框架-加载Controller,初始化框架
- 从零开始写javaweb框架笔记13-搭建轻量级JAVAWEB框架-开发一个类加载器
- 从零开始写javaweb框架笔记14-搭建轻量级JAVAWEB框架-实现Bean容器
- [笔记]架构探险-从零开始写JavaWeb框架-1. 之搭建轻量级mvc框架
- 阿里云轻量级应用服务器(CentOS7.3)搭建Java环境,jdk1.8+tomcat8.5+mysql,踩过的坑!
- 从零开始写javaweb框架笔记10-搭建轻量级JAVAWEB框架-确定目标
- 从零开始写javaweb框架笔记12-搭建轻量级JAVAWEB框架-定义框架配置项,加载配置项
- 从零开始写javaweb框架笔记13-搭建轻量级JAVAWEB框架-开发一个类加载器
- 从零开始写javaweb框架笔记11-搭建轻量级JAVAWEB框架-搭建开发环境
- 从零开始写javaweb框架笔记15-搭建轻量级JAVAWEB框架-实现依赖注入功能
- 从零开始写javaweb框架笔记15-搭建轻量级JAVAWEB框架-实现依赖注入功能
- 从零开始写javaweb框架笔记17-搭建轻量级JAVAWEB框架-请求转发
- soy轻量级java应用框架在线演示和源码下载
- 从零开始搭建轻量级JavaWeb框架
- Portal-Basic Java Web 应用开发框架(v2.5.4 - 源码、示例及文档可在 Google Code 下载)
- Portal-Basic Java Web 应用开发框架(源码、示例及文档)
- 手把手教你从零开始搭建SpringBoot后端项目框架
- Portal-Basic Java Web 应用开发框架 v2.6.2 发布(源码、示例及文档)