EL和jstl(概念和使用方法)

本文详细介绍了JSP技术中的JSP标签和EL表达式的使用方法,包括EL表达式的两种访问Bean属性的方式及算术、关系和逻辑运算,同时通过实例展示了JSTL标签的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念:

        1 .  JSP 标签 是用来替换java代码的技术,容器遇到标签后会将其转换成java代码,jsp标签类似于开始标记、属性、结束标记、标签体。

 

  1.  EL表达式是一套简单的运算规则,用于给jsp标签的属性赋值,也可以脱离jsp标签直接使用。

 

  1.   EL表示用法

             1)访问bean属性

             第一种方式:

             语法              ${user.username}

             执行过程:     从某些指定范围内查找绑定名为"user"的对象,如果找到了,则调用“getUsername”方法然后输出。

             第二种方式:

              语法              ${user['username']}

              说明:            有两种特殊用法,允许[]里面出现绑定名,允许里面出现从0开始的下标,如访问某个元素。

 

             2)做一些运算(算术、关系运算、逻辑运算)

                     注:运算结果可以给jsp标签的属性赋值,也可以直接输出。

 

eg:

 

C2.jsp

<%@ page contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ page import="bean.*" %>

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

<html>

<head>

<title>Insert title here</title>

</head>

<body style="font-size:30px;">

    <%

        User user = new User();

        user.setUname("张飞");

        user.setGender("x");

        user.setAge(22);

        request.setAttribute("user", user);

    %>

    性别:

    <c:choose>

        <c:when test="${user.gender == 'm'}">男</c:when>

        <c:when test="${user.gender == 'f'}">女</c:when>

        <c:otherwise>保密</c:otherwise>

    </c:choose>   

    年龄:

    <c:choose>

        <c:when test="${user.age < 18 }">未成年</c:when>

        <c:when test="${user.age > 65 }">老年</c:when>

        <c:otherwise>成年</c:otherwise>

    </c:choose> 

    

</body>

</html>

 

 

 

package bean;

public class User {

    private String uname;

    private String gender;

    private int age;

    

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public String getUname() {

        return uname;

    }

    public void setUname(String uname) {

        this.uname = uname;

    }

    public String getGender() {

        return gender;

    }

    public void setGender(String gender) {

        this.gender = gender;

    }   

}

 

 

package web;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import bean.User;

 

public class ListUserServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    

    protected void service(

            HttpServletRequest request,

            HttpServletResponse response)

                    throws ServletException,

                    IOException {

        List<User> users = new ArrayList<User>();

        for(int i = 0; i < 8; i ++){

            User user = new User();

            user.setUname("用户" + i);

            user.setGender("m");

            user.setAge(22 + i);

            users.add(user);

        }   

        request.setAttribute("users", users);

        request.getRequestDispatcher("c3.jsp").forward(request, response);

    }

}

 

 

package web;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import bean.User;

 

public class ListUserServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    

    protected void service(

            HttpServletRequest request,

            HttpServletResponse response)

                    throws ServletException,

                    IOException {

        List<User> users = new ArrayList<User>();

        for(int i = 0; i < 8; i ++){

            User user = new User();

            user.setUname("用户" + i);

            user.setGender("m");

            user.setAge(22 + i);

            users.add(user);

        }   

        request.setAttribute("users", users);

        request.getRequestDispatcher("c3.jsp").forward(request, response);

    }

}
</body>
</html>  

 

  1. jstl标签: jsp标签的一种。

          使用:

          Step1:导入jstl.jar

          Step2:  用taglib指令导入要使用的jsp标签

           <% taglib uri="jsp标签的命名空间"  prefix="指定命名空间的别名,前缀"%>

 

          核心标签:

          if标签:类似于java中if语句

          <c: if  test="">

            标签体

           </c:if>

          当test属性为true,执行标签体内容,test属性也可以用el表达式赋值。

 

          choose标签:类似于java中switch…case语句

          <c:choose>     
               <c:when test="">
              </c:when>
              ...
              <c:otherwise>
              </c:otherwise>
             </c:choose>

 

          forEach标签

          <c:forEach items="要遍历的集合或者数组,可用el表达式赋值" var="绑订名" varStatus="绑订名">
          </c:forEach>

    注:
           绑订范围固定是pageContext。该标签每次从集合或者数组中
    取一个元素,然后绑订到pageContext上。

    注:
           绑订值是一个对象,由该标签创建。该对象提供了几个方法,
    用于获得当前遍历的状态:
           getCount(): 获得当前是第几次迭代(从1开始)。
           getIndex():  获得当前正在被迭代的元素的下标(从0开始)。

 

C3.jsp

<%@ page contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

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

prefix="c" %>

<html>

<head>

<title>Insert title here</title>

<style type="text/css">

    .row1{

        background-color:#fff8dc;

    }

    .row2{

        background-color:#f0f0f0;

    }  

</style>

</head>

<body style="font-size:30px;">

    <table border="1" width="60%"

    cellpadding="0" cellspacing="0">

        <tr>

            <td>序号</td>

            <td>下标</td>

            <td>用户名</td>

            <td>性别</td>

            <td>年龄</td>

        </tr>

        <c:forEach items="${users}" var="u"

        varStatus="s">

            <tr class="row${s.index % 2 + 1}">

                <td>${s.count}</td>

                <td>${s.index}</td>

                <td>${u.uname}</td>

                <td>${u.gender}</td>

                <td>${u.age}</td>

            </tr>

        </c:forEach>

    </table>  

</body>

</html>

 

jsp标签如何执行?

      容器依据标签的命名空间找到对应的描述文件(.tld文件),
接下来,依据标签名找到对应的标签类,然后将该标签类实例化
并调用相应的方法。(从描述文件到标签名,再到标签类,并将其实例化,并调用对应方法        也应该使用反射实现的)

 

转载于:https://www.cnblogs.com/shijinglu2018/p/9461690.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值