EL 与 JSTL 以及多表操作 概念及其使用

目录

1  EL表达式

1.1概念

1.2 基本使用

 2  JSTL 

        2.1概念

        2.2 jstl中常见的两种常用标签库内容:

        2.3 核心标签库

3.多表操作

3.1映射关系的建立:

dao层实现对数据的映射(2种方式)



1  EL表达式

1.1概念

        EL(Expression Language),表达式语言,是包含在Java EE平台中的一种技术,主要的目的是为了能够简化开发者在页面中的一些代码。特点是非常简洁,易懂。

1.2 基本使用

        基本语法:${ }

        包含的内容:

                通过变量名取值:         ${变量}

                获取对象的属性值“        ${对象名.属性名}

                获取集合元素

                        调用方法 : ${ 对象名.size() }

                        获取集合中索引的值 : ${对象名【索引】} 

                        获取到map集合中的key所对应的value ${map集合对象名【”key“】}

                执行表达式:

                        算数运算:

                                ${ + - * / %}

                                / 可以用div来代替

                                %可以用mod方法来取代

                        逻辑运算

                                &&(and) ||(or)    !(not)

                        关系运算符

                                > (gt) < (lt)    >=(ge)    <=(le)  !=(ne)   == (eq)

                        empty运算符

                                empty:代表判断元素是否为null 或者是否包含元素

                                not empty : 代表判断元素是否不为null ,或者是否不包含元素

        获取作用域中的内容以及参数的内容和页面的内容

                

作用域的访问对象

        正常情况下,在使用EL表达式时,需要在表达式中添加对应的作用域,例如:${sessionScope.xxx},如果我们没有书写作用域范围访问对象,此时,EL表达式就会从page向request中查询,如果request没有对应的值,就会找到session查询,如果session范围内查找也没有,就最后找到application,如果几个作用域都不包含要查找的值或对象,就会返回null状态。此时如果我们调用某个对象的某个属性或方法,此时EL表达式如果没有找到对象就会直接输出空白。 

按照page > request > session > application 的作用栈一次顺序查找。

 参数访问对象

        param相当于在页面中调用了request.getParameter("") 来获取参数中对应的内容。        

        paramValues相当于在页面中调用了request.getParameterValues("")来获取同名对象的多个值,返回一个数组类型。

 jsp隐式对象

        可以通过pageContext对象获取到该对象中的某个值,同时还可以获取到页面中衍生的各类内置对象,例如可以通过pageContext.request.contextPath获取到当前项目的上下文路劲。

 2  JSTL 

        2.1概念

                JSTL(JAVA Server Page Tag Library) , 标准标签库。是为了能够提高 JAVA WEB 的开发效率,以及维护性。

        2.2 jstl中常见的两种常用标签库内容:

           核心标签:核心标签库是整个JSTL中最常用的部分,主要由以下几个部分组成:

基本输入输出,流程控制,迭代操作和URL操作。负责web应用的常见工作,如循环,表达式赋值,基本输入输出等。

            I18N 格式标签库:用来格式化四按时数据工作,如:对不同区域的日期格式化等。     

        2.3 核心标签库

  •  输入输出 

                步骤1:导入jstl的依赖

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

                步骤2:在使用该库的页面中添加指令

格式化库 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/f mt" %> 

核心库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/c ore" %>

                步骤3:使用标签库

<c:set var="变量名" value="值" scope="request|session|application" /> 

<c:set var="num" value="100" />

<c:set var="变量名" value="值" scope="request|session|application" /> 
<c:set var="num" value="100" /> 

将一个对象中的属性进行修改:
target:代表要修改的对象 
property:要修改的对象中的属性 
value:要修改的属性值 

<c:set target="${userInfo}" property="username" value="zhangsan" />

步骤4:输出内容

<c:out value="${num}" />

<%-- 
 value:代表要输出的内容,如果直接写了内容,就会按照普通输出的方式显示在页面上 
 default;如果没有找到对应的变量,就会采用default作为值输出 
--%>
  • 删除属性

        

<c:remove var="变量" />
  •  条件标签  if choose
<c:if test="条件表达式">

</c:if>

if表达式是没有else的相关操作的,如果需要多层判断,则需要多谢一些if的语法

<c:if test="${empty userInfo}"> 
    您还没有登录! 
</c:if> 
<c:if test="${not empty userInfo}"> 
     您好,${userInfo.username}  
</c:if>

<choose> 
<c:when test="条件表达式"> 
    //满足条件 
</c:when> 
<c:otherwise> 
     //多个条件都不满足,就会执行该段 语句 
</c:otherwise> 
</choose>

  • 循环控制

      

<c:forEach var="循环时的变量" items="集合|数组" begin="起始值" end="结束值" step="迭代步长"                     varStatus="循环属性变量">
        //循环体 
</c:forEach>

//遍历集合 
<c:forEach var="str" items="${strings}">
    ${str} 
</c:forEach>


//按普通的值遍历 
<c:forEach var="i" begin="0" end="10" step="1"> 
    <a href="#">${i}</a> 
</c:forEach>

//遍历map集合 
<c:forEach var="m" items="${map}"> 
    ${m.key} --- ${m.value} 
</c:forEach>

//获取varStatus中的变量内容 
<c:forEach var="str" items="${strings}" varStatus="status"> 
    <%--${status.index + 1} ${str}- -%> 
${status.last} 5 </c:forEach>
  •   格式化

        数字格式化

                <fmt:formatNumber value = "12.34" pattern = "#0.00" /> 12.34
                保留小数点后两位数

        日期格式化 

                <fmt:formatDate value="${date}" type="both"/>

                输出格式: 2010-5-31 23:59:59

总结

 

3.多表操作

3.1映射关系的建立:

对象关系映射(Object Relation Mapping),指的是 数据库表和对象之间的一种映射关系。在建立对象映射 时,通常情况下会采用以下形式 :

  • 一对多:
  • 在一的一方,建立多的的一方的集合,由 于考虑到集合中的对象必须是唯一的,所 以通常会采用Set集合实现,由于一对多 的查询方式较为复杂而且不利于维护,所 以通常采用多对一的查询方式。
//一对多关系映射 
private Set<Student> students ;
  • 多对一

         在多的一方,建立对一的一方的引用。

//映射多对一的或者是一对一关系
 private Grade grade ;

dao层实现对数据的映射(2种方式)

学生信息存在在年级的字段:private Grade grade ;

第一种方式:

    //建立年级信息。
    Grade grade = new Grade() ;
    
    grade.setGradeName(rs.getString( "GradeName"));

    grade.setGradeDesc(rs.getString( "GradeDesc"));

    //建立年级与学生的映射
    student.setGrade(grade) ;

第二种方式:通过学生表中的gradeId查询Grade 对象,之后建立两者之间的关系.

    //建立年级信息
    GradeDao gradeDao = new GradeDaoImpl();

    Grade grade = gradeDao.findById(rs.getInt("grad eId")) ;
    
    //建立学生与年级之 间的映射关系
    student.setGrade(grade);
    

     

第二种方式的实现,本人理解,如果年级中包含大量字段,这是在学生中建立年级信息时,会出现大量允余代码。这是可以直接调用年级的方法,查询到年级的信息。直接建立学生与年级的映射关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

if else

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值