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

2020-09-26 12:37:50 浏览数 (1)

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

  1. include指令:引入一个静态的JSP页面
  2. 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作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。

0 人点赞