什么是servlet?

马克-to-win:在讲授Servlet之前,我们先回顾一下,我们在讲 第九章:网络编程(Socket)那章时,留过的一个作业:
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
课外作业:
6)请做一个Web服务器,客户端能打印出一个html文件。

马克-to-win:在讲Socket网络编程时,在一次请求(request)响应(response)交互过程中,作为基本功能,服务器可以从客户端获取数据,之后再向客户端写回去数据。这之间只要服务器从本地读出一个html文件即可,完成以上作业非常简单。马克-to-win:现在如果作业难度继续增加,变成:请做一个服务器,要求客户端,1)能够传送java文件名称到服务器,2)且运行服务器端的这个java文件,3)之后把运行结果打印回客户端。对于上面作业的第一第三项功能点,对我们来讲易如反掌。对于第二项功能点,我们只需要调用jdk先编译java文件成为class,再调用jre运行class文件,输出结果不要输出到屏幕像以往一样,而是输入回我们的正编写的Server程序,接着我们的Server程序就可以把结果打印回客户端了。我上面说的只是思路,真正实现起细节来,工作量是惊人的!马克-to-win:如果你能完成以上第一步作业,恭喜你:你完成了一个Web服务器,代表产品:Apache服务器的雏形。如果你完成了第二步作业,恭喜你:你完成了一个Web容器的雏形,代表产品Tomcat。咱们作业当中提到的那个java文件有一个专业术语:叫做Servlet。讲到这儿,我认为,是时候可以提出Servlet的标准定义了:Servlet就是一段运行在Web容器里的Java程序。(自己不能独立运行)

其实可以用两张图来概括我刚才讲的东西。





我们刚才的作业,是在讲java基础那部分知识时留的。我们那一部分学习过程当中,事无巨细,什么都得我们自己做。从我们学习jsp这部分开始,我们就需要逐渐开始改变我们的思想。即大家伙一块儿来编程,一人编一部分。这样可以使我们最终的项目变得非常完美。拿上图举例说,Web浏览器是火狐,Web容器和 Web服务器是tomcat,都不是我们编的,我们也知道这两个软件的工作量绝不白给,非常完美!我们只需要在浏览器地址栏当中敲入地址http://localhost:8080/abc/1.html或http: //localhost:8080/abc/bbb,就可以得到我们想要的abc目录下的1.html或bbb这个servlet。我们只需要编我们的 1.html和bbb这个servlet就可以了。8080端口指定localhost机器当中的tomcat必须作出响应。(端口对应软件).

马克-to-win:装个Tomcat,编一段java程序,全世界的人,都可以利用火狐等有着漂亮界面的浏览器在他自己的机器上执行我们编的一段java 程序。这明显比前一段时间我们学的客户端服务器的Socket的技术,要先进了很多。最大的原因是我们不用把大量时间花在编写浏览器和Web容器上。我们只需要把精力集中在编写这个Servlet上就可以了。这servlet技术太神奇了!Sun公司是如何实现这件事情的呢?