jsp点击动态的按钮获取其value_【JavaEE】JSP<中>

本文详细介绍了EL表达式在JSP中的应用,包括输出基本数据类型、对象属性、集合以及进行计算。同时阐述了JSP标签的用途,如流程控制、页面跳转,并区分了静态包含与动态包含的区别。接着,讲解了JSTL标签的使用步骤和核心标签库,如、和等,帮助开发者更高效地处理JSP页面。
摘要由CSDN通过智能技术生成

30f076bf8357f0332b25e30bc3d292a4.gif

EL表达式

作用 

jsp的核心语法: 

jsp表达式 和 jsp脚本。 

以后开发jsp的原则:尽量在jsp页面中少写甚至不写java代码。 

使用EL表达式替换掉jsp表达式 

EL表达式作用:向浏览器输出域对象中的变量值或表达式计算的结果!!! 

语法:

${变量或表达式} 语法 

1)输出基本数据类型变量 

1.1 从四个域获取 ${name} 

1.2 指定域获取 ${pageScope.name} 

域范围: 

pageScoep / requestScope / sessionScope / applicationScope 

2)输出对象的属性值 Student 

3)输出集合对象 List  和 Map 

4)EL表达式计算

"java" import="java.util.*" pageEncoding="utf-8"%>

<html><head> <title>EL语法title>  head><body><%String name = "rose"; 
     //放入域中
     //pageContext.setAttribute("name",name);pageContext.setAttribute("name",name,PageContext.REQUEST_SCOPE); 
      %><%=name %><br/><%--1)从四个域自动搜索--%>
      EL表达式:${name }<%--
          ${name } 等价于
              pageContext.findAttribute("name")%>
       --%>
       <%--2) 从指定的域中获取数据--%>
        EL表达式:${pageScope.name }
        <%--
            ${pageScope.name } 等价于
             pageContext.getAttribute("name",PageContext.PAGE_SCOPE)%>
            
         --%>
  body>
html>

输出:

rose 
EL表达式:rose EL表达式:
"java" import="java.util.*,com.loaderman.demo.Student" pageEncoding="utf-8"%>


PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

   
    EL输出不同类型的数据 
  
  
  
            1)EL输出对象的属性 
     --%>
              //保存数据
         Student student = new Student("eric",20);
         //放入域中
         pageContext.setAttribute("student",student);
         
         //List
         List list = new ArrayList();list.add(new Student("rose",18));list.add(new Student("jack",28));list.add(new Student("lucy",38));//放入域中
         pageContext.setAttribute("list",list);//Map
         Map map = new HashMap();
         map.put("100",new Student("mark",20));
         map.put("101",new Student("maxwell",30));
         map.put("102",new Student("narci",40));//放入域中
         pageContext.setAttribute("map",map);
      %>
      ${student.name} - ${student.age }
             ${student.name} 等价于 (点相对于调用getXX()方法)
          "student")).getName()%>
       --%>
       List对象 --%>
       ${list[0].name } - ${list[0].age }
       ${list[1].name } - ${list[1].age }
       ${list[2].name } - ${list[2].age }list[0]等价于 (中括号相对于调用get(参数)方法)
               ((List)pageContext.findAttribute("list")).get(0)
        --%>
        ${map['100'].name } - ${map['100'].age }
        ${map['101'].name } - ${map['101'].age }
        ${map['102'].name } - ${map['102'].age }

输出:

eric - 20

rose - 18
jack - 28
lucy - 38

mark - 20
maxwell - 30
narci - 40
"java" import="java.util.*" pageEncoding="utf-8"%>

PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

   
    EL表达式计算 
  
  
  
            1)算术表达式
          + - * /
     --%>
     ${10+5 }

     ${10*5 }
     
             2)比较运算
        > < >= <= == !=
     --%>
     ${10>5 }

     ${10<5 }

     ${10!=10 }
     
             3)逻辑运算
         && || !
     --%>
     ${true && false }

     ${true || false }

     ${!false }

     
              4)判空
        null 或 空字符串: empty
     --%>
              //String name = "eric";
         //String name = null;
         String name = "";
         pageContext.setAttribute("name",name);
      %>
      判断null:${name==null }

      判断空字符:${name=="" }

     判空:${name==null || name=="" }
     另一种判空写法:${empty name }
     
         
  

输出:

15
50

true
false
false

false
true
true

判断null:false
判断空字符:true
判空:true 另一种判空写法:true

