JSP内置对象

4.JSP隐式对象

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>

运行结果:
在这里插入图片描述

posted @   别团等shy哥发育  阅读(15)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示