JSTL标签库,自定义标签

JSTL

  1. jstl的概述

    • apache的东西,依赖EL
    • 使用jstl需要导入jstl1.2.jar
    • 四大标签库:

    core:核心库,重点

    fmt:格式化:日期、数字

    sql:过时

    xml:过时

  2. 导入标签库
    • jar包
    • 在jsp页面中:<%@taglib prefix=”前缀” uri=”路径”%>

core –> c标签!

out和set
remove
url
if
choose
foreach
  1. out和set

    • :输出

    value:可以是字符串常量,也可以是EL表达式

    default:当要输出的内容为null时,会输出default指定的值

    escapeXml:默认值为true,表示转义!

    例://escapeXml是默认,可不写出

  2. :设置(创建域的属性)

    var:变量名

    value:变量值,可以是EL表达式

    scope:域,默认为page,可选值:page、request、session、application

    例:

  3. remove
    • :删除域变量

    var:变量名

    scope:如果不给出scope,表示删除所有域中的该名称的变量;如果指定了域,那么只删除该域的变量。

  4. url
    • value:指定一个路径!它会在路径前面自动添加项目名。

      <> ,它会输出/day13_1/index.jsp

    • 子标签:,用来给url后面添加参数,例如:

      结果为:/day13_1/index.jsp?username=%ED%2C%3F%ED%2C%3F

    • var:指定变量名,一旦添加了这个属性,那么url标签就不会再输出到页面,而是把生成url保存到域中。
    • scope:它与var一起使用,用来保存url。
  5. if:对应java中的if语句
    • 标签体内容,当test值为true时,执行标签体内容!
  6. choose:它对应java中的if/else if/ … /else
    • 例如:

      等同与

      if(…) {

      } else if( ….) {

      } else if( ….) {

      } else if( ….) {

      } …

      else { …}

  7. forEach

    它用来循环遍历数组、集合!

    它还可以用计数方式来循环!

    计数方式:

    for(int i = 1; i <= 10; i++) {

    }

    //step可省略

    ${i}

    属性:

    • var:循环变量
    • begin:设置循环变量从几开始。
    • end:设置循环变量到几结束。
    • step:设置步长!等同与java中的i++,或i+=2。step默认为1


用来输出数组、集合!

${str }

等同于

for(String str : strs) {

}

属性:

* items:指定要循环谁,它可以是一个数组或一个集合

* var:把数组或集合中的每个元素赋值给var指定的变量。

注意:items=”${list }”// “}”后绝不能有空格



循环状态

可以使用varStatus来创建循环状态变量!

循环状态变量有如下属性:

* count:循环元素的个数

* index:当前循环元素的下标

* first:是否为第一个元素

* last:是否为最后一个元素

* current:当前元素

vs.index{vs.count } vs.first{vs.last } ${vs.current }

====================================

fmt库

它是格式化库

value:指定一个Date类型的变量

pattern:用来指定输出的模板!例如:yyyy-MM-dd HH:mm:ss



保留小数点后2位,它会四舍五入!如果不足2位,以0补位!

保留小数点后2位,它会四舍五入!如果不足2位,不补位!

自定义标签

  1. 步骤

    • 标签处理类(标签也是一个对象,那么就需要先有类!)
    • tld文件,它是一个xml
    • 页面中使用<%@taglib%>来指定tld文件的位置
  2. 标签处理类

    SimpleTag接口:

    • void doTag():每次执行标签时都会调用这个方法;
    • JspTag getParent():返回父标签( 非生命周期方法 )//有时自己调用
    • void setParent(JspTag):设置父标签
    • void setJspBody(JspFragment):设置标签体
    • void setJspContext(JspContext):设置jsp上下文对象,它儿子是PageContext

        其中doTag()会在其他三个方法setXxx()方法之后被tomcat调用。

  3. 配置tld文件

tld文件一般都放到WEB-INF之下,这样保证客户端访问不到!

myTag1 指定当前标签的名称

cn.itcast.tag.MyTag1 指定当前标签的标签处理类!

empty 指定标签体的类型,我们这里使用的是空标签!

  1. 页面中指定tld文件位置

<%@ taglib prefix=”it” uri=”/WEB-INF/tlds/itcast-tag.tld” %>

导标签库,就是为页面指定tld文件的位置!

自定义标签方式二:

SimpleTagSupport类实现了SimpleTag接口,它已经把所有的tomcat传递的数据都保存起来了,而且还提供了get方法,供子类调用。我们只需要重写doTag()方法即可



进阶

标签体内容

* empty:无标签体!

* JSP:jsp2.0已经不在支持这个类型了!表示标签体内容可以是:java脚本,可以是标签,可以是el表达式

* scriptless:只能是EL表达式,也可以是其他的标签或字符串

