jsp程序设计-Tag文件与Tag标记用法详解

来源:互联网 发布:管理顾客的软件 编辑:程序博客网 时间:2024/04/28 18:05
  1. 新建tag文件

    注:tag文件一般被放至/WEB-INF/tags目录下

  2. Jsp页面中引用tag文件(声明标记库)

    jsp页面头部:

    <%@ taglib prefix="前缀" tagdir="自定义标记库的位置(一般为/WEB-INF/tags)"%>
    //prefix属性为前缀

  3. jsp页面中使用tag标签(jsp页面像tag文件中传值):

    <前缀:tag文件名 对象1名字="对象1的引用 对象2名字="对象2的引用" />

  4. 编写tag文件

    Tag文件接收jsp页面传值:

    <%@ attribute name="对象1名字" required="true"%>
    <%@ attribute name="对象2名字" required="true"%>

  5. 将tag文件中对象返回给调用该tag文件的jsp页面(使用variable指令) Tag文件中

    a.声明variable指令

    <%@ variable name-given ="对象名字" scope="有效范围"%> //variable指令

    scope取值(指明jsp页面使用variable指令中给出的对象的有效范围):

    AT_BEGIN:jsp页面一旦开始使用tag标记,就可以使用
    NESTED:jsp页面只可以在tag标记的标记体使用。
    AT_END:jsp页面只可以在tag标记结束后使用

    b. 将对象返回给调用该tag文件的jsp页面

    jspContext.setAttribute("对象的名",对象的引用);//发回jsp页面



附代码(四则运算):
InputNumber.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>四则运算</title></head><body bgcolor=yellow><font size="5">输入运算数,选择运算符号:<br><form action="" method="post"><input type="text" name="no1" size=6>&nbsp;&nbsp;<select name="operator"><option value="+">+<option value="-">-<option value="*">*<option value="/">/</select>&nbsp;&nbsp;<input type="text" name="no2" size=6><input type="submit" value="提交你的答案" name="submit"></form><%String a=request.getParameter("no1");  String b=request.getParameter("no2");  String operator=request.getParameter("operator");  if(a==null||b==null){      a="";      b="";    }  if(a.length()>0&&b.length()>0){      %><computer:computer numberA="<%=a%>" numberB="<%=b%>" operator="<%=operator%>"/> 计算结果:<%=a %><%=operator %><%=b %>=<%=result %> <%  }  %>  </font></body></html>

Computer.tag

<%@ tag language="java" pageEncoding="UTF-8"%><%@ attribute name="numberA" required="true"%><%@ attribute name="numberB" required="true"%><%@ attribute name="operator" required="true"%><%@ variable name-given ="result" scope="AT_END"%><%try{    double a=Double.parseDouble(numberA);    double b=Double.parseDouble(numberB);    double r=0;    if(operator.equals("+"))r=a+b;    else if(operator.equals("-"))r=a-b;    else if(operator.equals("*"))r=a*b;    else if(operator.equals("/"))r=a/b;    jspContext.setAttribute("result",String.valueOf(r));}catch(Exception e){    jspContext.setAttribute("result","发生异常:"+e);} %>
0 0