Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

一个java实现的简单的web服务器,主要目的是为了理解web服务器的工作原理。http请求的接收和返回使用JDK自带的HttpServer,请求处理和页面解析是自己实现的。目前已经能够支持web服务器一些基本的功能。

License

Notifications You must be signed in to change notification settings

NotBadPad/easy-httpserver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

41 Commits

Repository files navigation

easy-httpserver

简介

一个java实现的简单的web服务器,主要目的是为了理解web服务器的工作原理。http请求的接收和返回使用JDK自带的HttpServer,请求处理和页面解析是自己实现的。目前已经能够支持web服务器一些基本的功能。

功能

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

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

如何使用

easy-httpserver项目内也有测试代码,可自行研究。这里介绍test-httpserver示例项目的使用,其中已经实现了一些例子,可参照这些例子实现。

  • 1、clone easy-httpserver到本地,导入eclipse(已安装maven,编码utf-8)
  • 2、clone test-httpserver(示例项目)到本地,导入eclipse
  • 3、mvn install easy-httpserver(将jar导入test-httpserver,若配置maven则自动导),以下修改均在test-httpserver中
  • 4、按照注释修改test-httpserver配置文件
    #包前缀
    PACKAGE_PREFIX=com.gj.web
    

    #view页面根路径(相对classes/view文件夹,项目中在src/main/view下) VIEW_BASE_PATH=page/

    #静态资源路劲(相对classes/view文件夹,项目中在src/main/view下) STATIC_RESOURCE_PATH=static/

    #端口 httpserver.port=8888

    #controller包路径,配置后可通过annocation直接配置 controller.package=com.gj.web.controller

    #url与controller类对应关系,与上边controller.package效果一致,二选一,格式:"url"+url路径+"="+对应controller路径 #url/list=com.gj.web.controller.MyController

  • 5、编写Controller类,需实现Controller接口,并返回ResultInfo对象(详情见示例)。使用注解配置映射(如:http://127.0.0.1/test/path/show.do,配置controller为/test/path/,方法名为show)
  • 5、在配置文件指定文件夹(page:velocity文件,static:静态页面和资源)下编写对应页面
  • 6、mvn exec:java -Dexec.mainClass="org.eh.core.http.EHServer" 启动服务
  • 7、浏览器访问http://127.0.0.1:8888/test/path/show.do,即可看到结果

项目结构

项目采用eclipse开发,并使用maven构建。

~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接口,实现类必须继承Controller且标记Controller注解,实现方法必须标记RequestMapping注解
--view
ViewHandler.java View处理类,完成页面文件渲染
~src/main/resources
velocity.properties
web.properties

About

一个java实现的简单的web服务器,主要目的是为了理解web服务器的工作原理。http请求的接收和返回使用JDK自带的HttpServer,请求处理和页面解析是自己实现的。目前已经能够支持web服务器一些基本的功能。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /