相关文章:自行开发JSP HTTP服务器的绝对秘籍(一)
自行开发JSP HTTP服务器的绝对秘籍(二)
自行开发JSP HTTP服务器的绝对秘籍(三)
自行开发JSP HTTP服务器的绝对秘籍(四)
自行开发JSP HTTP服务器的绝对秘籍(五)
三、系统分析
通过以上的分析和说明,读者基本上已经了解如何定制自己所需要的HTTP服务器。但是对这套HTTP服务器体系特性的认识可能还存在一定模糊。这里我们再从以下几个方面分析该HTTP服务器的特性。
1.稳定性
该HTTP服务器很大程序上借助了java体系的代码健壮性和稳定性,对异常(Exception)的处理和异步请求的处理都较为合理。程序的稳定性得到一定保障。
提示:虽然java的异常机制有时候用起来可能确实让人感觉有些繁琐,但是对系统的稳定性起到的作用是举足轻重的。
2.扩展性
由于该系统利用java开发,使得该HTTP服务器系统转移到其他平台(MS Windows,Linux,Solaris)的工作变得较为简单。笔者尝过将该代码转移到Solaris 8系统中,只是修改了文件路径分割符。
对于功能而言,用户可以任意扩展服务文件类型。扩展用户特有的JSP语法和命令。使得服务形式更符合用户使用特征。
提示:当前SUN公司发布的最新jdk版本为1.6.0,支持MS Windows,Linux,Solaris。
3.执行效率的合理性和优化
(1)巧妙地结合了Java体系的Class Loader技术,遵照“先载入,后使用”的原则,真正做到了“一次载入,多次重用”,从而大大较少了磁盘访问,提高了服务器端的执行效率。
(2)客户端请求处理的多线程构架,可以支持多客户端同时访问HTTP服务器。如果使用线程池(Thread Pool)构建,可以更进一步提高客户端请求处理的效率。
4.易用性
通过系统介绍我们可以看出,该HTTP服务器系统的设置比较简单。
(1)系统的设置(例如:服务页的目录,默认页,系统路径分隔符等)缩减为最简单化。
(2)自定义的JSP语法也是比较简单,易于普通用户使用。只要用户了解一定的java语法就可以编写jsp语法,就如同写java源文件一样简单,甚至比写Java Application要更为简单。一下是一个简单的jsp源文件的内容:
5.对原有系统的支持<% outln(“Hello world!”); %>
本系统对CGI的支持也比较灵活,可以扩展为通过多种方式将参数传递给CGI进程。这样可以维持用户原有的CGI服务体系不变的基础上进行系统升级。
四、总结及补充
1.技术点总结
对于开发本HTTP服务器,结合了很多知识,不仅要兼顾旧的标准(例如CGI,HTTP,MIME),而且也要兼顾新的技术(Class Loader,多线程),知识面涉及到很多。笔者认为主要包括如下几点:
(1)要具备一定的网络知识。例如对HTTP标准(RFC2680),MIME标准(RFC2046),CGI标准等。
(2)多线程技术,实时处理客户端请求,合理处理请求的并发。
(3)Java技术,包括进程间通信技术,Class Loader技术,编码解码等。
(4)对系统跨平台要有一定认识和经验。例如,笔者具有熟练的Windows平台和Solaris平台的开发经验。
(5)善于学习和分析其他类似系统。例如,笔者曾经对HTML,ISAPI,IIS,CGI,PHP,Apache,Tomcat和JSP进行过深入学习和分析。找出各个系统的有缺点,并尝试出解决方案。
2.不足之处
作为非商业设计,该HTTP服务器体系设计还存在很多不足之处,出于时间的原因,笔者不可能近期对该系统进行完善。笔者认为需要改善的地方主要有:
(1)设计中没有考虑多语言的情况,虽然Java体系已经可以很方便地支持多语言系统。
(2)对于MIME的考虑不够完整,本HTTP服务器系统中处理的MIME类型太过有限。
(3)自定义的JSP语法过于简单,很多硬性定义可能造成用户使用不方便。例如:对于JSP表达式一行只能存在一个表达式的规定。另外,提供给服务页的公共函数过于缺乏,可以提供很多功能函数给服务页面使用,这样就可以简化服务页的代码编写。
(4)直接在jsp文件目录中创建java,class等文件的做法比较危险,容易暴露服务器内容,应该考虑使用cache的构架,将中间文件和源文件隔离开来。
五、结束语
本文通过设计工程介绍,系统分析和总结补充等方面对所设计的HTTP服务器系统进行了详细完整地描述。希望能够给予用户一定参考和帮助。如果读者对其中的认识和理解存在不同见解,可以以邮件的形式与笔者联系。