我是靠谱客的博主 安详啤酒,最近开发中收集的这篇文章主要介绍打造一款属于自己的web服务器——开篇一、这是个什么玩意? 二、为什么要写这么个东西? 三、目前已完成的功能  四、如何使用 五、项目结构 六、接下来干什么,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    JVM总结慢慢来吧,先插播一篇水文,来介绍下最近业余一直在写的一个小项目——easy-httpserver(github)。适合新手学习,大神们路过即可^_^。

一、这是个什么玩意?

    easy-httpserver本来的目的是实现一个简易的java web服务器,基于jdk自带的httpserver实现,可以处理http请求,使用方式类似于jetty,以jar包方式嵌入项目 。但是准确的说他又不单算一个web服务器, easy-httpserver集成了MVC中部分View和Controller的功能,使web项目只用按照规则实现页面、controller以及对应的业务处理,就能直接部署运行。
    所以说,这是个什么玩意我也说不清,但是我的目的就是打造一款能够快速开发部署小型web项目的框架(虽然现在离这个目的还有一些差距)。

二、为什么要写这么个东西?

    理由有如下几点:

  1. 摘要里提到的原因。
  2. 之前一直想弄明白web服务器的运行原理,虽然看了一些资料,但是还是一知半解,正好自己写个简单的来体会体会。
  3. 年后想搭建一个个人博客,希望能够自己定制一些功能,但是搜了下发现java的开源博客要么不好用,要么不好改,还不如自己写一个(域名、空间都买了,真有点裤子都脱了,结果.....的感觉)。所以就打算自己慢慢搞个小框架,最后基于此搭个小博客。
  4. 现实因素:工作有点闲,用的技术也没太高要求,只能自己折腾点东西算是混经验呗。::>_<::,无奈啊,还是待好好学习,现在学java的技术不搞nb点,找个工作都木人要。

三、目前已完成的功能 

  目前项目已经能够完成一个动态网站的处理,并且采用类似jetty的嵌入启动方式,网站项目只需实现Controller和View页面并引入该项目jar包即可。 已完成主要功能如下:

  • 支持动态请求(后缀为do,请求路径restful风格)
  • 支持静态资源请求(后缀为对应资源类型后缀,可在配置文件中拓展)
  • 可通实现Controller接口处理动态请求,并支持注解方式进行映射
  • 动态请求可返回页面、json数据,并支持跳转
  • 整合Velocity,返回页面可通过Velocity语法渲染页面
  • 支持HTTP表单方式的文件上传(input:file)
  • 支持session会话处理

四、如何使用

    这个看项目下的readme吧,示例代码可以参考test-httpserver(github),里边对于各种用法都有示例。

五、项目结构

    项目采用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(要学就学彻底呗)。同时也希望各位能够多给予指导。

转载于:https://www.cnblogs.com/good-temper/p/3606543.html

最后

以上就是安详啤酒为你收集整理的打造一款属于自己的web服务器——开篇一、这是个什么玩意? 二、为什么要写这么个东西? 三、目前已完成的功能  四、如何使用 五、项目结构 六、接下来干什么的全部内容,希望文章能够帮你解决打造一款属于自己的web服务器——开篇一、这是个什么玩意? 二、为什么要写这么个东西? 三、目前已完成的功能  四、如何使用 五、项目结构 六、接下来干什么所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部