您的位置:首页 > 理论基础 > 计算机网络

简单剖析一下 HttpServer的实现方式

2008-09-25 14:02 555 查看
http server,对于J2ee的来说就是servlet 容器。这次剖析主要从开发角度来说的。所以思路就是原始http server,servlet,jsp,到MVC架构 struts、JSF,taperstry;spring。
我理解最原始的http server就是简单实现 http协议的相应端(server端); 提供一个socket监听端口,客户端通过socket连接,然后根据 http协议想这个socket的输出流中写入请求内容; 服务器端则是从socket的输入流中读取出数据,根据http协议解析。判断其请求的方法类型,跟不过的方法处理,解析出头信息做相应的逻辑处理;如果是post方法,还会有post的数据(可能是提交的表单,或者是上传的文件)。跟据服务要求按照http协议返回response 数据信息,大多数是一个html的文件作为reponse的数据体。
这个过程中,除了逻辑处理的部分会根据不同的需求而又区别外,剩下的部分就都一样,于是,java就将剩下的部分封装成Http Servlet 容器,主要负责http服务的共性的部分 -- 启动监听,接受请求,发送回应信息,还有一些并发性的优化。剩下的不同的业务逻辑就交给了servlet来处理。 其实到目前为止,用servlet已经可以开发任何应用了;不过它的麻烦程度还是不能让程序员接受,比如根据一个用户名返回用户属性的页面,这个页面是要动态产生的,通过servlet实现就是用代码拼接一个html文件。
为了避免在java代码中产生这么多的冗余,jsp就出现了;jsp的出现伴随一个JSTL java standard tag library,其实就是将java放在HTML 文件中取名.jsp文件,因为浏览器只认识标准的html文件。jsp不是 html页面,jsp 要被编译成servlet。这样servlet的代码冗余就变成了规范化,对于程序员是透明的了。这样当时的程序员们就接受了。
不过社会要进步,人类永远都不会满足的。为了进一步提高开发效率,mvc模式应用到了web开发,出现了风靡一时的struts框架。后来mvc框架如雨后春素般..teparstry,JSF... 相应的持久层框架hibernate,ibatis...也都出现了。 这样J2EE开发进入了一个成熟期,期间忘了介绍一个东东EJB这家伙我就接触过一个项目,不太好用;听说新的标准ejb3改掉了许多坏毛病。
不过发展远没有到此为止,近年来sns网房展迅速,其中一个重要的技术原因就是 大多的sns网站都采用了脚步语言为基础的框架,php on CodeIgniter, python on Dijango,groovy on grails ,ruby on rails.... 让这些脚本框架日趋成熟,开发周期和维护成本都大大降低。
不过我目前还是在用java; 坚持着J2EE和java底层开发。
上面都是我个人遇见,如果不对之处欢迎大家指出,相互学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: