请求与相应模式的具体实现是内置对象来完成的。是由内置对象中的response和request来完成的。
内置对象又叫隐含对象,有9个内置对象,不需要预先声明就可以在脚本代码和表达式中随意使用。
使用容器获取太麻烦,内置对象能够提高开发效率。
作用域:pageContext,request,session,application
request
封装了由web浏览器或其他客户端生成HTTP请求的细节(参数、属性、头标和数据)
out
代表输出流的对象
response
封装了返回到HTTP客户端的输出,向页面作者提供设置响应头标和状态码的方式。
response.getCharacterEncoding()获取字符集
request作用域
数据存储的范围
在相邻两个web资源之间共享同一个request对象。
request.getRequestDispatcher()包含两个方法,分别是请求转发和请求包含。
这个方法的的forword方法需要传入两个对象,目前学习看是转发request和response
请求转发: rd.forward( request , response );
请求包含: rd.include( request , response);
在获取请求的jsp文件:
<%
request.setAttribute("name", "Imooc");
//下面做一个请求转发
request.getRequestDispatcher("result.jsp").forward(request, response);
%>
在获取请求转发的jsp文件:
从request作用域获取的数据:<%=request.getAttribute("name") %>
此时会直接跳转到result.jsp文件
pageContext对象
提供了转发请求到其他资源和包含其他资源的方法,提供获取其他内置对象的方法。
1、forward方法转发到指定页面a.jsp并且带相关参数:
pageContext.forward(“a.jsp?name=imooc”);
2、include方法把header.jsp文件引入,类似母版
pageContext.include(“header.jsp”);
3、getXX获取其他的内置对象【类似于request.getAttribute(“name”)】
pageContext.getRequest().getAttribute(“name”)
page对象
代表了正在运行的由JSP文件产生的类对象、
可以在jsp文件中,通过this.的方法获取page的相关信息
pageContext的作用域
数据共享只在当前执行页面有效
在同一个页面中设置:pageContext.setAttribute和pageContext.getAttribute
session对象
主要用于跟踪会话
session作用域
会话期间
设置绘画有效时间的方法:
session.setMaxInactiveInterval(int second);
config对象
获取配置信息
如果在web.xml配置文件中写入如下信息:
<servlet>
<servlet-name>logon</servlet-name>
<jsp-file>/logon.jsp</jsp-file>
<init-param>
<param-name>age</param-name>
<param-value>100</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>logon</servlet-name>
<url-pattern>/denglu.do</url-pattern>
</servlet-mapping>
可以通过127.0.0.1/imooc-jsp/denglu.do访问之前的logon.jsp,并且,如果在logon首部添加如下信息
config对象:<%=config.getServletName() %>
<br>
config获取初始化参数:<%=config.getInitParameter("age") %>
exception对象
可以在有些地方抛出异常,并且如果发生异常就跳转到指定的页面,在jsp声明语句中添加errorPage=”error.jsp”,并且在error.jsp的声明语句中添加isErrorPage=”true”
exception对象只能在错误页面中使用,即声明文件中加入isErrorPage=”true”
application对象
代表了web应用的本身,提供了关于服务器版本,应用级初始化参数和应用内资源绝对路径方式;
application作用域
web容器的生命周期
获取当前系统的访问
<%
Object o = application.getAttribute("count") ;
if(o ==null )
{
application.setAttribute("count", 1);
}
else{
int count = Integer.parseInt(o.toString());
application.setAttribute("count", count+1);
}
session.setAttribute("account", account);
%>
<h3 align="right">登录用户数:<%=application.getAttribute("count") %></h3>