JSP-简化

发布时间:2024年01月16日
一、引入

在介绍完JSP的概念之后,我们深感JSP页面开发的困难,但是JSP并非没有做丝毫的努力。本篇将介绍JSP的两个快捷开发手段:EL表达式与JSTL。我们已知道JSP的复杂是来自于将HTML代码与Java代码揉杂在一起,于是我们通过上述的两个手段,可在很大程度上将两种开发语言分离,下面正式开始。

二、EL表达式

EL:Expression Language,用于在jsp文件中获取数据。语法格式为${expression}。例如:在Servlet中定义了一个brands变量,通过setAttribute方法设置在域中:

package com.byhuang.jsp;

import com.byhuang.pojo.Brand;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/el-demo")
public class ELDemoServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get...");
        List<Brand> brands = new ArrayList<>();
        brands.add(new Brand("三只松鼠", "三只松鼠", 100, "三只松鼠,好吃不上火", 1));
        brands.add(new Brand("优衣库", "优衣库", 10, "优衣库,舒服", 0));
        brands.add(new Brand("小米", "小米", 1000, "小米", 1));

        req.setAttribute("brands", brands);
        req.getRequestDispatcher("/el-demo.jsp").forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

那么在JSP中我们就可以通过${brands}来取出这个变量。

<html>
<head>
    <title>EL-demo</title>
</head>
<body>
    ${brands}
</body>
</html>

这样我们可以把brands的获取(通常是与数据库交互的业务逻辑)与brands的展示(前台页面)进行分离,使代码更加清晰。

三、JSTL

JSTL:Java Standarded Tag Library,JSP标准标签库。用标签取代JSP页面上的Java代码。

(1)JSTL的使用需要先引入依赖

        <!-- https://mvnrepository.com/artifact/jstl/jstl -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/taglibs/standard -->
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

(2) JSP代码改造,示例了条件语句(c:if)与循环语句(c:forEach)。类似于前端代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>EL-demo</title>
</head>
<body>
    ${brands}

    <c:if test="true">
        true
    </c:if>

    <table border="1" cellspacing="0" width="800">
        <tr>
            <th>序号</th>
            <th>品牌名称</th>
            <th>企业名称</th>
            <th>排序</th>
            <th>描述</th>
            <th>状态</th>
        </tr>
        <c:forEach items="${brands}" var="brand" varStatus="status">
            <tr>
                <td>${status.count}</td>
                <td>${brand.name}</td>
                <td>${brand.entName}</td>
                <td>${brand.order}</td>
                <td>${brand.remark}</td>
                <c:if test="${brand.status == 1}">
                    <td>启用</td>
                </c:if>
                <c:if test="${brand.status == 0}">
                    <td>禁用</td>
                </c:if>
            </tr>
        </c:forEach>
    </table>
</body>
</html>
四、总结

至此,我们利用EL与JSTL简化了JSP的开发,大大提升了JSP代码的可读性与易维护性。但是请读者思考,即使JSP克服了代码书写上的复杂,还存在什么问题呢?请关注下一篇文章,继续了解Java Web技术的更迭。

文章来源:https://blog.csdn.net/buzzkiller/article/details/135614196
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。