java web九大内置对象, 四大作用域,session生命周期

内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用

  1-out:

  javax.servlet.jsp.JspWriter类型,代表输出流的对象。作用域为page(页面执行期)

  request:javax.servlet.ServletRequest的子类型,此对象封装了由WEB浏览器或其它客户端生成地HTTP

  请求的细节(参数,属性,头标和数据)。作用域为request(用户请求期)。

  方法由可查看API

  response:javax.servlet.ServletResponse的子类型,此对象封装了返回到HTTP客户端的输出,向页面作者提供设置响应头标和状态码的方式。经常用来设置HTTP标题,添加cookie,设置响应内容的类型和状态,发送HTTP重定向和编码URL。作用域为page(页面执行期)。

  pageContext:javax.servlet.jsp.PageContext(抽象类)类型,作用域为page(页面执行期)。此对象提供所有四个作用域层次的属性查询和修改能力,它也提供了转发请求到其它资源和包含其他资源的方法:

  该对象的方法都是抽象方法

  session:javax.servlet.http.HttpSession类型,主要用于跟踪对话。作用域session(会话期—)。

  HttpSession是一个类似哈希表的与单一WEB浏览器会话相关的对象,它存在于HTTP请求之间,可以存储任

  何类型的命名对象。

  如果不需要在请求之间跟踪会话对象,可以通过在page指令中指定session="false"

  需要记住的是pageContext对象也可以与session.getAttribute(),session.setAttribute()一样的方式取得并设置会话属性。

  application:javax.servlet.ServletContext类型,servlet的环境通过调用getServletConfig

  ().getContext()方法获得。作用域是application(整个程序运行期)。它提供了关于服务器版本,应用级初始化参数和应用内资源绝对路径,注册信息的方式

  config:javax.servlet.ServletConfig,作用域为page(页面执行期)

  exception:java.lang.Throwable,通过JSP错误页面中一个catch块已经益出但没有捕获的

  java.lang.Throwable的任意实例,传向了errorPage的URI。作用域为page(页面执行期)。注意

  exception只有在page指令中具有属性isErrorPage="true"时才有效。

  page:java.lang.Object类型,指向页面自身的方式。作用域为page(页面执行期

  JSP中九大内置对象为:

  request            请求对象                 类型 javax.servlet.ServletRequest        作用域 Request

  response          响应对象                   类型 javax.servlet.SrvletResponse       作用域  Page

  pageContext    页面上下文对象       类型 javax.servlet.jsp.PageContext      作用域    Page

  session            会话对象                   类型 javax.servlet.http.HttpSession       作用域    Session

  application       应用程序对象          类型 javax.servlet.ServletContext          作用域    Application

  out                   输出对象                   类型 javax.servlet.jsp.JspWriter             作用域    Page

  config              配置对象                  类型 javax.servlet.ServletConfig            作用域    Page

  page               页面对象                  类型 javax.lang.Object                            作用域    Page

  exception        例外对象                 类型 javax.lang.Throwable                     作用域    page 






session的生命周期


Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。

  Session什么时候失效?

  1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。

  2. 调用Session的invalidate方法。

  Session对浏览器的要求:

  虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。

 

  该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。

 

  注意:新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在链接上右击,在弹出的快捷菜单中选择"在新窗口中打开"时,子窗口便可以访问父窗口的Session。

 

如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?例如,绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:URL地址重写。

  URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。HttpServletResponse类提供了encodeURL(String url)实现URL地址重写,该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中。

  注意:TOMCAT判断客户端浏览器是否支持Cookie的依据是请求中是否含有Cookie。尽管客户端可能会支持Cookie,但是由于第一次请求时不会携带任何Cookie(因为并无任何Cookie可以携带),URL地址重写后的地址中仍然会带有jsessionid。当第二次访问时服务器已经在浏览器中写入Cookie了,因此URL地址重写后的地址中就不会带有jsessionid了。





已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页