美文网首页
Servlet和JSP

Servlet和JSP

作者: 得力小泡泡 | 来源:发表于2021-03-12 16:47 被阅读0次

    1、Servlet的工作原理

    Servlet由tomcat服务器负责管理,Tomcat服务器通过读取web.xml创建并运行servlet,Servlet是javax.servlet包中HttpServlet类的子类的一个实例,由服务器创建并完成初始化工作。当多个用户请求一个Servlet时,服务器为每个用户启动一个线程而不是启动一个进程,这些线程由服务器来管理

    2、Servlet中的生命周期

    (1)初始化Servlet。Servlet第一次被请求加载时,服务器初始化这个Servlet,即创建一个Servlet,这个Servlet调用init方法完成必要的初始化工作
    (2)新诞生的Servlet再调用service方法响应用户的请求(会根据用户的请求方式再调用doGet或doPost方法)
    (3)当服务器关闭时,调用destroy方法销毁servlet

    init方法只被调用一次,即在servlet第一次被请求加载时调用该方法。当后续的用户请求servlet服务时,Web服务将启动一个新的线程,在该线程中,Servlet调用响应用户的请求。也就是说,每个用户的每次请求都会导致service方法被调用执行,其执行过程分别运行在不同的线程中

    3、重定向与请求转发

    请求转发:

    request.getRequestDispatcher(URL地址).forward(request, response)

    处理流程:
    1、客户端发送请求,Servlet做出业务逻辑处理。
    2、Servlet调用forword()方法,服务器Servlet把目标资源返回给客户端浏览器。


    image.png
    重定向:

    response.sendRedirect(URL地址)

    处理流程:
    1、客户端发送请求,Servlet做出业务逻辑处理。
    2、Servlet调用response.sendReadirect()方法,把要访问的目标资源作为response响应头信息发给客户端浏览器。
    3、客户端浏览器重新访问服务器资源xxx.jsp,服务器再次对客户端浏览器做出响应。


    image.png
    区别

    1、区分是从服务器外的请求,还在是内部转发,从服务器外的请求
    2、请求转发,地址还是第一个Servlet的地址,重定向是再次请求其他Servlet的地址

    做增、删、改的时候最好用重定向,因为如果不用重定向,每次刷新页面就相当于再请求一次,就可能会做额外的操作,导致数据不对。

    4、Session和Cookie的区别

    1、Session解决了一个用户在不同请求中处理的数据共享问题,Cookie解决了发送不同的请求的数据共享问题
    2、Session存放在服务器端(服务器的一个文件里,而不是内存),Cookie存放在客户端
    3、Session的原理:用户第一次访问服务器时,服务器会创建一个S而是session对象给此用户,并将session对象的JSESSIONID使用Cookie技术将JSESSIONID存储到浏览器,保证用户的其他请求能够获取到同一个session对象,也保证不同请求能够获取到共享的数据

    5、JSP的访问原理

    浏览器发起请求请求JSP,请求被服务器接收,执行JspServlet将请求的JSP文件转义成对应Java文件(即Servlet),然后执行转义好的Java文件

    6、JSP的九大内置对象

    • 1、内置对象:JSP文件在转译成其对应的Servlet文件的时候,自动生成Servlet对应的对象
    • 2、使用:内置对象在JSP页面中使用,使用局部代码块或者脚本段语句来使用,不能够在全局代码块中使用
    • 3、内容(主要前4个)
      (1)request:封装当前请求数据的对象,由tomcat服务器创建,一次请求
      (2)response:响应对象,用来响应请求处理结果给浏览器的对象,设置响应头,重定向
      (3)session:此对象用来存储用户的不同请求的共享数据,一次会话
      (4)application:也就是ServletContext对象,一个项目只能有一个存储用户共享的数据对象
      (5)pageContext:页面上下文对象封存了其他内置对象,封存了当前JSP的运行信息,每一个JSP文件单独拥有一个pageContext对象,作用域:当前页面
      (6)out:响应对象,JSP内部使用带有缓冲区的响应对象,效率高于response对象
      (7)page:代表当前JSP对象,相当于Java中的this
      (8)exception:异常对象,存储了当前运行的异常信息
      (9)config:就是ServletConfig,主要是用来获取web.xml中的配置数据,完成一些初始化数据的读取

    7、四个作用域对象(作用:数据流转)

    1、pageContext:当前页面,解决了在当前页面内的数据共享问题
    2、request:一次请求,一次请求的Servlet的数据共享,通过请求转发,将数据流转给下一个Servlet
    3、session:一次会话,一个用户的不同请求的数据共享,将数据从一个请求流转到其他请求
    4、application:项目内,不同用户的数据共享问题,将数据从一个用户流转到其他用户

    8、bean

    一、什么是JavaBean
    1)必须实现Serializable接口
    2)没有public类型的类变量
    3)具有无参数的构造器
    4)具有public的getters和setters方法

    二、如何在一个页面中设置一个JavaBean
    <jsp:useBean id="?" class="?" scope="?"></jsp:useBean>
    id:相当于一个引用类对象的一个变量名
    class:指明创建哪个类的对象
    scope:指明这个对象设置在哪个内置对象中(如果scope缺省则,默认为放在page中)

    三、bean的作用域


    image.png

    相关文章

      网友评论

          本文标题:Servlet和JSP

          本文链接:https://www.haomeiwen.com/subject/ewezqltx.html