内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用.
JSP的九大内置对象:
page application session request response out exception config pageContext.
- 内置对象 代表内容 类型 作用域
- request 请求对象 触发服务调佣的请求 javax.servlet.ServletRequest Request
- response 响应对象 对请求的应答 javax.servlet.SrvletResponse Page
- pageContext 页面上下文对象 本JSP页面的上下文 javax.servlet.jsp.PageContext Page
- session 会话对象 为请求的用户创建的session对象 javax.servlet.http.HttpSession Session
- application 应用程序对象 javax.servlet.ServletContext Application
- out 输出对象 向输出流写入内容的对象 javax.servlet.jsp.JspWriter Page
- config 配置对象 本JSP的ServletConfig javax.servlet.ServletConfig Page
- page 页面对象 实现本页当前请求的类的实例 javax.lang.Object Page
- exception 例外对象 表示JSP页面运行时产生的异常 javax.lang.Throwable Page
JSP的四个作用域:
application session request page.
page里的变量没法从一个页面到另一个页面。只要页面跳转了,它们就不见了。
request里的变量可以跨越页面。但是只要刷新页面,它们就重新计算了。
session和application里的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。
application里的变量一直在累加,除非你重启tomcat,否则它会一直变大。
例:此项目中用到了request:
request里的变量可以跨越页面。
(从数据库读取的内容存在list中)
request.setAttribute("addList", list);//将数据存放在request请求中
request.getRequestDispatcher("/index.jsp").forward(request, response);//通过转发跳转页面,并传递数据
在index.jsp页面接受数据,并对数据进行处理
<% List<Map<String,Object>> list = (List<Map<String,Object>>) request.getAttribute("addList"); %>
<% for(int i=0;i<list.size();i++){ %>
<tr>
<td class="td1"><input type="checkbox" class="xuanxiang"></td>
<td><%=i+1 %></td>
<td><%=list.get(i).get("name") %></td>
<td><%=list.get(i).get("sex") %></td>
<td><%=list.get(i).get("phone") %></td>
</tr>
<% } %>