开源JavaWeb框架简单测试
一、主要目的
自定义JavaWeb框架测试。
框架的功能:支持JavaWeb的表单上传、文件上传、Cookie获取设置、请求转发、会话管理、过滤器;
框架特点:用1个jar文件和项目集成到一起。
缺点:不支持动态HTML的模板页面。
框架项目路径:
开源项目主页:

二、框架使用测试
1、克隆项目到本地

2、把"java-web-1.1.jar"依赖文件放入新建的项目

3、添加处理器类
假设是MainHandler类,需要继承AbstractHandler类:
import org.hujunfeng.entity.HttpRequest;
import org.hujunfeng.entity.HttpResponse;
import org.hujunfeng.entity.Session;
import org.hujunfeng.impl.AbstractHandler;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
public class MainHandler extends AbstractHandler {
@Override
public void init() {
System.out.println("---------MainHandler初始化-----------");
}
@Override
public void doGet(HttpRequest httpRequest, HttpResponse httpResponse) {
// 设置响应码为200
httpResponse.setCode(200);
// 设置内容类别为HTML
httpResponse.setContentType("text/html; charset=UTF-8");
String body = "" +
"<html>" +
" <head>" +
" <title>Hello</title>" +
" </head>" +
" <body>" +
" <p>Hello World!</p>" +
" </body>" +
"</html>";
try {
// 获得响应体的字节序列
byte[] data = body.getBytes("UTF-8");
// 设置内容长度
httpResponse.setContentLength(data.length);
// 获得内容的输出流
OutputStream output = httpResponse.getBodyOutput();
output.write(data);
output.flush();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void destroy() {
}
}
如图:

4、添加测试类
import org.hujunfeng.HttpContainer;
import org.hujunfeng.entity.Application;
public class Test {
public static void main(String[] args) {
// 1、创建容器类,端口是8080
HttpContainer container = new HttpContainer(8080);
// 设置网络读取的超时是2000毫秒
container.setReadTimeout(2000);
// 2、创建应用程序类,名字是"/hu"
Application app = new Application("/hu");
// 3、创建MainHandler对象
MainHandler handler = new MainHandler();
// 设置映射路径
handler.setMapping("/index");
// 4、添加处理器
app.addHandler(handler);
// 5、把程序添加到容器中
container.addApp(app);
// 6、启动容器
container.run();
}
}
如图:

三、执行和访问测试
1、执行Test类

2、浏览器访问链接"http://127.0.0.1:8080/hu/index"

四、框架的主要接口
(一)HttpContainer容器类的接口
1、构造方法:public HttpContainer(int 端口号)
2、设置读取超时
void setReadTimeout(long 超时时间)
3、添加应用程序
void addApp(Application app)
4、添加配置
配置类支持设置文件最大上传大小、静态资源目录。
void setConfig(HttpConfig config)
(二)Application应用程序的主要接口
// 获取属性
Object getAttribute(String var1)
// 设置属性
void setAttribute(String key, Object value)
// 获取会话对象
Session getSession(String var1)
// 添加处理器
void addHandler(Handler handler)
// 添加过滤器
void addFilter(Filter filter)
(三)HttpRequest请求类的主要接口
// 获取请求方法
String getMethod();// 获取请求路径
String getResource();
// 获取查询路径
String getQueryString();
// 获取上下文路径
String getContextPath();
// 获取Cookie
Cookie getCookie(String var1);
// 获取请求参数
String getParameter(String var1);
// 获取请求头
String getHeader(String var1);
// 获取文件上传域
Part getPart(String var1);
// 获取多选文件上传域
List<Part> getMultiPart(String var1);
// 设置请求域
void setAttribute(String var1, Object var2);
// 获取请求域值
Object getAttribute(String var1);
// 转发请求
void forward(String 映射路径, HttpRequest var2, HttpResponse var3);
// 获取会话对象
Session getSession();
(四)HttpResponse响应类的主要接口
// 设置响应字符集
void setCharset(String var1);
// 设置响应类别
void setContentType(String var1);
// 设置响应码
void setCode(int var1);
// 设置状态消息
void setMessage(String var1);
// 设置内容长度
void setContentLength(long var1);
// 设置响应头
void setHeader(String var1, String var2);
// 获取响应体的内容输出流
OutputStream getBodyOutput();
// 获取响应体的字符打印器
PrintWriter getBodyWriter();
// 添加一个Cookie对象
void addCookie(Cookie var1);
// 重定向请求
void sendDirect(String var1);
五、总结
1、基本满足设计要求。
2、能轻量级的综合到项目里,不需要复杂的容器。
3、直接启动项目就能测试WEB服务,节省时间。
4、目前不支持HTTPS协议,内部用的是java.net.ServerSocket类。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)