JSP进阶版

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>

静态包含和动态包含的区别

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值