JVM总结慢慢来吧,先插播一篇水文,来介绍下最近业余一直在写的一个小项目——easy-httpserver(github)。适合新手学习,大神们路过便可^_^。java
easy-httpserver原本的目的是实现一个简易的java web服务器,基于jdk自带的httpserver实现,能够处理http请求,使用方式相似于jetty,以jar包方式嵌入项目 。可是准确的说他又不单算一个web服务器, easy-httpserver集成了MVC中部分View和Controller的功能,使web项目只用按照规则实现页面、controller以及对应的业务处理,就能直接部署运行。
因此说,这是个什么玩意我也说不清,可是个人目的就是打造一款可以快速开发部署小型web项目的框架(虽然如今离这个目的还有一些差距)。 git
理由有以下几点:
github
目前项目已经可以完成一个动态网站的处理,而且采用相似jetty的嵌入启动方式,网站项目只需实现Controller和View页面并引入该项目jar包便可。 已完成主要功能以下: web
这个看项目下的readme吧,示例代码能够参考test-httpserver(github),里边对于各类用法都有示例。 json
项目采用eclipse开发,maven构建,jdk为1.7(1.6应该也没问题),外部依赖velocity,junit,common-logging。项目文件结构以下:
服务器
~src/main/java --org.eh.core --annotation AnnocationHandler.java 注解处理类 Controller.java Controller注解 RequestMapping 请求方法注解,用来标注Controller中的处理方法 --common Constants.java 常量类,包括系统常量和配置文件对应信息 ReturnType.java 枚举,返回类型 --http EHHttpHandler.java httpserver请求核心处理类,完成请求的接收、处理、返回 EHServer.java 项目启动类,完成服务器启动 ApplicationContext.java 全局数据和会话相关数据,单例 HttpSession.java session会话 --model FileInfo.java 上传文件信息封装 ResultInfo.java Controller返回结果 --util FileUploadContentAnalysis.java 上传请求解析类,从中提取表单中的域值和文件信息 FileUtil.java 文件工具类 IOUtil.java IO工具类 PropertyUtil.java 配置文件工具类 StringUtil.java 字符串工具类 VelocityUtil.java Velocity工具类 --web --controller Controller.java Controller接口,处理方法必须标记RequestMapping注解 --view ViewHandler.java View处理类,完成页面文件渲染 ~src/main/resources velocity.properties web.properties
目前项目已经完成了一些基本功能,接下来将不断完善,重点是并发问题(也是目前本身不擅长的方面),不求强大但求好用。等该项目稳定以后,考虑用netty实现一个httpserver代替jdk中的httpserver(要学就学完全呗)。同时也但愿各位可以多给予指导。restful