zoukankan      html  css  js  c++  java
  • 测试开发进阶——常用中间件概念——tomcat、servlet、jsp的关系理解

    一、什么是servlet?

        处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了解一些http协议的东西,并且知道B/S模式(浏览器/服务器)。

        B/S:浏览器/服务器。 浏览器通过网址来访问服务器,比如访问百度,在浏览器中输入www.baidu.com,这个时候浏览器就会显示百度的首页,那么这个具体的过程,步骤是怎样的呢?这个就了解一下http请求和响应了。

    JSP是一种动态网页标准,就是在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),被请求时,被编译成一个SEVERLET。

    Servlet是用Java编写的Server端小程序。

    二者关系区别主要有:

    1.JSP第一次运行的时候会编译成servlet。

    2.jsp是web开发技术,servelt是服务器端运用的小程序,我们第一次访问一个jsp页面时,服务器会将这个jsp页面转变成servelt小程序运行得到结果后,反馈给用户端的浏览器。

    3.servlet相当于一个控制层再去调用相应的javabean处理数据,最后把结果返回给jsp。

    4.servlet主要用于转向,将请求转向到相应的jsp页面。

    5.jsp更多的是进行页面显示,Servlet更多的是处理业务,即jsp是页面,servlet是实现jsp的方法。


    一、JSP工作原理


    在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。

    而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。

    JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;

    如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。

    然后创建一个该SERVLET的实例,该SERVLET的jspInit()方法被执行,jspInit()方法在servlet的生命周期中只被执行一次。

    然后jspService()方法被调用来处理客户端的请求。

    对每一个请求,JSP引擎创建一个新的线程来处理该请求。

    如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。

    以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。

    如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。

    虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。

    此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将servlet从内存中移去。

    当这种情况发生时jspDestroy()方法首先被调用, 然后servlet实例便被标记加入"垃圾收集"处理。

    jspInit()及jspDestory()格式如下:可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。

    二、tomcat和servlet的关系

    Tomcat 是Web应用服务器,是一个Servlet/JSP容器.

    Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.

    而Servlet是一种运行在支持Java语言的服务器上的组件.

    Servlet最常见的用途是扩展Java Web服务器功能,提供非常安全的,可移植的,易于使用的CGI替代品.

        

    从http协议中的请求和响应可以得知,浏览器发出的请求是一个请求文本,而浏览器接收到的也应该是一个响应文本。

    但是在上面这个图中,并不知道是如何转变的,只知道浏览器发送过来的请求也就是request,我们响应回去的就用response。忽略了其中的细节,现在就来探究一下。

                  

    ①:Tomcat将http请求文本接收并解析,然后封装成HttpServletRequest类型的request对象,所有的HTTP头数据读可以通过request对象调用对应的方法查询到。

    ②:Tomcat同时会要响应的信息封装为HttpServletResponse类型的response对象,通过设置response属性就可以控制要输出到浏览器的内容,

           然后将response交给tomcat,tomcat就会将其变成响应文本的格式发送给浏览器

     

    Java Servlet API 是Servlet容器(tomcat)和servlet之间的接口,它定义了serlvet的各种方法,

    还定义了Servlet容器传送给Servlet的对象类,其中最重要的就是ServletRequest和ServletResponse。所以说我们在编写servlet时,需要实现Servlet接口,按照其规范进行操作。

  • 相关阅读:
    MSSQL经典语句
    注销时关闭当前窗体,返回登入界面
    自定义控件小结进阶篇
    精妙SQL语句大全
    触发器MSSQL常用操作
    经典SQL语句大全
    文件下载
    android Notification 的使用
    startActivityForResult()的用法
    Android手机中获取手机号码和运营商信息
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/15334131.html
Copyright © 2011-2022 走看看