JSP标签

jsp标签的作用

jsp标签作用:替换jsp脚本。 

1)流程判断(if   for循环) 

2)跳转页面(转发,重定向) 

3)。。。。。

Jsp标签分类 

1)内置标签(动作标签):不需要在jsp页面导入标签 

2)jstl标签:需要在jsp页面中导入标签 

3)自定义标签 :开发者自行定义,需要在jsp页面导入标签

动作标签

转发标签:      

参数标签:   

包含标签:   

原理:包含与被包含的页面先各自翻译成java源文件,然后再运行时合并在一起。(先翻译再合并),动态包含 

静态包含  vs  动态包含的区别? 

1) 语法不同 

静态包含语法: 

动态包含语法: 

2)参数传递不同 

静态包含不能向被包含页面传递参数 

动态包含可以向被包含页面传递参数 

3)原理不同 

静态包含: 先合并再翻译 

动态包含:先翻译再合并

"java" import="java.util.*" pageEncoding="utf-8"%>

PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

   
    动作标签 
  
  
  
    
            //request.getRequestDispatcher("/09.action2.jsp?name=eric").forward(request,response);
     %>
    
        "/action2.jsp">
      --%>
      
      
         include page="/common/header.jsp">include>
        --%>
        include file="common/header.jsp" %>
      主页的内容
     
  
"java" import="java.util.*" pageEncoding="utf-8"%>

<html><head> <title>动作标签title>  head><body><%=request.getParameter("name")%><br/><%=request.getParameter("password")%>body>html>

JSTL标签

使用步骤:

1) 导入jstl支持的jar包(标签背后隐藏的java代码) 注意:使用javaee5.0的项目自动导入jstl支持jar包 

2)使用taglib指令导入标签库  

3)在jsp中使用标签

核心标签库的重点标签:
    保存数据:
            <c:set>c:set>   
    获取数据:
             <c:out value="">c:out>
    单条件判断
            <c:if test="">c:if>
    多条件判断
          <c:choose>c:choose>
          <c:when test="">c:when>
          <c:otherwise>c:otherwise>
    循环数据
          <c:forEach>c:forEach>
          <c:forTokens items="" delims="">c:forTokens>
    重定向
          <c:redirect>c:redirect>
"java" import="java.util.*" pageEncoding="utf-8"%>
"com.loaderman.demo.Student" %>

"http://java.sun.com/jsp/jstl/core" prefix="c" %>
"-//W3C//DTD HTML 4.01 Transitional//EN">

   
    核心标签库 
  
  
  
    
    set标签 :保存数据(保存到域中)默认保存到page域 --%>
    set var="name" value="rose" scope="request">set>
    
            String msg = null;
        pageContext.setAttribute("msg",msg);
     %>
    
    ${msg }
    

    out标签:获取数据(从域中) 
    default:当value值为null时,使用默认值
    escapeXml: 是否对value值进行转义,false,不转义,true,转义(默认)
    --%>
    out value="${msg}" default="

标题3

" escapeXml="true">out>
    
    
    
    if标签 :单条件判断--%>
    if test="${!empty msg}">
        条件成立if>
    
    
    
    set var="score" value="56">set>
    
    "${score>=90 && score<=100}">
            优秀"${score>=80 && score<90}">
            良好"${score>=70 && score<80}">
            一般"${score>=60 && score<70}">
            及格
            不及格
    
    
            //List
         List list = new ArrayList();
         list.add(new Student("rose",18));
         list.add(new Student("jack",28));
         list.add(new Student("lucy",38));//放入域中
         pageContext.setAttribute("list",list);//Map
         Map map = new HashMap();
         map.put("100",new Student("mark",20));
         map.put("101",new Student("maxwell",30));
         map.put("102",new Student("narci",40));//放入域中
         pageContext.setAttribute("map",map);
     %>
           begin="" : 从哪个元素开始遍历,从0开始.默认从0开始
      end="": 到哪个元素结束。默认到最后一个元素
      step="" :步长 (每次加几) ,默认1
      items="":需要遍历的数据(集合) var="":每个元素的名称 
      varStatus="":当前正在遍历元素的状态对象。(count属性:当前位置,从1开始)
     --%>"${list}" var="student" varStatus="varSta">
        序号:${varSta.count} - 姓名:${student.name } - 年龄:${student.age}"${map}" var="entry">
        ${entry.key } - 姓名:${entry.value.name } - 年龄:${entry.value.age }
            String str = "java-php-net-平面";
        pageContext.setAttribute("str",str);
     %>"${str}" delims="-" var="s">
        ${s }
    "http://www.baidu.com">--%>

