JSP学习笔记(二)
上周五学习了JSP,今天继续学习剩余部分
SESSION 详解
Session对应的中文翻译是会话。
会话指的是从用户打开浏览器访问一个网站开始,无论在这个网站中访问了多少页面,点击了多少链接,都属于同一个会话。 直到该用户关闭浏览器为止,都属于同一个会话。
用自己的话理解就是一个简单的数据库,可以短暂存储一些东西。
session就是健身房的储物柜,可以存储一些东西然后到时间取出来。
session对象保存数据的方式,有点像Map的键值对(key-value)
"name"是键,"teemo" 是值
session.setAttribute("name", "teemo");
通过session,根据"name" 取出对应的名称
session.getAttribute("name");
另:session的默认时间为30分钟。
四种作用域
SP有4个作用域,分别是
1.pageContext 当前页面
pageContext表示当前页面作用域
通过pageContext.setAttribute(key,value)的数据,只能在当前页面访问,在其他页面就不能访问了。
2.requestContext 一次请求
requestContext 表示一次请求。随着本次请求结束,其中的数据也就被回收。
常用写法是
request.setAttribute("name","gareen");
request.getAttribute("name")
但是也可以用pageContext来做,写成
pageContext.setAttribute("name","gareen",pageContext.REQUEST_SCOPE);
pageContext.getAttribute("name",pageContext.REQUEST_SCOPE)
3.sessionContext 当前会话
sessionContext 指的是会话,从一个用户打开网站的那一刻起,无论访问了多少网页,链接都属于同一个会话,直到浏览器关闭。
所以页面间传递数据,也是可以通过session传递的。
但是,不同用户对应的session是不一样的,所以session无法在不同的用户之间共享数据。
与requestContext类似的,也可以用如下方式来做
pageContext.setAttribute("name","gareen",pageContext.SESSION_SCOPE);
pageContext.getAttribute("name",pageContext.SESSION_SCOPE)
4.applicationContext 全局,所有用户共享
applicationContext 指的是全局,所有用户共享同一个数据
在JSP中使用application对象, application对象是ServletContext接口的实例
也可以通过 request.getServletContext()来获取。
所以 application == request.getServletContext() 会返回true
application映射的就是web应用本身。
与requestContext类似的,也可以用如下方式来做
pageContext.setAttribute("name","gareen",pageContext.APPLICATION_SCOPE);
pageContext.getAttribute("name",pageContext.APPLICATION_SCOPE)
九种隐式对象
JSP的隐式对象指的是不需要显示定义,直接就可以使用的对象,比如request,response
JSP一共有9个隐式对象,分别是
request,response,out,pageContext, session,application,page,config,exception
request 代表请求 请参考 request常见方法
response 代表响应 请参考 response 用法
out 代表 输出
pageContext 代表当前页面作用域
session 代表当会话作用域
application 代表当全局作用域
page 对象即表示当前对象
JSP 会被编译为一个Servlet类 ,运行的时候是一个Servlet实例。 page即代表this
config可以获取一些在web.xml中初始化的参数。
在JSP中使用config比较复杂,需要如下几个步骤
1. 在web.xml中进行配置
2. 创建一个testconfig.jsp
通过config.getInitParameter("database-ip") 获取参数
3. 访问路径,获取web.xml中配置的参数
exception 对象只有当前页面的<%@page 指令设置为isErrorPage="true"的时候才可以使用。
同时,在其他页面也需要设置 <%@page 指令 errorPage="" 来指定一个专门处理异常的页面。