JavaWeb(七)---编写无脚本的JSP页面

目标

  1. 在JSP中使用El表达式
  2. 在JSP中使用JSTL
  3. 使用javabean、el、 jstl 编写无脚本的jsp页面

el表达式

全称:Expression Language

语法示例:

${ stu.classbean.name }

功能:

1.el表达式主要用来替换jsp中的脚本表达式。可以用各个域中去找到java对象,获取到数据。

(JavaBean , list集合,map集合 ,数组)
  1. 利用el表达式可以在jsp页面进行一些简单的运算,算数运算,逻辑运算,关系运算。

    eg:

    ${user == null}
    

执行的原理:

  1. 首先在执行内容的时候,会调用pageContext.findAttribute(xxxx)。分别从page,request,session ,application 四个域获取内容。
  2. 找到了就返回当前的对象,找不到就返回”” .(返回的不是null 是”“)

使用el获取list集合的内容:

<%
    List<StudentBean> list = new ArrayList<StudentBean>();
    StudentBean  b = new StudenBean("张三",18);
    StudentBean  b2 = new StudenBean("张四",18);
    list.add(b);
    list.add(b2);

    session.setAttribute("list",list);
%>

${list[0].name}

使用el获取map集合的内容:

<%
Map<String,String> mao = new HashMap<String,String>();
mao.put("a","wade");
mao.put("b","james");
mao.put("1","kobe");
request.setAttribute(mao);
%>


${mao.a}
${mao["1"]}
<!--返回0就表示没有找到对应的值-->
<!--有连字符的话-->
${mao.["asd-u"]}


<!--pageScope 表示从当前page域中获取数据-->

el隐式对象:

这里写图片描述

param :请求参数字符串的map类;

<!--param 获取到用户请求过来的内容,返回的是map集合-->

${param.name}

paramValues : 获得的是请求过来的数组

<!--键是一样的,比如爱好参数-->

${paramValues.like[0]}

<!--这个返回的是字符串数组-->

header : 获得请求头信息

headerValues : 获得请求头的值数组

cookie:

// cookie获取到的是一个map集合,map.key 取出来的是一个cookie对象 ,再通过cookie对象.value 获得值
${cookie.JSESSIONID.value}

在el中可以

${user eq null}

eq 比较两个是否相等

使用empty() 判断是不是空

${empty(user)}

el中使用二元表达式:
–就是java中的三目运算符

${1>2? "ok" : "fail"}

逻辑运算符还可以:

${1>0&& 2>1}
${1>0 and 2>1}

一些关键字:

and , or , not true , !true ,

标准标记库 JSTL

jstl是为了弥补html不足。

需要导入2个jar文件:

  1. jstl.jar
  2. standard.jar

赋值到WEB-INF BIN 目录下

使用jstl目的:为了消除页面上的java逻辑代码。

主要研究核心库:

表达式控制标签:  out 、set 、remove、catch

流程控制标签: if 、choose 、when 、otherwise

循环标签:forEach、forTokens、

URL标签:import 、 URL 、redirect 、param 

导入标签库

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

  1. out 标签: 输出数据(后台也是通过out.write())

    <c:out value = "1234"></c:out>
    
    <c:out default = "默认值" values = "${null}"></c:out>
    <!--default 输出默认值 两种不能混合使用-->
    <c:out value = "${null}">默认</c:out>
    
  2. set 标签:把一个对象存放在指定的域范围内

    //var : 设置的属性名字
    //value : 属性值
    //scope : 当前属性放在什么域中
    <c:set var = "username" values = "123" scope = "request"></c:set>
    <c:out value = "${requestScope.username}"></c:out>
    
    
    <%
        StudentBean stu = new StudentBean();
        request.setAttribute("bean",bean);
    
        Map map = new HashMap();
        map.put("a","123");
        request.setAttribute("map",map);
    
    %>
    <!--target : 指定要操作的某一个对象 ,不能属性,只能是javabean或者map-->
    
    <c:set target="${bean}" property ="name" value = "张三"></c:set>
    
    <c:set target="${map}" property ="a" value = "321"></c:set>
    

3.remove 标签 :主要用来从指定的域里面移除内容

-    
    <c:set var = "name1" values = "123" scope = "session"></c:set>

    <c:set var = "name2" values = "123" scope = "session"></c:set>

    <c:remove var = "name1" scope = "session"></c:remove>

4.catch 标签 : 主要是用来捕获jsp里面的异常信息。

    <c:catch var = "errorinfo">
    <c:set target = "${classbean}" property ="name" value = "313"></c:set>
    <c:catch>

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

  1. if 标签 : 实现条件的控制。

    <form>
    
        <input type= "text" name = "name">
    
        <input type = "submit" value = "提交"/>
    
    </form> 
    
    //var 获取的是前面的test的结果
    <c:if text = "${param.name == 'tiger'&& param.passwor == '123'}"
     var = "boo">
        <c:out value = "OK"></c:out>
    </c:if>
    
  2. choose 、when 、otherwise 标签 混合使用

    <%
        request.setAttribute("grade",79);
    %>
    
    <c:choose>
        <c:when test = "${grader>=90}">
            <c:out value = "优秀"></c:out>
        </c:when>
         <c:when test = "${grader>=80 && grade <90}">
            <c:out value = "还可以"></c:out>
        </c:when>
        <c:otherwise>
            <c:out value = "垃圾"></c:out>
        </c:otherwise>
    </c:choose>
    

  1. forEach 标签

    item:获取要遍历的集合
    var :每次循环产生的结果
    begin:开始的位置,从开始
    end: 在哪里结束
    step : 每次循环的步长
    varStatus : 当前循环获取到的对象的状态 ,
    
    <%
        List<UserBean> list = new ArrayList<UserBean>();
        UserBean us1 = new UserBean();
        UserBean us2 = new UserBean();
    
        list.add(us1);
        list.add(us2);
    
        request.setAttribute("list",list);
    %>  
    <table border=1>
    <c:forEach items="${list}" var = "bean" begin ="1" step ="1" varStatus = "res">
            <tr>
            <td> <c:out value = "${bean.id}"></c:out></td>
            <td><c:out value = "${bean.name}"></c:out></td>
            </tr>
            <!--下标-->
            <c:out value = "${res.index}"></c:out>
            <!--循环的次数-->
            <c:out value = "${res.count}"></c:out>
            <!--是不是第一个-->
            <c:out value = "${res.first}"></c:out>
             <!--是不是最后一个-->
            <c:out value = "${res.last}"></c:out>
    
    </c:forEach>
    </table>
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值