输出:

标题3
不及格
序号:1 - 姓名:rose - 年龄:18
序号:2 - 姓名:jack - 年龄:28
序号:3 - 姓名:lucy - 年龄:38
100 - 姓名:mark - 年龄:20
101 - 姓名:maxwell - 年龄:30
102 - 姓名:narci - 年龄:40
java
php
net
平面

JSTL核心标签库

标签

 标签用于输出一段文本到浏览器中。

属性名 是否支持EL 属性类型 属 性 描 述
valuetrueObject指定要输出的内容
escapeXmltrueBoolean指定是否将>、
defaulttrueObject指定如果value属性的值为null/””时所输出的默认值

标签

标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性。

属性名 是否支持EL 属性类型 属 性 描 述
valuetrueObject用于指定属性值
varfalseString用于指定要设置的Web域属性的名称
scopefalseString用于指定属性所在的Web域
targettrueObject用于指定要设置属性的对象,这个对象必须是JavaBean对象或java.util.Map对象
propertytruestring用于指定当前要为对象设置的属性名称

标签

标签可以构造简单的“if-then”结构的条件表达式

属性是否支持EL属性类型属 性 描 述
testtrueboolean决定是否处理标签体中的内容的条件表达式
varfalseString用于指定将test属性的执行结果保存到某个Web域中的某个属性的名称
scopefalseString指定将test属性的执行结果保存到哪个Web域中

标签 

标签用于指定多个条件选择的组合边界,它必须与和标签一起使用。 

使用,和三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=gb2312" %>
<c:set value="${param.count}" var="count“ />count == 0}">
        对不起,没有符合您要求的记录。
    c:when>
    <c:otherwise>
        符合您要求的记录共有${count}条.
    c:otherwise>
c:choose>

标签

标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。

属性名是否支持EL属性类型属 性 描 述
varfalseString指定将当前迭代到的元素保存到page这个Web域中的属性名称
itemstrue任何支持的类型将要迭代的集合对象
varStatusfalseString指定将代表当前迭代状态信息的对象保存到page这个Web域中的属性名称
begintrueint如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代
endtrueint参看begin属性的描述
steptrueint指定迭代的步长,即迭代因子的迭代增量

标签

对带有相同符合格式内容进行分割输出,例如varstr="1,2,3,4,5,6";

属性名 是否支持EL 属性类型 属 性 描 述
Itemstrue

任何支持的类型

将要迭代的集合对象
delimsfalseString字符串的分割符,可以同时有个分割符(依次写在引号内即可。)
varStatusfalseString指定将代表当前迭代状态信息的对象保存到page这个Web域中的属性名称
begintrueint如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代,直到end值时结束迭代
endtrueint参看begin属性的描述
steptrueint指定迭代的步长,即迭代因子的迭代增量
varFalseString指定将当前迭代到的元素保存到page这个Web域中的属性名称

标签

标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面

属性名是否支持EL属性类型属 性 描 述
valuetrueString指定要构造的URL
varfalseString指定将构造出的URL结果保存到Web域中的属性名称
scopefalseString指定将构造出的URL结果保存到哪个Web域中

标签 

标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:

nested actions

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=gb2312" %>
<c:catch var="myex“ >
            10/0;
    %>
异常:myex}" /><br />
异常 myex.getMessage:<c:out value="${myex.message}" /><br />
异常 myex.getCause:<c:out value="${myex.cause}" /><br />
异常 myex.getStackTrace:<c:out value="${myex.stackTrace}" />

标签

标签用于将当前的访问请求转发或重定向到其他资源,它可以根据url属性所指定的地址,执行类似这个JSP标准标签的功能,将访问请求转发到其他资源;或执行response.sendRedirect()方法的功能,将访问请求重定向到其他资源。

属性名是否支持EL属性类型 属 性 描 述
urltrueString指定要转发或重定向到的目标资源的URL地址

在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。

http://localhost:808/servlet/MyServlet?name=“中国”
示例:<c:param name=“name” value=“中国" />

  码上加油站

  一起来加油

长按扫码关注

b047997e0288c33b51eebceb7c8ae797.png  记得点个 在看 哦!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值