九大内置对象:
(r、r、s、c、a、e、o、p、p)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP内置对象</title>
</head>
<body>
<%
//页面上下文对象
pageContext.setAttribute("msg", "我是PageContext对象");
System.out.println(pageContext.getAttribute("msg"));
//请求对象
System.out.println("请求对象:"+request);
//响应对象
response.getWriter().print("OK");
//当前页面对象
System.out.println(page.getClass());//输出到控制台
//输出对象
out.print(48);//输出到浏览器:48
out.write(48);//输出到浏览器:0 ascii编码表对应
int no=101;
//会话对象
System.out.println(session);
//全局对象
System.out.println(application.getRealPath("/"));
//配置对象--初始化参数
System.out.println(config.getServletName());
//异常对象
System.out.println(exception);
System.out.println(application);
application.setAttribute("author", "1711");
%>
<h1>jsp脚本:<%=no %></h1>
<h1>jsp脚本:<% out.print(no); %></h1>
</body>
</html>
jsp中out对象和getWrite()不能同时使用,out对应的有缓冲区,不会直接写到response上,而getWrite()是直接写到
response上,两个同时写,会出现排序错乱问题,除非写完out,在后面加上out.flush().
PageContext对象
作用于页面上下文,可以获取其它八大对象。
可作为容器。
//通过pageContext获取request对象,第三个参数就是获取什么对象
pageContext.setAttribute("username", "zhangsan", PageContext.REQUEST_SCOPE);
//查询作用域中username值
pageContext.findAttribute("username");
pageContext虽然作用域最小,但是功能强大,可以获取其它三大作用域信息。
pageContext.forward(“2.jsp”);//转发 request.getRequestDispatcher().forward();
pageContext.include(“2.jsp”);//动态包含
四、四大作用域:
request session application pageContext
request域的使用场景:本次请求之后,数据就不再使用了,根据学号查询学生,根据新闻id查询新闻。
session域的使用场景:同一个会话中共享的数据,使用session,用户登录信息
application域的使用场景:所有用户共享的数据。整个程序的配置信息
pageContext域的使用场景:当前页面。