Jsp 九大内置对象
什么是内置对象?
JSP 提供了由容器实现和管理的内置对象,也可以称之为隐含对象,由于JSP使用Java作为脚本语言,所以JSP将具有强大的对象处理能力,并且可以动态创建Web页面内容。但Java语法在使用一个对象前,需要先实例化这个对象,这其实是一件比较烦琐的事情。JSP为了简化开发,提供了一些内置对象,用来实现很多JSP应用。在使用JSP内置对象时,不需要先定义这些对象,直接使用即可
四个作用域对象:
request对象
request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。
// 设置中文编码
request.setCharacterEncoding("utf-8");
// 按照参数名称,获取获取请求中的参数值
request.getParameter("");
// 根据目标地址,获取RequestDispatcher请求转发对象
request.getRequestDispatcher("");
// 在请求转发前,存入KV键值对
request.setAttribute("key","value");
// 在请求转发后,根据key获取value
request.getAttribute("key");
// 获取当前应用在服务器端的真实路径
StringrealPath=request.getRealPath("");
System.out.println("项目运行时的服务器真实路径:"+realPath);
//获取项目运行时的应用的访问名称
StringcontextPath=request.getContextPath();
System.out.println("项目运行时的应用的访问名称:"+contextPath);
//当前请求的方式
Stringmethod=request.getMethod();
System.out.println("当前请求的方式:"+method);
// 获取发起本次请求的客户端IP地址
Stringremote=request.getRemoteAddr();
System.out.println("客户端的IP地址:"+remote);
// 获取服务器本地的IP地址
Stringlocal=request.getLocalAddr();
System.out.println("服务器的IP地址:"+local);
session对象
指的是客户端与服务器的一次会话 , 一次"会话"包含若干次"请求"。从客户连接到服务器的一个 WebApplication 开始 , 直到客户端与服务器断开连接为止 ; 它是 HTTPSession 类的实例 , 作用域为 session ( 会话期 )Session会话的生命周期:会话开始:客户端的第1次"请求" 会话结束:1.客户端浏览器关闭;2.客户端超时(Tomcat默认为30分钟);3.服务器关闭;
// 获取当前Session会话对象
HttpSessionsession=request.getSession();
System.out.println("Session ID: "+session.getId());
//将当前KV键值对,存入Session会话(服务器端)
session.setAttribute("key","value");
//从当前Session会话中,根据key获取value
session.getAttribute("key");
DatecreationDateTime=newDate(session.getCreationTime());
System.out.println("Session 的创建时间:"+creationDateTime);
DatelastAccessedDateTime=newDate(session.getLastAccessedTime());
System.out.println("本次会话最后一次访问时间:"+lastAccessedDateTime);
//使用Session保存访问次数
HttpSessionsession=request.getSession();
intcount=0;
if(session.getAttribute("count")!=null) {
// 获取之前存储的数值
count=Integer.parseInt(session.getAttribute("count").toString());
// 重新保存
session.setAttribute("count",++count);
}else{
// 第一次保存
session.setAttribute("count",++count);
}
//设置中文编码
response.setContentType("text/html;charset=utf-8");
PrintWriterout=response.getWriter();
out.print("您的访问次数为:<strong>"+session.getAttribute("count")+"</strong>");
application对象
实现了用户间数据的共享 , 可存放全局变量 ; 它开始于服务器的启动 , 直到服务器的关闭 , 在此期间 , 此对象将一直存在 ; 这样在用户的前后连接或不同用户之间的连接中 , 可以对此对象的同一属性进行操作 ; 在任何地方对此对象属性的操作 , 都将影响到其他用户对此的访问 ; 服务器的启动和关闭决定了 application 对象的生命 ; 它是 ServletContext 类的实例。
//使用application对象保存访问次数
ServletContextapplication=request.getServletContext();
intcount=0;
if(application.getAttribute("count")!=null) {
// 获取之前存储的数值
count=Integer.parseInt(application.getAttribute("count").toString());
// 重新保存
application.setAttribute("count",++count);
}else{
// 第一次保存
application.setAttribute("count",++count);
}
//获取application应用的真实路径
StringrealPath=application.getRealPath("");
System.out.println("应用真实路径:"+realPath);
//获取应用访问名称
System.out.println("应用访问名称:"+application.getContextPath());
//获取ession超时时间
System.out.println("Session超时时间:"+application.getSessionTimeout());
pageContext 对象
提供了对 JSP 页面内所有的对象及名字空间的访问 , 也就是说他可以访问到本页所在的 session , 也可以取本页面所在的 application 的某一属性值 , pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
// 将KV键值对,存入"pageContext"页面"范围内
pageContext.setAttribute("key","value");
五个其它内置对象:
config 对象
config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。
out对象:
out 对象是 JspWriter 类的实例,是向客户端输出内容常用的对象 ;用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
PrintWriterout=response.getWriter();
out.print("<script>");
out.print(" alert('修改成功');");
out.print(" location='list_product.jsp';");
out.print("</script>");
response 对象:
response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。
//处理响应过程中的中文乱码
response.setContentType("text/html;charset=utf-8");
//获取响应输出对象
PrintWriterout=response.getWriter();
//重定向客户端的请求
response.sendRedirect("product.html");
page 对象
page 对象代表JSP本身,只有在 JSP 页面内才是合法的。 page 对象本质上是包含当前 Servlet 接口引用的变量,可以看作是 this 关键字的别名。
exception 异常对象
exception 对象用来处理JSP文件执行时发生的所有错误和异常,只有在page指令中设置 isErrorPage属性值为true的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。exception对象几乎定义了所有异常情况,在Java程序中,可以使用try...catch关键字来处理异常情况,如果在JSP页面中出现没有捕获到的异常,就会生成exception对象,并把exception对象传送到在page指令中定义的错误页面中,然后在错误页面中处理相应的exception对象。