★ 什么叫内置对象
所谓内置对象,就是在jsp中不需要声明,也不需要实例化直接就可以拿来用
★ 九大内置对象概览
内置对象 | 类型 | 作用域 |
request | javax.servlet.http.HttpServletRequest | request |
response | javax.servlet.http.HttpServletResponse | page |
pageContent | javax.servlet.jsp.PageContent | page |
session | javax.servlet.http.HttpSession | session |
application | javax.servlet.ServletContent | application |
out | javax.servlet.jsp.JspWriter | page |
config | javax.servlet.ServletConfig | page |
page | java.lang.Object | page |
exception | java.lang.Throwable | page |
★ 内置对象的分类
● 与servlet有关的内置对象
◇ page
◇ config
● 与input/output相关的内置对象
◇ out
◇ request
◇ response
● jsp执行时提供的与Context相关的内置对象
◇ session
◇ application
◇ pageContext
● 与Error相关的对象
◇ exception
★ jsp属性的保护范围
● jsp中属性的设置与取得方法
◇ 设置属性
public void setAttribute(String name, Object value)
◇ 获取属性
public Object getAttribute(String name)
● jsp中提供了四种属性的保护范围
◇ page :在一个页面范围内
在jsp中一个页面的属性范围是由pageContext来完成,只能在当前页面范围有效,若转发给别的页面则无效示例如下:
<%@page contentType="text/html;charset=gb2312"%> <% pageContext.setAttribute("name","方小开"); pageContext.setAttribute("password","123"); %> <hr> <% String name= (String)pageContext.getAttribute("name"); String password = (String)pageContext.getAttribute("password"); %> <h1><%=name%></h1><br> <h1><%=password%></h1>
◇ request :在一个服务器请求范围内
由request内置对象设置的属性可以转发给其它页面
前提: 在服务器内跳转,且必须使用<jsp:forward>,若用超链接的形式则取不到值
<!-- request.jsp --> <%@page contentType="text/html;charset=gb2312"%> <% request.setAttribute("name","方小开"); request.setAttribute("password","123"); %> <jsp:forward page="forward.jsp"/>
<!-- forward.jsp --> <%@page contentType="text/html;charset=gb2312"%> <% String name= (String)request.getAttribute("name"); String password = (String)request.getAttribute("password"); %> <h1><%=name%></h1><br> <h1><%=password%></h1>
◇ session :在一次会话范围内
session主要是针对同一个用户而言,不管采用那种跳转方式,只要是同一个用户(说专业一点,就是同一个sessionid),都可以取到属性值
<!-- session.jsp --> <%@page contentType="text/html;charset=gb2312"%> <% session.setAttribute("name","方小开"); session.setAttribute("password","123"); %> <jsp:forward page="forward1.jsp"/><br>
<!-- forward1.jsp --> <%@page contentType="text/html;charset=gb2312"%> <% String name= (String)session.getAttribute("name"); String password = (String)session.getAttribute("password"); %> <h1><%=name%></h1><br> <h1><%=password%></h1> <a href="testSession2.jsp">forward2.jsp</a>
<!-- forward2.jsp --> <%@page contentType="text/html;charset=gb2312"%> <% String name= (String)session.getAttribute("name"); String password = (String)session.getAttribute("password"); %> <h1><%=name%></h1><br> <h1><%=password%></h1>
◇ application :在一个服务器应用范围内
application对象设置的属性在整个服务器范围内有效,这个比session范围更广,session只是在同一sessionid内有效,当把地址复制到新建窗口(不是通过[文件]→[新窗口]新开的窗口)时,session属性失效; 而appliacation对象设置的属性对所有用户都有效,因为application设置的属性保存在服务器端,向所有用户共享信息.,当服务器关闭,则会释放所有资源, 关闭服务器前的所有属性失效.(代码参照上面的代码, 自我变通)