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包便可。 已完成主要功能以下:
這個看項目下的readme吧,示例代碼能夠參考test-httpserver(github),裏邊對於各類用法都有示例。 web
項目採用eclipse開發,maven構建,jdk爲1.7(1.6應該也沒問題),外部依賴velocity,junit,common-logging。項目文件結構以下:
shell
~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(要學就學完全唄)。同時也但願各位可以多給予指導。 json