JSP标签(01)

简介: JSP标签(01)

1.jsp标签是什么?

JSP标签:指的是JavaServer Pages标签,是JavaWeb应用程序中使用的标签语言。JSP标签允许开发人员将Java代码嵌入到HTML中,以便在Web页面上动态生成内容。

2.jsp标签的特点:

2.1标签的格式:

<开始标签 属性="属性值">标签体</结束标签>

示例:

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

2.2标签的分类:

   空标签: br   hr    

   UI标签 :    input,table  
   控制标签:  if  foreach
   数据标签:  out

3.自定义标签的开发 :

配置属性:

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
  <description>JSTL 1.1 core library</description>
  <display-name>JSTL core</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>k</short-name>
  <uri>/Java2EE_jsp/WebContent/WEB-INF/kun.tld</uri>
  <validator>
    <description>
        Provides core validation features for JSTL tags.
    </description>
    <validator-class>
        org.apache.taglibs.standard.tlv.JstlCoreTLV
    </validator-class>
  </validator>
  <tag>
  <!-- 标签库的名字 -->
    <name>demo1</name>
    <!-- 该标签对应的助手类 -->
    <tag-class>com.xuayhui.tag.DemoTag</tag-class>
  <!-- 代表是一个JSP标签 -->
    <body-content>JSP</body-content>
    <attribute>
      <!-- 该自定义JSP标签的属性名称 -->
        <name>var</name>
      <!-- 该属性是否必填 -->
        <required>false</required>
       <!-- 该属性值是否支持表达式 -->
        <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>if</name>
    <tag-class>com.xuayhui.tag.Iftag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <name>test</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>set</name>
    <tag-class>com.xuayhui.tag.SetTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <name>var</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
        <name>value</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>out</name>
    <tag-class>com.xuayhui.tag.OutTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <name>value</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
</taglib>
3.2使用步骤:
3.2.1编写助手类
/**
 * 助手类  必须继承BodyTagSupport
 * @author 86155
 *
 */
