文章目录
JSP指令元素的概述
- JSP指令元素的作用
- 用于指示JSP执行某些步骤
- 用于指示JSP表现特定行为
- JSP指令元素的语法
- <%@ 指令名称 属性名称=属性的值 属性名称=属性的值 %>
- JSP指令元素的分类
- page指令:指示JSP的页面设置属性和行为
- include指令:指示JSP包含哪些其他页面
- taglib指令:指示JSP页面包含哪些标签库
JSP的指令——page指令
- page属性用来定义JSP文件的全局属性
- 这些属性可以单独使用,也可以几个或多个同时使用
- 在JSP页面中,只有import属性可以出现多次,其他属性都只能出现一次
- page指令属性:
- import属性:用于导入java包或类。
- contentType属性:标名JSP被浏览器解析或者打开时采用的默认字符集。
- pageEncoding属性:JSP文件 及JSP翻译后的Servlet保存到硬盘上采用的字符集。
- language属性:声明使用脚本的语言,只能是java。
- extends属性:标名JSP编译成Servlet继承的类,默认是HttpJspBase。
- session属性:标名JSP中是否可以直接使用session对象,默认值true。
- buffer属性:标名JSP对客户端输出缓冲区的大小,默认8kb。
- autofFlush属性:如果缓冲区大小溢出,是否自动刷出,默认true。
- errorPage/isErrorPage属性:处理JSP页面异常。
- isElIgnored:通知JSP是否忽略EL表达式。
JSP的指令——include指令
- 在JSP页面中静态包含一个文件,同时由该JSP解析包含的文件内容。
- include指令属性:
- file属性:指示JSP页面包含页面路径。(使用事项:应该将被包含的页面结构去掉;在被包含的页面中定义页面,包含的页面中还可以使用。)
- include指令原理(静态包含原理)
- session对象的非空判断(登录控制)
- 登录主页
- 登录主页
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="utf-8"/>
<title>首页</title>
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/bootstrap.min.css"/>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-3.4.1.min.js"></script>
<script src="<%=request.getContextPath()%>/js/bootstrap.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<%@include file="/jsp/notNullCharge.jsp"%>
<div class="container">
<div class="row">
<div class="span12">
<h3>
欢迎您:<%=loginUser.getUname()%>
</h3>
<ul class="nav nav-tabs">
<li class="active">
<a href="#">首页</a>
</li>
</ul>
<table class="table table-striped">
<thead>
<tr>
<th>商品编号</th>
<th>商品名称</th>
<th>商品价格</th>
<th>商品图片</th>
<th>商品描述</th>
</tr>
</thead>
<tbody>
<%
List<MyProduct> myProductList = (List<MyProduct>) request.getAttribute("myProductList");
if (myProductList != null) {
for (MyProduct product : myProductList) {
%>
<tr>
<td><%=product.getPid()%>
</td>
<td><%=product.getPname()%>
</td>
<td><%=product.getPrice()%>
</td>
<td><%=product.getPimg()%>
</td>
<td><%=product.getPdesc()%>
</td>
</tr>
<%}
}%>
</tbody>
</table>
<a class="btn btn-success" href="<%=request.getContextPath()%>/jsp/addProduct.jsp">新增商品</a>
</div>
</div>
</div>
</body>
</html>
- notNullCharge.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
MyUser loginUser = (MyUser) session.getAttribute("loginUser");
if (loginUser == null) {
response.sendRedirect(request.getContextPath() + "/index.jsp");
return;
}
%>
JSP的指令——taglib指令
- 用于在JSP页面中引入标签库。
- taglib指令属性:
- uri属性:引入的标签库的路径。
- prefix属性:引入的标签库的别名。
JSP的内置对象
- 指的是可以直接在JSP页面中使用的对象。
- JSP的9大内置对象:
- request:从客户端向服务器发送的请求对象。
- response:从服务器向客户端的响应对象。
- session:服务器为客户端创建会话对象。
- application:代表应用,获得的ServletContext对象。
- out:向输出流写入内容的对象。
- page:当前JSP页面翻译成Servlet后的对象的引用。
- pageContext:本JSP页面的上下文对象。
- config:本JSP页面的ServletConfig对象。
- exception:表示JSP页面运行时产生的异常对象。
- JSP内置对象的具体类型(JSP编译成servlet后的源码可查):
- request:HttpServletRequest
- response:HttpServletResponse
- session:HttpSession
- application:ServletContext
- out:JspWriter
- page:Object
- pageContext:PageContext
- config:ServletConfig
- exception:Throwable
- pageContext对象介绍
- 代表当前页面运行的一些属性,是javax.servlet.jsp.PageContext类的实例对象。
- 作用:提供了page范围的数据的存取方法(setAttribute等);通过这个对象可以获取其他8个内置对象。
JSP的四个作用范围
- PageScope:页面范围,在当前页面内有效。
- RequestScope:请求范围,在一次请求响应范围内有效。
- SessionScope:会话范围,在一次会话区间有效。
- ApplicationScope:应用范围,在整个web项目中有效。
- pageContext对象向四个域范围存取数据
- pageContext对象的findAttribute方法
查找属性方法:先根据小范围的名称进行查找,如果找到了就返回,没有找到就会去比其大一个的域的范围进行查找。
JSP的动作标签
JSP的动作标签用于在JSP页面提供业务逻辑的功能,避免在JSP页面中直接编写java代码,造成JSP页面难以维护。
JSP常用的动作标签:
- jsp:forward/:请求转发
- <jsp:forward page=“demo4/demo2,jsp” ></jsp:forward>
- jsp:include/:包含(动态包含)
- <jsp:include page=“demo4/demo2,jsp” ></jsp:include>