加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

tag文件的attribute指令

(2013-09-11 23:11:59)
分类: java
    我们知道JSP中可以使用Tag文件使得处理和显示相分离,一般我们都将数据的处理交给Tag文件来完成。那么,为了完成数据的处理,则必须将数据传给Tag文件,是通过什么方法传递数据的呢?下面,我们就来讨论一下attribute指令。

    Tag文件中通过使用attribute指令,可以让使用它的JSP页面向该Tag文件传递需要的数据。使用格式如下:

    <%@ attribute name="对象名字" required="true|false" type="对象的数据类型"%>

    name属性是必须的,指定对象传递的一个引用;required属性是可选的,默认是falsetype属性是可选的,默认是java.lang.String类型。

 

下面写一段代码,实现通过调用Tag文件计算三角形的面积。

compute.jsp:

<%@ page contentType="text/html;charset=GB2312"%>

<%@ taglib tagdir="/WEB-INF/tags" prefix="compute"%>

<html>

<head><title>计算三角形的面积</title></head>

<body>

<h2>请输入三角形的三边长:</h2>

<form action="compute.jsp" method="post" name="form">

A:<input type="text" name="side1" /><br>

B:<input type="text" name="side2" /><br>

C:<input type="text" name="side3" /><br>

<input type="submit" name="enter" value="Enter"/>

</form>

<%

    String side_A = request.getParameter("side1");

    String side_B = request.getParameter("side2");

    String side_C = request.getParameter("side3");

    if(side_A==null||side_B==null||side_C==null){

      side_A = "0";

      side_B = "0";

      side_C = "0";

   }

 

%>

<compute:Triangle sideA="<%= side_A %>" sideB="<%= side_B %>" sideC="<%= side_C %>"/>

</body>

</html>

Triangle.tag放在/WEB-INF/tags目录下:

<H4>这是一个Tag文件,负责计算三角形的面积。</H4>

<%@ attribute name="sideA" required="true"%>

<%@ attribute name="sideB" required="true"%>

<%@ attribute name="sideC" required="true"%>

<%!

    public String getArea(double a,double b,double c){

       if(a+b>c&&a+c>b&&b+c>a){

           double p = (a+b+c)/2.0;

           double area = Math.sqrt(p*(p-a)*(p-b)*(p-c));

           return "<br>三角形的面积:"+area;

       }else{

           return ("<br>"+a+","+b+","+c+"不能构成一个三角形,无法计算面积!");

       }

    }

%>

<%

    out.println("<br>JSP页面传来三条边:"+sideA+","+sideB+","+sideC);

    try{

    double a = Double.parseDouble(sideA);

    double b = Double.parseDouble(sideB);

    double c = Double.parseDouble(sideC);

        out.println(getArea(a,b,c));

    }

    catch(Exception e){

       out.println("发生异常"+e);

    }

%>

http://s6/mw690/bfed8f8agx6CzMudZNH35&690

注:<compute:Triangle  .../>标红的之间千万别有空格,我因为粗心加了个空格,写成:<computeTriangle  .../>硬是浪费了一个多小时啊!!!

 

0

阅读 收藏 喜欢 打印举报/Report
前一篇:义眼
后一篇:龟毛
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有