Servlet是什么?

什么是Servlet?有什么作用?和Tomcat有什么联系?工作原理是什么?大家初学JavaEE时多少会有这些疑问,在学习之前如果能够对这些问题有一定了解能够更快地上手。下面内容介绍了Servlet、Servlet容器、Web服务器、Tomcat和一些HTTP基础。

想要了解Servlet需要先了解以下几个概念:

交互式动态服务过程是怎么样?

  • 1.Web客户端发送请求至Web服务器端;
  • 2.Web服务器将请求信息发送至 Servlet;
  • 3.Servlet 生成响应内容并将其传给Web服务器。响应内容动态生成,通常取决于客户端的请求;
    -4. Web服务器将响应返回给客户端。
    web用户通过一个诸如IE/Firefox/Chrome等web浏览器来访问Servlet应用过程如下图:
    在这里插入图片描述
    那么什么是Web服务器?
  • Web服务器是可以向发出请求的浏览器提供文档的程序。

当Web浏览器(客户端)连接到服务器上并请求文件时,Web服务器将处理该请求并将文件发送到该浏览器上。Web服务器可以解析(handles)HTTP协议,传送页面使浏览器可以浏览,当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应一个静态页面或图片,进行页面跳转,或者把动态响应的产生委托给一些其它的程序例如CGI脚本,JSP(这个后面会讲到)脚本,servlets,ASP脚本等等。

这里讲一些HTTP基础——请求方法 根据HTTP标准,HTTP请求可以使用多种请求方法。

  • HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
  • HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
  • GET 请求指定的页面信息,并返回实体主体。
    • HEAD 类似于get请求,只不过返回的响应中没有具体的 内容,用于获取报头
    • POST 向指定资源提交数据进行处理请求(例如提交表单
    或者上传文件)。数据被包含在请求体中。POST请求可
    能会导致新的资源的建立和/或已有资源的修改。
    • PUT 从客户端向服务器传送的数据取代指定的文档的内容。
    • DELETE 请求服务器删除指定的页面。
    • CONNECT HTTP/1.1协议中预留给能够将连接改为管道方 式的代理服务器。
    • OPTIONS 允许客户端查看服务器的性能。
    • TRACE 回显服务器收到的请求,主要用于测试或诊断。
    GET提交的数据会放在URL之后,以?分割URL和传输数据,
    参数之间以&相连,如
    EditPosts.jsp?name=test1&id=123456. POST方法是把提交 的数据放在HTTP包的Body中.
    • GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
    • GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
    如果有时间还可以复习下网络协议分层结构,能够更加清楚这些过程是怎么回事。

收!回到Servlet,Web服务器传送页面使浏览器可以浏览,但是用户/客户端只能向服务器请求静态网页。如果用户想要根据自己的输入来读取网页,这种方式就不能满足用户的要求。所以我们需要一种应用程序服务器提供客户端应用程序可以调用的方法。
Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供商业逻辑,现在最常用的Web服务器是Apache和Microsoft的Internet信息服务器,这里的Apache一定听起来很熟悉,是不是和Tomcat有些混淆,我们后面分析。

Servlet

Servlet是JavaServlet的简称, 称为小服务程序或服务连接器,是用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。总的说来就是Servlet 是在服务器上运行的小程序
一个Servlet就是一个Java程序,一个Servlet应用包含了一个或多个Servlet,一个JSP页面会被翻译并编译成一个Servlet,一个Servlet应用运行在一个Servlet容器中,它无法单独运行。
阅读以下文章可知一个Servlet的工作流程,非常有用,不要嫌弃它是英文,如果你不读这一小段那么以后你也不会去读一大篇,学习计算机必须克服这个思想(感觉其实是在对我自己说,呜呜呜),这段文字可能你读完之后(认识里面的每一个单词)也不能完全理解其意思,不要慌,保存下来,在你上手第一个Servlet程序的时候你就会有新的体会,慢慢再回来看着这段文字你对Servlet的理解会入门更快。
在这里插入图片描述

servlet容器

Servlet容器将来自用户的请求传递给Servlet应用,并将Servlet应用的响应返回给用户。Servlet容器的基本思想是在服务器端使用Java来动态生成网页。因此,Servlet容器是Web服务器和servlet进行交互的必不可少的组件。
在这里插入图片描述

Tomcat就是一个servlet容器,可以运行你按照JavaEE中的Servlet规范编写好的Java程序。比如你在做一个web项目时,交互肯定需要http协议,也就是基于请求和响应,你进行操作web客户端发出一个request,那么web服务器如何处理这个请求呢,它就需要创建servlet来处理,servlet其实就是java程序,只是在服务器端的java程序,servlet通过配置文件拦截你的请求,并进行相应处理,然后展示给你相应界面,那么servlet如何创建? 这时候Tomcat用到了,
它就是帮助你创建servlet的东西,所以也称web容器,没有它,没法运行web项目。你想啊,你要家里有一只老鼠,你要消灭它,你就需要一只cat来帮助你,你得你的猫给个窝不是,不然哪儿来的它,这个窝就是Tomcat。

Tomcat和Apache有什么区别呢?

  • Apache是web服务器(静态解析,如HTML),Tomcat是java应用服务器(动态解析,如JSP)。
  • Tomcat只是一个servle容器,可以认为是apache的扩展,但是可以独立于apache运行。
  • Apache是普通服务器,本身只支持html即普通网页,可以通过插件支持php,还可以与Tomcat连通(Apache单向连接Tomcat,就是说通过Apache可以访问Tomcat资源,反之不然)。

Apache和Tomcat整合使用:
如果客户端请求的是静态页面,则只需要Apache服务器响应请求;
如果客户端请求动态页面,则是Tomcat服务器响应请求,将解析的JSP等网页代码解析后回传给Apache服务器,再经Apache返回给浏览器端。这是因为jsp是服务器端解释代码的,Tomcat只做动态代码解析,Apache回传解析好的静态代码,Apache+Tomcat这样整合就可以减少Tomcat的服务开销。
从本质上来说tomcat的功能完全可以替代Apache

最后

由于大部分Servlet应用都会包含一些JSP界面,故称Java Web应用为“Servlet/JSP”应用会更恰当一些。
JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp),JSP 实际上就是 Servlet 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值