zoukankan      html  css  js  c++  java
  • EL表达式和jsp标签

    2 EL表达式

    2.1 简介

    EL表达式替代jsp表达式。因为开发jsp页面的时候遵守原则:在jsp页面中尽量少些甚至不写java代码。

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

    基本语法: ${变量或表达式}    代替<%=变量或表达式%>

    2.2 EL获取不同类型的数据

    普通字符串

    普通的对象

    数组或List集合

    Map集合

    2.3 EL执行表达式

    算术表达式

    比较表达式

    逻辑表达式

    判空表达式

    2.4 EL11个内置对象

    pageContext

    pageScope

    requestScope

    sessionScope

    applicationScope

    param   

    paramValues

    header

    headerValues

    cookie

    initParam

    3 Jsp标签

    3.1 简介

    EL表达式可以替换jsp表达式,但是EL表达式局限: 不能条件判断,不能赋值,不能迭代。jsp标签替代jsp脚本,完成条件判断,赋值,迭代等等功能。

    3.2 Jsp标签分类

    1jsp内置标签(动作标签): 使用的时候不需要导入标签库

    2jstl标签(标准标签): 使用的时候都需要导入标签库

    3)自定义标签:使用的时候都需要导入标签库

    3.3 动作标签

    <jsp:forward/>   转发标签

    <jsp:param/>    参数标签

    <jsp:include/>    包含标签

    注意:

    包含标签的原理是包含与被包含的页面单独翻译成不同的java文件,然后再运行时合并在一起。 (先翻译再合并,动态包含)

    静态包含 vs  动态包含

    静态包含: 先合并再翻译。不能携带参数

    动态包含: 先翻译再合并。携带参数

    3.4 JSTL标签

      jstl标签,java standard tag libarary java标准标签库。

    特点: 在使用jstl标签时需要导入标签库

    jstl标签库分类:

    核心标签库(重要)(c

    国际化标签库(fmt)

    EL函数库(fn)

    SQL标签库(sql)

    XML标签库(x)

     码农翻身

    3.5 使用JSTL标签

    1)导入jstl的支持jar包,在java5.0之后jstl已经是属于5.0的支持包里面。

    2)使用jsp页面,需要在jsp的顶部使用taglib指令导入需要的标签库

    3)使用标签:

    <c:set/>

    3.6 核心标签库的标签

    保存数据:

    <c:set></c:set>

    var: 数据的名称  value: 保存的数据值  scope: 保存到哪个域。

    获取数据:

         <c:out value=""></c:out>

    value: 代表获取域中的某个名称内容。如果数据在域中,必须使用EL语法去获取

           default: 默认值。当前需要获取的内容为null,那么使用默认值代替

        escapeXml: 默认情况下为trueout标签会把输入的内容进行转义。如果不需要转义,则为false既可!

    单条件判断

         <c:if test=""></c:if>

    多条件判断

         <c:choose></c:choose>

         <c:when test=""></c:when>

         <c:otherwise></c:otherwise>

    用于迭代(循环)

         <c:forEach></c:forEach>

    begin: 从哪个元素开始遍历,从0开始

           end: 到哪个元素位置

           step: 增加步长。默认step1

           items: 需要遍历的数据。(数组|List集合|Map集合) 如果是获取域数据,那么使用EL表达式获取

           var: 每个元素名称

         varStatus: 当前状态对象。该对象封装当前元素状态信息。  例如 count属性: 表示当前遍历的是哪个元素,从1开始

           注意: forEach标签遍历Map集合时,把每个Map的对象使用Entry封装,

           Entry封装键对象和值对象,通过getKey()获取键对象,通过getValue()获取值对象

         <c:forTokens items="" delims=""></c:forTokens>

    items: 需要遍历的字符串

            delims: 指定分割符号

            var: 每个内容的名称

    重定向

        <c:redirect></c:redirect>

    3.7 自定义标签

    当现有的标签无法满足需求的时候,就需要开发者自行开发标签。

    需求: 获取客户端的IP地址

    实现SimpleTag接口/继承SimpleTagSupport类,重写doTag()方法。

    编写标签库描述符(tld)文件,在tld文件中对自定义标签进行描述,并放置在WEB-INF/目录下。

    注意

    <body-content>:指定标签体的类型。可能取值有 4 种:

    JSP:表示支持jsp标准表达式取值,即<%= %>。只能在传统标签用,简单标签不支持!

    empty:没有标签体

    scriptless:标签体可以包含 el 表达式和 JSP 动作元素,但不能包含 JSP 的脚本元素

    tagdependent:表示标签体交由标签本身去解析处理。若指定 tagdependent,在标签体中的所有代码都会原封不动的交给标签处理器,而不是将执行结果传递给标签处理器

    完成以上操作,即可在JSP页面中导入和使用自定义标签。

    3.8 自定义标签的执行过程

    访问:http://localhost:8080/jsp/tag.jsp

    前提: tomcat启动的时候,会读取day12项目下的WEB-INF的文件。包括web.xmltld文件。

    1)翻译成java文件-》 编译成class文件-> 构造方法- 》 调用_jspService()方法

    2)在内存tld文件中,查询是否存在一个uri名称为http://www.td.comtld文件

    3)得到对应的tld文件内容。

    4)读到<td:showIp>内容时,截取showIp名称(就是标签),tld文件中查询是否存在nameshowIptag标签。

    5)取出<tag>标签的内容<tag-class>字符串: com.xxt.tag.ShowIpTag

    可以重写的方法

    setJspContext方法

    用于把JSP页面的pageContext对象传递给标签处理器对象

    setParent方法

    用于把父标签处理器对象传递给当前标签处理器对象

    getParent方法

    用于获得当前标签的父标签处理器对象

    setJspBody方法

    用于把代表标签体的JspFragment对象(即标签体内容)传递给标签处理器对象

    doTag方法

    用于完成所有的标签逻辑,包括输出、迭代、修改标签体内容等。在doTag方法中可以抛出javax.servlet.jsp.SkipPageException异常,用于通知WEB容器不再执行JSP页面中位于结束标记后面的内容。

    4 JavaBean规范

    4.1 简介

      JavaBean就是一个普通的java类,必须遵守以下规则的java类才能称为javabean

    1)必须有一个无参的构造方法

    2)把类的属性私有化。   (不能直接访问属性)  private

    3)必须提供公开的gettersetter方法 。 (通过gettersetter操作属性)

    场景:

    1)项目的实体对象符合javabean的规范

    2EL表达式,访问对象的属性。${student.name}  原理:调用 getName();

    3)自定义标签处理,给标签属性赋值。  setNum(int num)

    4)  JSP页面中可以使用javabean

    JavaBean作用: 用于封装业务的数据

    操作对象的属性:

    通过gettersetter方法

    2)编程实战:

    MVC开发模式:

    M(model) javabean: 封装业务数据

    V(view) jsp: 显示数据(jstl+el表达式)

    C(controller) servlet: 接收参数数据,调用业务逻辑,跳转视图

    三层开发结构

    dao(数据持久化层) 负责数据访问,实体对象的增删改

    service(事务层) 负责处理系统的业务逻辑

    web层: servlet+jsp完成用户交互

  • 相关阅读:
    SonarQube
    Gerrit
    Jenkins
    Jenkins
    GitLab
    GitLab
    GitLab
    centos7配置国内yum源
    CentOS7 ping: unknown host www.baidu.com
    VirtualBox下安装CentOS7系统
  • 原文地址:https://www.cnblogs.com/lldsgj/p/10801269.html
Copyright © 2011-2022 走看看