JSP内置对象、基本动作指令、常见编译指令及四大作用域

(一) JSP工作原理

当一个jsp页面第一次被访问的时候,jsp将执行以下三个步骤,之后的访问速度会因为class文件已经生成而大大提高,当jsp引擎发送一个客户端请求的时候,首先判断请求的jsp页面是否比对应生成的servlet文件,如果不同,对应的jsp需要重新编译。

  1. 将jsp页面翻译成servlet,这个servlet是一个java文件,同时也是一个完整的java程序。

  2. jsp引擎调用java编译器对这个servlet进行编译,得到可执行文件class。

  3. jsp引擎调用java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户端。

(二) JSP内置对象

  1. request:负责得到客户端请求的信息,对应类型: javax.servlet.http.HttpServletRequest

  2. response:负责向客户端发出响应,对应类型:javax.servlet.http.HttpServletResponse

  3. session:负责保存同一客户端一次会话过程中的一些信息,对应类型:javax.servlet.http.httpsession

  4. out:负责管理对客户端的输出,对应类型:javax.serlvet.jsp.jspwriter

  5. application:表示整个应用环境的信息,对应类型:javax.servlet.servletcontext

  6. config:表示ServletConfig,对应类型:javax.servlet.servletconfig

  7. exception:表示页面中发生的异常,可以通过它获得页面异常信息,对应类型:java.lang.exception

  8. pagecontext:表示这个JSP页面上下文,对应类型:javax.servlet.jsp.pagecontext

  9. page:表示当前JSP页面本身。

(三) JSP基本动作指令

  1. jsp:include:在页面被请求的时候引入一个文件。

  2. jsp:useBean:寻找或者实例化一个JavaBean。

  3. jsp:setProperty:设置JavaBean的属性。

  4. jsp:getProperty:输出某个JavaBean的属性。

  5. jsp:forward:把请求转到一个新的页面。

  6. jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

(四) JSP常见编译指令

  1. page指令:定义页面的一些属性。以下是最常见的三种常见属性:
    a. contentType=“text/html;charset=utf-8”; 向浏览器端输出数据的编码

    b. pageEncoding=“utf-8”; JSP编译成java文件时所用的编码

    c. session=“true” 是否自动创建session

  2. include指令:引入一个静态的JSP页面

  3. taglib指令:引入一个标签库

(五) JSP四大作用域

JSP中的四种作用域包括page、request、session和application,具体来说:

  1. page里的变量,只要页面跳转了,它们就不见了。如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。

  2. request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。
    所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

  3. session和application里的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。
    如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。
    所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。

  4. application里的变量一直在累加,除非你重启tomcat,否则它会一直变大。如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。
    整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。
    application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。

JavaWeb第三讲 JSP内置对象、基本动作指令、常见编译指令及四大作用域相关推荐

  1. JavaWeb学习笔记——jsp内置对象

  2. java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)

    JSP九大内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象. int[] value={60,70,80}; for(int i:value){ out.pri ...

  3. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

  4. jsp内置对象【02】四种内置对象【02】session、application

    我们继续来学习,上一篇文章中说到了request属性,那么既要想客户端和服务端都都能实现跳转的话,就用到了session. 第三种:session属性 我们接着修改一下上一篇文章中的代码来对比一下: ...

  5. jsp内置对象+Servlet

    一,jsp内置对象 1. request:请求对象: request.getParameter();得到一个参数:获得提交表单中唯一的值: request.getParameterValues();得 ...

  6. [02] JSP内置对象

    1.内置对象的来历 JSP是由一些内置对象的,即不需要定义,也不需要我们主动创建,就可以直接使用的对象.当然,其对象名称也是固定的,无法修改,我们可以直接调用其相关方法. 在 [01] JSP的基本认 ...

  7. EL表达式,JSP内置对象

    基本语法格式 EL都是以 ${ 为起始.以} 为结尾的 ${ EL Expression} 示例: ${ "Helloworld" }  //输出字符串常量 ${ str }  / ...

  8. 【JSP笔记】第四章 JSP内置对象【下】

    2019独角兽企业重金招聘Python工程师标准>>> 1.什么是session 表示客户端与服务器的一次会话. Web中的session指用户浏览网站时,从进入网站到浏览器关闭的这 ...

  9. 转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别

    原文地址:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别 首先说明一下jsp9大内置对象 (1)HttpSession类的session对 ...

最新文章

  1. 【Zookeeper】Zookeeper集群“脑裂”问题处理大全
  2. animate.css动画抖动,Animate.css抖动效果每次都不工作
  3. 如何使用Mybatis-plus
  4. 【MFC系列-第25、26天】绘图软件
  5. phpcms底部版权信息修改教程——修改“开发团队”信息
  6. 现身说法“好奇心害死人啊”
  7. [转]RDLC 动态列
  8. 专题九:Simulink系统仿真
  9. [Linux源码分析]Linux内核架构
  10. 超强OCR文字识别软件首选ABBYY FineReader
  11. 利用EXCEL进行数据爬虫
  12. 计算机中的工作流程,计算机工作流程
  13. isee看图精灵下载
  14. 在线免费学习java资源推荐
  15. Codeforces 685B Kay and Snowflake(树形dp)
  16. Pixelmator Pro for Mac(媲美PS的修图软件)
  17. Node.js + Web Socket 打造即时聊天程序嗨聊(1)
  18. 归并排序的python实现:递归与非递归
  19. 知识追踪之动态键值对记忆网络 Dynamic Key-Value Memory Networks for Knowledge Tracing
  20. 微信公众号开发之自动消息回复

热门文章

  1. SpringCloud-Eureka-服务注册是如何发起的
  2. leetcode-9-回文数
  3. Codeforces Round #587 C. White Sheet(思维+计算几何)
  4. Dialog向Activity传递数据
  5. Fluent NHibernate关系映射
  6. Android 程序打包及签名
  7. Ubuntu的网络设置
  8. ubuntu下vim + ctags + taglist配置和使
  9. 32 | 浅谈容器网络
  10. S4 exercise -- 模块