JSP与Servelt详解

前言

最近在学习jsp与servelt。他们两个这件有不可分的关系,所以就放到一起跟大家讨论一次,初次研究可能有很多不完善的地方,请留言


What Servlet

Server Applet 是小服务程序或服务连接器,主要功能在于交互式的浏览和修改数据,生成动态web内容从原理上讲,Servlet可以向应任何类型的请求,但是对大多数Servlet只用来扩展基于http协议的web服务器,任意实现servlet接口的类都可以叫做Servlet


How Servlet

实现过程
1.客户端发送请求至服务器端
2服务器将请求信息发送至Servlet
3Servlet生成响应内容传送到服务器,响应内容动态生成,通常取决于客户端请求
4服务器将响应返回给客户端
JSP与Servelt详解_第1张图片

Servlet接口有两个实现类:GenericServlet ,httpServlet
Servlet工作流程分为3个阶段:
1.init初始化,2service运行 ,3destory销毁


生命周期

1.客户端请求Servlet
2加载Servelt类到内存
3实例化并调用init()方法初始化该Servlet
4根据请求方式不同调用doGet(),doPost()
5加载和实例化Servlet


编程接口

HttPServlet使用一个HTML表单来发送和接受数据,hpptServlet类包含init(),destory(),service(),其中init()和destory()是继承

init()方法
在Servlet生命期中,仅执行一次init()方法,它是在服务器装入Servlet时执行的

  • service()方法
    service方法是Servlet的核心,每当一个客户请求一个httpServlet对象,就会调用service()方法被调用,而且传递给这个方法请求参数和相应参数

  • doGet()方法
    当发送http get请求的时候doGet()方法被调用

  • doPost()方法
    当一个客户html发送一个http post请求时,dopost()方法被调用

  • destroy()方法
    仅执行一次,在服务器停止且卸载Servlet时执行该方法

  • getServletConfig()方法
    getServletConfig方法返回一个SercletConfig方法,该对象用来返回初始化参数封装到对象中,并且调用servlet的init方法时,将ServletConfig对象传递给servlet,并且通过Sercletconfig对象就可以得到当前servlet初始化参数所有的Servlet对象之间可以通过Servlet共享一个ServletContext,因此Servlet对象之间可以通过ServletContext对象来实现通信。ServletContext接口提供有关servlet的环境参数

  • Servlet如何同时处理多个请求
    Servlet采用多线程来处理多个请求的同时访问,Servelt容器通过线程池来管理和维护服务请求,所谓线程池,相当于我们的连接池(与数据库建立连接)。线程池里面可以放很多的线程供我们使用,但我们Servlet发送请求的时候,容器收到一个请求就会在线程池中分配给我们一个线程,当容器收到多个请求的时候则线程池会给我们多个线程让我们并发执行


What JSP

jsp是运行在服务端的语言,jsp全称为java Server Pages 是由Sun Microsystems 公司倡导的一种可以让开发者响应客户端的请求,并且还可以自动的生成网页html,xml等
jsp java server page 是java的脚本语言,并且他提供一个接口来服务于http的应用程序,jsp的后缀名为*.jsp,Jsp是跨平台的使用,可以在windows或linux都可以使用


Why JSP

**性能优越,因为jsp可以直接在html网页中干动态嵌入元素而不需要单独引入CGI文件
服务器调用的是已经编写好的jsp文件
jsp基于java Servlets API 。
jsp页面可以与处理业务逻辑的servelts一起使用
jsp是java不可或缺的一部分,是一个完整的企业级应用平台**


how jsp

• 就像其他普通的网页一样,您的浏览器发送一个HTTP请求给服务器。
• Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。
• JSP引擎从磁盘中载入JSP文件,然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。
• JSP引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎。
• Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。
• Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。
最终,Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样。
JSP与Servelt详解_第2张图片


生命周期

JSP生命周期:从创建到销毁,jsp的生命周期与servelt的声明周期很像
jsp生命周期的阶段
1.编译阶段:servelt容器编译servelt源文件,生成servelt类
2初始化阶段:加载jsp对应的servlet类,创建实例,并调用初始化方法
3执行阶段:调用与jsp对应的servlet实例的服务方法
4销毁阶段:调用与jsp对应的servlet实例的销毁方法,然后销毁servelt实例

Jsp编译
当浏览器请求jsp页面时,jsp引擎首先会检查需要编译这个文件,如果这个文件没有被编译或者被更改,则编译这个jsp文件
编译的过程3个部分
1.解析jsp文件
2jsp文件转换为servelt
3编译servelt

jsp初始化
用的jspInit()方法。

jsp执行
当被初始化之后,jsp引擎会调用jspServeice()方法,jspServive()方法需要一个httpServletRequest对象和一个httpServletResponse对象作为参数

jsp清理
调用的是jspDestroy()方法


jsp与servlet的区别

最开始的时候servlet是显示层与业务处理混合在一起的,但是代码书写太繁琐,而且结构 也不清晰所以我们发明了jsp技术,jsp技术的主要优势就是让业务逻辑层与表示层分离,jsp负责页面显示而servlet负责业务逻辑,有的时候可以把jsp称为servlet,因为jsp发往服务器的时候,我们会把jsp变为servlet的类,然后转换为html,再发送给服务器
在mvc框架中jsp负责的是页面,而我们的servelt负责的是流程和业务逻辑也就是control层


总结

关于jsp和servelt还有很多不清楚的地方需要继续研究,学习就是不断反复的过程,他们两个的概念很混,以至于有的人说jsp就是servlet,但是我感觉还是有差别的

你可能感兴趣的:(JSP与Servelt详解)