JSP(JavaServer Pages)是一种用于创建动态网页的技术。它是由Sun Microsystems(现为Oracle)开发的,基于Java编程语言。JSP允许开发者在HTML中嵌入Java代码,从而实现动态生成网页内容的功能
JSP本质上就是一个Servlet JSP在被访问时, 由JSP容器( TomCat )将其转换成Java文件(Servlet), 再由JSP容器( TomCat )将其编译, 最终对外服务的其实是个字节码文件

JSP脚本分类

  1. <%... %>

    内容会直接放到_jspService()方法中 相当于一条普通的语句

  2. <%=...%>

    内容会被放到_jspService()方法中的out.print()中
    作为out.print()的参数直接输出在web页面

  3. <%!...%>

内容会放到_jspService()方法之外, 被类直接包含(可以自定义成员方法和成员变量)

//写出来的代码非常难以阅读
<body>
<input type="button" value="新增"><br>
<hr>
<table border="1" cellspacing="0" width="800">
    <tr>
        <th>序号</th>
        <th>品牌名称</th>
        <th>企业名称</th>
        <th>排序</th>
        <th>品牌介绍</th>
        <th>状态</th>
        <th>操作</th>

    </tr>


    <%
        for (int i = 0; i < brands.size(); i++) {
            Brand brand = brands.get(i);
    %>


    <tr align="center">
        <td><%=brand.getId()%>
        </td>
        <td><%=brand.getBrandName()%>
        </td>
        <td><%=brand.getCompanyName()%>
        </td>
        <td><%=brand.getOrdered()%>
        </td>
        <td><%=brand.getDescription()%>
        </td>

        <%
            if (brand.getStatus() == 1) {
                //启用
        %>

        <td><%="启用"%>
        </td>

        <%
        } else {
            //没启用
        %>

        <td><%="未启用"%>
        </td>

        <%
            }
        %>

        <td><a href="#">修改</a> <a href="#">删除</a></td>
    </tr>

    <%
        }
    %>


</table>

</body>

JavaWeb中的四大域对象

  1. page: 当前页面有效
  2. request: 当前请求有效
  3. session: 当前会话有效
  4. application: 当前应用有效

EL表达式

Expression Language 表达式语言, 用于简化JSP页面内的JAVA代码

需要引入:

    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>


    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

jsp页面代码中还需要加入:

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>

主要功能: 获取数据

语法: ${expression}
${expression} :获取域中存储的key为brands的数据

el表达式 获取数据, 会依次从这4个域中寻找, 直到找到为止

el表达式找数据

JSTL标签

JSP标准标签库, 使用标签取代JSP页面上的Java代码

导入坐标:

        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

JSP页面上引入JSTL标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

if标签

一般会与EL表达式一起使用

    <c:if test="${status == 1}">
        <h1>启用</h1>
    </c:if>

    <c:if test="${status == 0}">
        <h1>禁用</h1>
    </c:if>

    <c:if test="${status == 2}">
        <h1>什么鬼...</h1>
    </c:if>

foreach标签

<c:forEach items="${brands}" var="brand" varStatus="status">
    <tr align="center">
        <td>${status.count}</td>
        <td>${brand.brandName}</td>
        <td>${brand.companyName}</td>
        <td>${brand.ordered}</td>
        <td>${brand.description}</td>
        
        <c:if test="${brand.status == 1}">
            <td>启用</td>
        </c:if>

        <c:if test="${brand.status != 1}">
            <td>禁用</td>
        </c:if>
        
        <td><a href="#">修改</a> <a href="#">删除</a></td>
    </tr>
</c:forEach>

varStatus="status":

${status.count}从1开始, ${status.index}从0开始

<c:forEach begin="0" end="10" step="1" var="i">
    <a href="https://nmslog.mxy520.online">${i}</a>
</c:forEach>