jsp

发布时间 2023-05-27 10:49:24作者: 卡卡罗特kk

jsp实现原理

image
服务器启动,将编写的jsp文件,转译成java文件,再编译成class文件运行

1.1指令

JSP的指令,主要是对当前JSP页面设置属性.

  • page: 设置当前当前jsp的属性 [重要]

  • taglib: 用来给当前jsp引入jstl标签库

  • include: 包含,将其他内容包含至当前页面 [了解]

  • 指令语法

    <%@指令名 属性名=属性值 %>

1.1.1Page

image

1.1.2taglib

语法: <%@ taglib uri="" prefix="" %>

用法: 引入jstl标签库

1.1.3include

语法: <%@ include file="路径">

作用: 将file指定路径的文件加入到当前页面,已达到复用的效果

场景:页面的头尾重复部分的内容.

1.2内置对象

内置对象,就是jsp页面中可以直接使用的对象.
image
这九个对象可以在转译后的xxx_jsp.java中找到这些对象

通过pageContext获得其他八个对象

1.3四大域

image

2.EL表达式

2.1作用

纯jsp取值: <%=request.getAttribute("username") %>

现在EL取值,${username}

作用: 简化取值操作

语法: ${域key}

2.2取域中的值

\({key},如果四大域中key值一样,按照page-->request-->session-->application的顺序依次取值,取到值即停止. **注意** 在取对象的值时,与该对象的get方法名要一致(例getID,\){id})

2.3隐式对象

image
常用:${pageContext.request.contextPath}了获得项目名

3.JSTL

3.1使用步骤

  1. 项目加入jstl和standard的jar包,或者引入pom依赖
  2. 在需要使用jstl标签的页面,中使用taglib引入库
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

3.2核心标签的使用

3.2.1判断标签

点击查看代码

    <%
        request.setAttribute("num",0);
    %>
<c:if test="${num > 0}">
        num > 0
    </c:if>
    <hr>
    <c:choose>
        <c:when test="${num > 0}">
            num > 0
        </c:when>
        <c:when test="${num < 0}">
            num < 0
        </c:when>
        <c:otherwise>
            num = 0
        </c:otherwise>
    </c:choose>

3.2.2循环标签

点击查看代码
<%--
循环 var是变量
    begin从哪里开始
    end 到哪结束
    step 步长默认为1
--%>
<c:forEach var="i" begin="1" end="10" step="2">
    ${i}<br>
</c:forEach>
<hr>
<%--
循环
    items 就是域中的集合
    var 每次循环得到的对象
--%>
<c:forEach var="user" items="${list}">
    <div>${user}</div>
</c:forEach>