public class DemoTag extends BodyTagSupport{
  @Override
  public int doStartTag() throws JspException {
    System.out.println("===================doStartTag=================");
    return EVAL_BODY_INCLUDE;
  }
  @Override
  public int doAfterBody() throws JspException {
    System.out.println("===================doAfterBody=================");
      return super.doAfterBody();
    //  return EVAL_BODY_AGAIN;
    //return SKIP_PAGE;
  }
  @Override
  public int doEndTag() throws JspException {
    System.out.println("===================doEndTag=================");
    return super.doEndTag();
  //  return SKIP_PAGE;
  }
3.2.2编写.tid文件
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
  <description>JSTL 1.1 core library</description>
  <display-name>JSTL core</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>k</short-name>
  <uri>/Java2EE_jsp/WebContent/WEB-INF/kun.tld</uri>
  <validator>
    <description>
        Provides core validation features for JSTL tags.
    </description>
    <validator-class>
        org.apache.taglibs.standard.tlv.JstlCoreTLV
    </validator-class>
  </validator>
  <tag>
  <!-- 标签库的名字 -->
    <name>demo1</name>
    <!-- 该标签对应的助手类 -->
    <tag-class>com.xuayhui.tag.DemoTag</tag-class>
  <!-- 代表是一个JSP标签 -->
    <body-content>JSP</body-content>
    <attribute>
      <!-- 该自定义JSP标签的属性名称 -->
        <name>var</name>
      <!-- 该属性是否必填 -->
        <required>false</required>
       <!-- 该属性值是否支持表达式 -->
        <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>if</name>
    <tag-class>com.xuayhui.tag.Iftag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <name>test</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>set</name>
    <tag-class>com.xuayhui.tag.SetTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <name>var</name>
        <required>true</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
        <name>value</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>out</name>
    <tag-class>com.xuayhui.tag.OutTag</tag-class>
    <body-content>JSP</body-content>
    <attribute>
        <name>value</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
</taglib>

3.2.3导入

4.标签的生命周期:

@Override
  public int doStartTag() throws JspException {
    System.out.println("===================doStartTag=================");
    return EVAL_BODY_INCLUDE;
  }
  @Override
  public int doAfterBody() throws JspException {
    System.out.println("===================doAfterBody=================");
      return super.doAfterBody();
    //  return EVAL_BODY_AGAIN;
    //return SKIP_PAGE;
  }
  @Override
  public int doEndTag() throws JspException {
    System.out.println("===================doEndTag=================");
    return super.doEndTag();
  //  return SKIP_PAGE;
  }

5.if标签:

案列:

/**
 * if标签:
 * 如果满足条件,就打印标签体,dostarttag的返回值eval_body_include
 * 如果不满足条件,就不输出标签体,dostarttag的返回值skip_body
 * 需要获取到是否满足条件的结果值,那么标签就有一个属性,属性值是boolean
 * @author 86155
 *
 */
public class Iftag extends BodyTagSupport{
  private boolean test;
  public boolean isTest() {
    return test;
  }
  public void setTest(boolean test) {
    this.test = test;
  }
  @Override
  public int doStartTag() throws JspException {
//    如果满足条件,就打印标签体,dostarttag的返回值eval_body_include
//    如果不满足条件,就不输出标签体,dostarttag的返回值skip_body
    return test ? EVAL_BODY_INCLUDE : SKIP_BODY;
  }

6.set/out标签:

set:

 

public class SetTag extends BodyTagSupport{
  private String var;
  private Object value;
  public String getVar() {
    return var;
  }
  public void setVar(String var) {
    this.var = var;
  }
  public Object getValue() {
    return value;
  }
  public void setValue(Object value) {
    this.value = value;
  }
  @Override
  public int doStartTag() throws JspException {
    pageContext.setAttribute(var, value);
    return super.doStartTag();
  }
}

out:

 

public class OutTag extends BodyTagSupport{
  private Object value;
  public Object getValue() {
    return value;
  }
  public void setValue(Object value) {
    this.value = value;
  }
  @Override
  public int doStartTag() throws JspException {
    JspWriter out = pageContext.getOut();
    try {
      out.print(value);
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return super.doStartTag();
  }
}

实列效果:

 

 


目录
相关文章
|
XML SQL Java
JSP标签介绍(02)
JSP标签介绍(02)
50 0
|
5月前
|
SQL XML Java
JSP 教程 之 JSP 标准标签库(JSTL) 4
**JSP的JSTL是用于简化Web开发的标签库,包括核心、格式化、SQL、XML和函数5个部分。SQL标签库允许与数据库交互,如设定数据源、执行查询和更新,以及处理参数。例如, `&lt;sql:setDataSource&gt;` 定义数据源, `&lt;sql:query&gt;` 执行查询。通过使用JSTL,开发者能更整洁地处理JSP页面。**
50 8
|
5月前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 1
JSP的JSTL是用于简化页面逻辑的标签库,涵盖核心、格式化、SQL、XML和函数五大类标签。要安装,下载Apache的JSTL包,将jar文件放入WEB-INF/lib,tld文件复制到WEB-INF,并在web.xml中配置相应的taglib信息。JSTL促进了JSP页面的清洁和结构化。
42 5
|
5月前
|
XML SQL Java
JSP 教程 之 JSP 标准标签库(JSTL) 6
**JSP JSTL 摘要:** JSTL是JSP的标签库,包含核心、格式化、SQL、XML和函数5类标签。它用于执行常见任务,如迭代、条件判断和XML操作。JSTL函数库提供字符串处理函数,如`contains()`, `endsWith()`, `escapeXml()`等,方便XML和HTML处理。通过`&lt;%@ taglib %&gt;`导入,如`fn:trim()`用于去除字符串两端空白。
39 5
|
5月前
|
Java 应用服务中间件 Android开发
完成你的自定义JSP Tag标签-Basic Coustom Tag
完成你的自定义JSP Tag标签-Basic Coustom Tag
33 0
|
6月前
|
Java
jsp页面中使用jstl标签报错:javax.servlet.jsp.JspTagException
jsp页面中使用jstl标签报错:javax.servlet.jsp.JspTagException
85 0
|
XML Java 程序员
自定义JSP标签
自定义JSP标签
|
Java
自定义jsp标签进阶
自定义jsp标签进阶
34 2
|
11月前
|
Java
jsp标签下
jsp标签下
42 0
|
11月前
|
XML Java 数据格式
jsp标签上
jsp标签上
47 0