JSP中存在几个内置对象,这些对象可以不经过显示声明直接引用,也不需要专门的代码创建其实例,在程序设计中可以直接使用这些对象。
内置对象列表:
内置对象 类型 作用域 相关 request javax.servlet.http.Interface HttpServletRequest request i/o response javax.servlet.http.Interface HttpServletResponse page i/o session javax.servlet.http.Interface HttpSession session context application javax.servlet. ServletContext application context pageContext javax.servlet.jsp.PageContext page context config javax.servlet. ServletConfig page servlet out javax.servlet.jsp.JspWriter page i/o page java.lang.Object page servlet exception java.lang.Throwable page error
四种属性保存范围: void setAttribute(String key,Object obj)和object getAttribute(String name)方法常用来设置属性范围 一、page范围: 在JSP中设置一个页的属性范围,必须通过pageContext完成。主要应用在Struts、WebWork等。 二、request范围: 将属性保存在一次请求范围之内:必须使用服务器段跳转<jsp:forward/>。连续跳转,跳转的最终目标页显示有效。 如果使用超链接方式跳转,属性结果不会被保留。主要应用在MVC、Struts、WebWork等。 三、session范围: 只要设置上去,则不管是什么跳转都能取得属性。 eg: sessionDome01文件: <html> <head> <title>includeDemo</title> <body> <% session.setAttribute("name","java"); session.setAttribute("psw","123456"); %> <jsp:forward page="sessionDemo02.jsp"/> </body> </head> </html> sessionDome02文件: <h1>02name:<%=(String)session.getAttribute("name")%></h1> <h1>02psw:<%=(String)session.getAttribute("psw")%></h1> <a href="sessionDemo03.jsp">session03</a> sessionDome03文件: <h1>03name:<%=(String)session.getAttribute("name")%></h1> <h1>03psw:<%=(String)session.getAttribute("psw")%></h1> session的主要功能:用于验证用户是否登陆。 四、application范围: 只需设置一次,则所有的网页窗口都可以取得数据。如果要释放application的值只有通过关闭服务器。 application的应用:在线人员的统计、在线人员名单列表。
总结:实际上,四种属性范围,都是通过pageContext对象完成的。 pageContext.setAttribute(String name, Object value, int scope) scope: public static final APPLICATION_SCOPE public static final SESSION_SCOPE public static final REQUEST_SCOPE public static final PAGE_SCOPE
设置过的application或每一个session保存过多的对象,则系统的性能会下降。所以能使用request就不要使用session,能使用session就不要使用application。