第十四讲JSP技术(下)
一、JSP九大内置对象
(一)内置对象简介
JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。在JSP页面中,可以通过存取JSP内置对象实现与JSP页面和Servlet环境的相互访问。每个内部对象均有对应所属的ServletAPI类型。
在java’文件中声明好的类型
(二)内置对象详解
1、application:上下文对象 ,服务器启动,自动创建,是jsp的 的作用域对象,服务器关闭,对象销毁
<%
application.setAttribute("application", "application");
%>
<%=application.getAttribute("application") %>
2、request:请求对象,浏览器第一次发送请求的时候,服务器创建,请求结束,对象销毁
3、response:响应对象,浏览器第一次发送请求的时候,服务器创建,响应结束,对象销毁
~~~java
response.setContentType(“text/html;charset=utf-8”);
response.sendRedirect(“url”);
response.getWriter().print(“abc”);
~~~
4、config:配置对象,通过这个对象,可以获取其他8个对象,可以设置初始化的数据,以便于获取
5、page:当前页面对象,就是this对象
6、session:会话对象,浏览器第一次发送请求的时候,服务器创建,保存在服务器端,默认的会话时间是30分钟,浏览器的一次开关
7、exception:异常对象 需要设置 page指令中 isErrorPage=“true”
8、out :输出对象,PrintWriter out = response.getWriter() out.print();
9、pageContext:最小的作用域范围对象,只在当前页面有效,
项目根路径模板
<%
//项目根路径模板
String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
application.setAttribute("path", path);
%>
<img src="${path }/img/1.jpg">
二、JSP四大作用域对象
pageContext:当前页面作用域对象
request:请求对象 一次请求之间
session:会话对象,浏览器关闭之间或者30分钟有效期
application:上下文对象 服务器开关之间
<%@ 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>
<%
pageContext.setAttribute("pageContext", "pageContext");
request.setAttribute("request", "request");
session.setAttribute("session", "session");
application.setAttribute("application", "application");
%>
<%-- pageContext:<%=pageContext.getAttribute("pageContext") %> --%> <br>
pageContext:${
pageScope.pageContext}<br>
request:${
request }<br>
session:${
session }<br>
application:${
application }
</body>
</html>
三、EL进阶
当域对象中存储内容的key值相同时,优先取作用域最小的值。
如果要获取每个值:前面加 域对象Scope.key
<%
pageContext.setAttribute("a", "pageContext");
request.setAttribute("a", "request");
session.setAttribute("a", "session");
application.setAttribute("a", "application");
%>
${pageScope.a } <br>
${requestScope.a }<br>
${sessionScope.a }<br>
${applicationScope.a }<br>
四、JSP动作标签
语法:
<jsp:动作标签名 属性=”值”></jsp:动作标签名>
-
转发:<jsp:forward page=""></jsp:forward>
<%@ 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> <% /* 请求转发只能转发到当前项目中 */ // request.getRequestDispatcher("http://www.baidu.com").forward(request, response); //重定向可以重定向到其他项目,以及其他服务器 //response.sendRedirect("http://www.baidu.com"); response.sendRedirect("http://127.0.0.1:9527/SMS-WEB/login.jsp"); %> </head> <body> <%-- <jsp:forward page="el.jsp"></jsp:forward> --%> <%-- <jsp:forward page="../http://www.baidu.com"></jsp:forward> --%> </body> </html>
-
包含:<jsp:include page=""></jsp:include>
<!-- 动态包含 -->
<jsp:include page="top.jsp"></jsp:include>
我是中间页面
<jsp:include page="bottom.jsp"></jsp:include>
<!--静态包含 -->
<%@ include file="top.jsp" %>
我是中间页面
<%@ include file="bottom.jsp" %>
静态包含(指令) 动态包含(动作标签)【面试题】
静态包含:会将多个页面拼接为1个页面,只会生成一个java文件,多个页面中不能有同名变量
动态包含:会以调用方法的形式,包含其他页面,生成多个java文件,多个页面中可以有同名变量
案例:可以包含项目的根路径模板
path.jsp
~~~jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
其他页面 写在页面的最上方
<%@ include file="path.jsp" %>
五、JSTL标准标签库
1 jstl简介
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
作用:使用jstl的标签形式代替了jsp页面上的java代码
2 分类:
-
核心标签库
-
格式化标签库
-
SQL标签库
-
函数标签库
使用步骤:
1.下载jar包并导入到项目中:
2.使用taglib指令引用标签库
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
3.使用
一.核心标签库
-
通用标签:set remove out
<% request.setAttribute("name", "admin"); request.getAttribute("name"); request.removeAttribute("name"); %> <%-- <c:set var="name" value="admin" scope="session" ></c:set> --%> <c:set var="name" value="admin" scope="request" ></c:set> <c:out value="${name }"></c:out> <c:remove var="name"/>
2.分支判断if choose