4.1 什么是隐式对象:在jsp页面里面,jsp提供了一些对象,不用咱们自己创建,可以直接使用的对象 jsp常见的九大隐式对象: request:HttpServletRequest,请求对象,它同时也是域对象,作用范围一次请求 reqponse:HttpServletResponse,响应对象 session:HttpSession,会话对象,它同时也是域对象,作用范围一次会话。 application:ServletContext,上下文对象,同时也是域对象,作用范围整个项目。 config:ServletConfig,配置对象 out:JspWriter,其实和PrintWriter作用差不多 page:Object,代表当前jsp的页面对象。 pageContext:PageContext,jsp容器 exception:Throwable,异常对象,用来捕获异常信息。 只有当前jsp页面有isErrorPage="true"这个属性是,才能使用exception对象 4.2 out对象 out对象在输出内容到网页上面去,最终通过response缓冲区输出。
例如:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//1.使用out隐式对象输出内容:JspWriter
out.println("first line<br/>");
//2.使用PrintWriter输出
response.getWriter().print("second line<br/>");
%>
</body>
</html>
运行结果:
运行结果分析:
4.3 pageContext对象 功能:[1]获取其它八个隐式对象 获取请求对象:getRequest(); 获取响应对象:getResponse(); 获取输出对象:getOut(); -----------------------
[2]操作其它三个域对象:request、session、application pageContext也是一个域对象:作用范围在当前jsp页面。 操作其它三个域对象的方法: (1)存值:setAttribute(String key,Object obj,int scope) APPLICATION_SCOPE:对应的是application REQUQEST_SCOPE:对应的是request SESSION_SCOPE:对应的是session PAGE_SCOPE:对应的是自己 pageContext (2)取值:getAttribute(String key,int scope); 结论:在pageContext域对象使用findAttribute(String key);方法获取值,进行了全域查找 查找范围:pageContext–>request–>session–>application 首先找域作用范围效地对象,如果有值,获取到,如果域作用范围效地对象不存在对应 的值 , 就继续向下寻找。 4.4 Exception对象 它是用来捕获异常信息的。会用到两个属性。 – errorpage:属性对应的值,处理异常信息的页面,就是说在当前页面发生了异常,跳转到处理异常信息的界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="error.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
int a=3;
int b=0;
%>
输出:<%=a/b %>
</body>
</html>
–isErrorPage:属性对应的值是true或者false,如果为true,在当前页面可以使用exception对象
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
输出异常信息:<%=exception.getMessage() %>
</body>
</html>
运行结果:(这里是发生异常,跳转到error.jsp页面)
4.5 动作元素 4.5.1jsp:include动作元素:动态包含 动态包含:把其他资源页面的内容,合并到当前要包含的页面,最后一块输出。 基本语法格式:<jsp:include page=“被包含页面的url” flush=“true或者false”> </jsp:include> 动态包含特点:多个页面内容合并输出,多个jsp页面生成多个java文件,编译成多个class文件。 静态包含 特点:多个页面的内容合并输出,多个jsp页面最终生成一个java文件,编译一个class文件。 Dynamicinclude.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
dynamicinclude页面的中文---->包含页面
<jsp:include page="included1.jsp" flush="true"></jsp:include>
</body>
</html>
Included1.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%Thread.sleep(5000); %>
included1页面的中文------>这个就是被包含页面。
</body>
</html>
4.5.2 jsp:forward动作元素:请求转发。 它的作用实现请求转发,效果等同于RequestDispathcer对象的forward方法 基本语法格式<jsp:forward page=“转发页面的url地址”></jsp:forward> 转发页面的url地址:不需要携带项目名称,因为转发是服务器内部行为。 例如: jspforward.jsp如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
转发到欢迎页面:
<jsp:forward page="welcome.jsp"></jsp:forward>
</body>
</html>
welcome.jsp如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
欢迎您来访问。当前的访问时间:
<% out.println(new Date().toLocaleString()); %>
</body>
</html>
运行结果: