Job-day13 jstl、el、自定义EL函数、自定义标签、mvc思想及开发流程

1、JSTL标签库概述

  • JSP标准标签库。
    * 作用:和EL表达式一起 取代<% %>
    * 版本:1.0 1.1和1.2(区别不大)
    * 【1.0EL表达式没有纳入规范】
    * 1.1和1.2EL表达式纳入规范

      * 下载jar包,导入到工程中
          jstl.jar
          standard.jar
          
      * 标签库
          c.tld       核心的标签库
          fn.tld      EL表达式标签库
    
  • JSTL的快速入门
    * 导入相应jar包。
    * 新建JSP的文件,引入标签库
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    * 直接使用标签库

2、 JSTL的标签---输出的内容都是已经存在于某个域中的。

  • 输出内容
    value :输出的内容(常量或者变量)
    default :默认值
    escapeXml:默认是true,进行转义,设置成false,不转义。

          代码:
              
              
              
              
              --此时就可正常显示为一个超链接,而非字符串。
    

  • * 属性
    var :定义属性
    value :存入的值
    scope :域范围

              target  :修改JavaBean对象
              property:修改的属性
              
          * 向4个web域对象存入值
              
              
          * 修改JavaBean对象属性的值  
              
    

  • * 属性
    var :删除的属性
    scope :在域的范围

          * 代码
              
              ${ name }
    
              
              ${name }
    

  • * 属性:var 把异常的信息保存变量中
    * 代码

    <%
    int a = 10/0;
    %>

    ${ e.message }

  • 没有标签
    * 属性
    * test 判断的条件
    * var 计算的结果保存到变量中
    * scope 域的范围

          * 代码
              
              
                  i >= 10
              
              
                  i < 10
              
              ${ x }
    
  • 标签,必须和以下标签同时用。如果当。。。时,否则当。。时。

          代码:
              
              
                  
                      i >= 10
                  
                  
                      i < 10
                  
                  
                      其他
                  
              
    
  • (*****)
    * 循环遍历数据(数组,集合,Map集合)
    * 属性
    var :遍历数据的类型
    items :要遍历的内容

              begin   :从哪开始
              end     :到哪结束
              step    :步长
              
              varStatus:记录循环遍历的信息
                  * index
                  * count(常用)
                  * first
                  * last
                  
          * 代码
              <%
                  String [] arrs = {"美美","小凤","芙蓉","小苍"};
                  request.setAttribute("arrs", arrs);
              %>
              
              
                  ${ s }
              
    
              

    遍历集合

    <% List list = new ArrayList(); list.add("美美"); list.add("小凤"); list.add("芙蓉"); list.add("小泽"); request.setAttribute("list", list); %> ${ s }

    遍历Map集合

    <% Map map = new HashMap(); map.put("aa", "美美"); map.put("bb", "小凤"); map.put("cc", "芙蓉"); request.setAttribute("map", map); %> --entry可以随意写。 ${ entry.key } -- ${ entry.value }

    遍历对象的集合

    <% List uList = new ArrayList(); uList.add(new User("美美","123")); uList.add(new User("小风","234")); uList.add(new User("芙蓉","345")); request.setAttribute("uList", uList); %> ${ user.username } -- ${ user.password }

    迭代数据

    迭代从1到10

    ${ i }

    计算从1加到100的和

    ${ sum }

    遍历10到100的偶数,每到第3个数,显示红色

    ${ i } ${ i } ${ i }
  • 传递参数--与import、redirect等结合使用,
    * 属性
    name :参数名称
    value :参数的值

  • 包含页面
    * url :引入页面的地址
    * context :虚拟路径
    * var :引入页面保存到属性中--指的是页面中的内容
    * scope :域的范围

          * 代码
              
                  
                  可在包含的choose页面中接收该参数
              
              ${ i }
    

  • 标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。
    URL重写就是将会话标识号以参数形式附加在URL地址后面,如cookie被禁用时的追踪技术:
    http://localhost/day12/demo?jsessionid=xxxxxxxxxxxxxxxxxx;

          * 属性
              * var       :声明属性
              * value     :地址
              * scope     :域范围-可选
              * context   :虚拟路径-可选
              
          * 代码
              
                  
              
    
              choose
    
  • 重定向
    * 属性
    * url :重定向的地址
    * context :虚拟路径
    * 代码


  • 分隔字符串(了解)

    分隔字符串




    ${ x }

3、* EL函数(操作字符串的)

  • 自定义EL函数(入门)
    * 编写一个类,方法必须是【静态】方法。
    * 在【WEB-INF目录】下创建tld的文件,配置。
    * 选择2.0

      * 完成配置
          
           
              
              【sayHi】
              
              cn.itcast.el.ElDemo1
              
              java.lang.String sayHello(java.lang.String) 即 返回值的类型 【方法名】(参数类型)
           
    
  • 自定义标签
    * 实现SimpleTag接口
    * 编写一个类,继承SimpleTagSupport类。
    * 重写5个方法
    * void setJspContext(JspContext pc)
    * void setParent(JspTag parent)
    * void setJspBody(JspFragment jspBody)
    * void doTag()

          * JspTag getParent() 
    
Job-day13 jstl、el、自定义EL函数、自定义标签、mvc思想及开发流程_第1张图片
Job-day13 jstl、el、自定义EL函数、自定义标签、mvc思想及开发流程_第2张图片
  • 快速入门的步骤(自定义没有标签体的标签)
    * 编写一个类,继承SimpleTagSupport。
    * 选择重写的方法,doTag()必须有的。
    * 需要配置



    print

    cn.itcast.tag.TagDemo1

    empty

    * 在JSP页面上,引入标签库
    <%@ taglib uri="http://www.itcast.cn/1110/myc" prefix="myc" %>
    * 使用标签了。

  • 带有标签主体的标签
    * 编写类,继承SimpleTagSupport。
    * 重写doTag()
    * 获取标签主体对象
    JspFragment jf = getJspBody();
    jf.invoke(null);
    * 配置



    out

    cn.itcast.tag.TagDemo2

    scriptless

              元素的可选值有:
                  empty:不能有标签体内容。
                  JSP:标签体内容可以是任何东西:EL、JSTL、<%=%>、<%%>,以及html;但不建议使用Java代码段,SimpleTag已经不再支持使用JSP;
                  scriptless:标签体内容不能是Java代码段,但可以是EL、JSTL等;
                  tagdependent:标签体内容不做运算,由标签处理类自行处理,无论标签体内容是EL、JSP、JSTL,都不会做运算。
    
  • 带有属性的标签
    * * 编写类,继承SimpleTagSupport。
    * 重写doTag()
    * 编写一个属性,属性必须和标签中的属性是相同
    * 提供set方法
    * 获取标签主体对象
    JspFragment jf = getJspBody();
    jf.invoke(null);
    * 配置



    if

    cn.itcast.tag.TagDemo3

    scriptless



    test

    true

    true

    boolean

  • JSP开发的模式(MVC),一种分层思想

Job-day13 jstl、el、自定义EL函数、自定义标签、mvc思想及开发流程_第3张图片
  • 完成注册的需求

      * 注册表单(案例)
      * 数据库(没有)
          * 使用xml来代替。
          
      * 架构
          Servlet + JSP + JavaBean
          
      * 技术
          * 解析XML使用DOM4J技术
          * Servlet技术
          * BeanUtils技术
          * JSTL+EL表达式
      
      * 创建新的项目
      * 导入jar包
      * 创建包结构
      
      
      * 开发的步骤
          * 编写注册的页面,
              用户名,密码,确认密码,别名,邮箱,验证码   
              
          * 先完成数据的校验  onsubmit()
              * 都不能为空,密码和确认密码一致
              * 邮箱格式正确(正则表达式)
              
          * 发送请求,请求Servlet,接收数据,封装,处理数据
              
          * 显示到JSP上。
    
Job-day13 jstl、el、自定义EL函数、自定义标签、mvc思想及开发流程_第4张图片
  • 课程回顾:
    • 完成注册和登陆的功能。

    • 准备的工作

      • 技术、开源jar包
    • 开发的功能使用MVC模式

    • C:控制层(接收请求和从客户端发送过来的参数)

      • 接收参数(request对象)
      • 为了操作方便(封装数据,内省,BeanUtils开源的工具)
      • 自己new User(); user.setXXX数据
      • 完成业务逻辑的代码(不推荐写在Servlet) new UserService();
      • 接收结果,通过结果把显示的数据发送给JSP。(把结果存入域对象)
    • M:模型层(JavaBean封装数据,其他JavaBean处理业务)

      • 处理业务逻辑根据注册的功能。(用户名不能重名,邮箱不能重名)
      • 需要把结果返回去。
    • V:视图层(完成数据的显示)

      • 到JSP的页面,通过EL表达式取域的值。

你可能感兴趣的:(Job-day13 jstl、el、自定义EL函数、自定义标签、mvc思想及开发流程)