* tagdependent:标签体内容不会被执行,而是直接赋值标签处理类!

不在执行标签下面内容的标签!

在标签处理类中的doTag()中使用SkipPageException来结束!

  Tomcat会调用标签处理类的doTag()方法,然后Tomcat会得到SkipPageException,它会跳过本页面其他内容!



标签属性

步骤:

1. 给你的标签处理类添加属性!

  为标签处理类添加属性,属性至少要且一个set方法!这个set方法会在doTag()方法之前被tomcat执行!所在doTag()中就可以使用属性了。

  1. 在tld文件中对属性进行配置

    test 指定属性名

    true 指定属性是否为必需的

    true 指定属性是否可以使用EL

MVC

它不是java独有,所有的B/S结构的项目都在使用它!

M – model 模型(自己写代码)

V – View 视图(jsp)

C – Cotroller 控制器(Servlet)

JavaWeb三层框架

Web层 –> 与Web相关的内容(Servlet,JSP,Servlet相关API:request、response、session、ServletContext)

业务层 –> 业务对象(Service),此层属于JavaBean的一部分

数据层 –> 操作数据库(DAO Data Access Object)(所有对数据库的操作,不能跳出到DAO之外),此层数据JavaBean的另一部分

时间: 2024-10-04 01:59:48

JSTL标签库,自定义标签的相关文章

JSTL标签库,自定义标签

JSTL 简介 JavaServer Pages Standard Tag Library由JCP(Java Community Process)指定标准 提供给 Java Web 开发人员一个标准通用的标签函数库 和 EL 配合来取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性.维护性和方便性 JSTL1.1安装 下载 JSTL 主要由Apache组织的Jakarta Project 实现 http://tomcat.apache.org/taglibs/

18、EL表达式、JSP标签、JSTL标签、自定义标签

EL表达式 jsp的核心语法: jsp表达式 <%=%>和 jsp脚本<% %>. 以后开发jsp的原则: 尽量在jsp页面中少写甚至不写java代码. 使用EL表达式替换掉jsp表达式 EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!! 语法: ${变量或表达式} EL语法 1 输出基本数据类型变量 从四个域获取 ${name} 指定域获取 ${pageScope.name} 域范围: pageScoep / requestScope / sessionSco

JSTL标签库:Remove标签Catch标签

看注释 <c:remove> 标签删除变量,无论是从指定的范围内或范围内的变量(如果没有指定范围).这个动作通常是不特别有帮助,但它可以帮助确保一个JSP范围内的资源,它负责清理. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!-- 核心标签: 核心组的标签是最常用的JSTL标签.以下是在您的JSP的语法包括JSTL核心库

JSTL标签库:set标签

接着上一篇文章. 看注释: javabean类 package test.jstl.dom; public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void s

JSTL标签库:out标签

准备工作: 安装JSTL库: 如果您使用的是Apache Tomcat容器,那么按照下面两个简单的步骤: 下载的二进制发行版,从Apache标准标记库和解压的压缩文件. 下载地址:http://tomcat.apache.org/taglibs/index.html 使用标准的标签库从Jakarta Taglibs分布,复制发行版'lib'目录到应用程序的JAR文件 webapps\ROOT\WEB-INF\lib 目录中. 看代码看注释 <%@ page language="java&q

Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示

本例以将 字符串格式的时间转成指定的时间格式显示. 第一步.定义一个标签处理程序类,需要集成javax.servlet.jsp.tagext.TagSupport,代码如下: import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.T

Django(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

模板层:变量.过滤器.标签.自定义标签和过滤器 将页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式 # django模板修改的视图函数 def current_time(req): from django.template import Template,Context now=datetime.datetime.now() t=Template('<html><body>现在时刻

web day13 JSTL标签库(c标签,自定义标签),MVC设计模式,JavaWeb经典三层框架

JSTL 1. jstl的概述 *apache的东西,依赖EL * 使用jstl需要导入jstl1.2.jar * 四大库: > core:核心库,重点 > fmt:格式化:日期.数字 > sql:过时 > xml:过时 2. 导入标签库 *jar包 * 在jsp页面中:<%@taglib prefix="前缀" uri="路径"%> ---------------------- core --> c标签! 1. out和s

JSTL函数标签库 fn标签

在使用jstl的函数标签库之前需要在页面中引入: <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 1.fn:contains(string, substring) 如果参数string中包含参数substring,返回true. 2.fn:containsIgnoreCase(string, substring) 如果参数string中包含参数substring(

一、JSP标签介绍,自定义标签

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 16.0000pt } h1 { margin-top: 17.0000pt; margin-bottom: 16.5000pt; margin-left: 21.6000pt; text-indent: -21.6000pt; page-break-after: avoid; page-