JSP-简化

一、引入

在介绍完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 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}来取出这个变量。



    EL-demo


    ${brands}


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

三、JSTL

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

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

        
        
            jstl
            jstl
            1.2
        

        
        
            taglibs
            standard
            1.1.2
        

(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" %>


    EL-demo


    ${brands}

    
        true
    

    
            
                    
                    
序号 品牌名称 企业名称 排序 描述 状态
${status.count} ${brand.name} ${brand.entName} ${brand.order} ${brand.remark} 启用 禁用
四、总结

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

你可能感兴趣的:(java,前端,开发语言)