# HttpServer
**Repository Path**: lixiang2114/HttpServer
## Basic Information
- **Project Name**: HttpServer
- **Description**: No description available
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-04-12
- **Last Updated**: 2021-05-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 开发背景
HttpServer是一款基于JAVA的NIO框架Netty5.X设计的嵌入式服务器,可以无缝嵌入JAVA应用程序中,常见的嵌入式服务器还有Jetty,但可支持独立运行的Jetty被设计的太过于重量化,且在JAVA程序中调用起来也相对较为复杂,而HttpServer则专注于嵌入式设计,将连接器封装于框架内部,仅暴露仅有的端口设置和Servlet接口给应用层,使用起来简单、轻量化。
### 功能特性
支持Servlet容器、常用的Servlet-API组件,支持会话跟踪和发送重定向;使用异步事件驱动和IO多路复用机制完成客户端连接和请求响应处理过程。
### 安装部署
mkdir -p $MVN_HOME/repository/com/github/lixiang2114/netty/HttpServer/1.0/
wget https://github.com/lixiang2114/HttpServer/blob/main/target/HttpServer-1.0.jar -P $MVN_HOME/repository/com/github/lixiang2114/netty/HttpServer/1.0/
wget https://github.com/lixiang2114/HttpServer/blob/main/target/HttpServer-1.0-sources.jar -P $MVN_HOME/repository/com/github/lixiang2114/netty/HttpServer/1.0/
### 工程应用
1. 引用依赖
```Xml
io.netty
netty-all
5.0.0.Alpha2
com.github.lixiang2114.netty
HttpServer
1.0
```
2. 应用范例
```JAVA
package com.wa.bfw.server.test;
import com.github.lixiang2114.netty.HttpServer;
import com.github.lixiang2114.netty.context.ServerConfig;
import com.wa.bfw.server.test.servlet.UserServlet;
public class TestMain {
public static void main(String[] args) throws Exception {
ServerConfig serverConfig=new ServerConfig(8080,UserServlet.class);
new HttpServer(serverConfig).startServer();
}
}
```
其中,UserServlet是应用自定义的请求响应处理类,类的设计范例如下:
```JAVA
package com.wa.bfw.server.test.servlet;
import java.util.Collections;
import com.github.lixiang2114.netty.handlers.PrintWriter;
import com.github.lixiang2114.netty.scope.HttpServletRequest;
import com.github.lixiang2114.netty.scope.HttpServletResponse;
import com.github.lixiang2114.netty.scope.HttpSession;
import com.github.lixiang2114.netty.servlet.HttpServlet;
/**
* @author Lixiang
* @description 用户模块控制器
*/
public class UserServlet extends HttpServlet{
@Override
public void init() {}
@Override
public void destory() {}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) {
this.doPost(request, response);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {
String validateResult="Error";
HttpSession session=request.getSession();
PrintWriter writer=response.getPrintWriter();
if(null!=session.getAttribute("loginUser")) {
validateResult="OK";
System.out.println(request.getJsonBody());
}else{
String userName=request.getParameter("userName");
String passWord=request.getParameter("passWord");
if("ligang".equals(userName) && "123456".equals(passWord)) {
validateResult="OK";
System.out.println("Login Success...");
request.getSession().setAttribute("loginUser", Collections.singletonMap("ligang", "123456"));
}
}
try{
writer.write(validateResult);
}finally{
writer.close();
}
}
}
```
#### 特别说明:
ServerConfig类封装了所有的服务器配置和Servlet应用配置,应用层可根据业务需求酌情修改以适应实际应用场景;HttpServer的使用与Tomcat中常规Servlet的使用相同,上述startServer方法被调用之后,服务器将被挂起并等待客户端连接,一旦客户端连接请求到来便委托给绑定的Servlet处理(即:由UserServlet处理)