最近在学习JSP相关基础知识,我们都知道JSP当中存在一组不使用new关键字就可以在脚本和表达式中使用的对象,在Web开发中经常使用。为了能更好的理解这些对象,在此对JSP内置对象作一些归纳。
目录:
JSP内置对象——九大内置对象简介与四种作用域范围以及Web程序的请求和响应模式
JSP内置对象——out(待更新)
JSP内置对象——request/response(待更新)
JSP内置对象——session(待更新)
JSP内置对象——application(待更新)
JSP内置对象——其他内置对象(待更新)
内置对象简介:
我们说,JSP内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的对象。
例如下面看到的这段脚本:我们在for循环中直接使用了out对象来给浏览器打印输出,这是一个JSP内置对象,并没有使用new来创建。
<% String[] value = {"hello","world","ok"}; for(String s : value){ out.println(s+"<br>"); } %>
接下来我们来看一下,JSP究竟有哪些内置对象?
JSP总共有九大内置对象,常用的有:out,request,response,session,application这五个,不常用的有:page,pageContext,exception,config这四个
这里先简单的了解一下这些对象,后面会有详细的博客来分别介绍
内置对象 | 代表内容 | 作用域 |
out | 输出对象 | page |
request | 请求对象 | request |
response | 响应对象 | page |
session | 会话对象 | session |
application | 应用程序对象 | application |
page | 页面对象 | page |
pageContext | 页面上下文对象 | page |
exception | 里外对象 | page |
config | 配置对象 | page |
每个内置对象都有一个作用域范围,总共包括四种作用域:page,request,session,application
page里的变量没法从A页面传递到B页面。只要页面跳转了,它们就不见了。
request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。
session里的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。
application里的变量一直在累加,除非你重启tomcat,否则它会一直变大。
而作用域规定的是变量的有效期限:
如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。
从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。
如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。
所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。
如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。
所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。
如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。
整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。
application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。
与上述三个不同的是,application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。这在其他scope中都是不会发生的,page, request,session都是完全隔离的,无论如何修改都不会影响其他人的数据。
在详细介绍JSP内置对象之前,先说一下Web程序的请求和响应模式:
用户(客户端)发送请求(request)
服务器给用户响应(response)
通过上图可以看出,当用户连接互联网去访问Web服务器的时候,就相当于他给Web服务器发了一个Http请求,然后服务器对用户的请求作出了一个响应,那么这就是一种请求与响应模式。
下面举个登陆程序的例子说明Web应用程序的请求和响应模式:
比方说我们要登录博客园,登录页面用户需要输入用户名和密码,然后点击登录按钮,实际上就相当于客户端给服务器发送了一个请求,在这个请求对象中封装了用户提交的用户名和密码。当这个请求发送给服务器之后,服务器就接收到用户的请求,然后判断用户提交的用户名和密码是否合法,如果该用户是合法用户,服务器就给客户端发送一个响应页面,如下图所示:
当然,如果该用户非合法用户,则提示错误信息。
那么这个例子就很好的说明了咱们的Web应用程序是基于请求和响应模式的,下一节我将详细的介绍out对象和它的常用方法以及一些案例。