作业二:Tag文件与Tag标记

6、编写两个Tag文件Rect.tag和Circle.tag。Rect.tag负责计算矩形的面积,Circle.tag负责计算圆的面积。编写一个JSP页面,该JSP页面使用Tag标记调用Rect.tag和Circle.tag。调用Rect.tag时,向其传递矩形的两个边的长度,调用Circle.tag时,向其传递圆的半径。

Rect.tag

<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ attribute name="radius"  required="true" %>
<%! public String getArea(double a){
    double area=3.1415926*a*a;
return "<BR>圆的面积为:"+area;
}
%>
<% out.println("<BR>JSP页面传递过来的半径:"+radius);
   double a=Double.parseDouble(radius);
   out.println(getArea(a));
%>

Circle.tag

<%@ tag language="java" pageEncoding="utf-8"%>
<%@ attribute name="length" required="true" %>
<%@ attribute name="width"  required="true" %>
<%! public String getArea(double a,double b){
   double area=a*b;
return "<BR>矩形的面积为:"+area;
}
%>
<% out.println("<BR>JSP页面传递过来的两条边:"+length+","+width);
   double a=Double.parseDouble(length);
   double b=Double.parseDouble(width);
   out.println(getArea(a,b));
  %>

lianxi6.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib tagdir="/WEB-INF/tags"  prefix="Rect"%>
<%@ taglib tagdir="/WEB-INF/tags"  prefix="Circle"%>
    <html><body>
 <H3>以下是矩形的面积:</H3>
<Rect:Rect length="4" width="3"/>
<H3>以下是圆的面积:</H3>
<Circle:Circle radius=" 4" />
</body></html>

运行结果:

作业二:Tag文件与Tag标记

 

 

7、编写一个Tag文件

GetArea.tag负责求出三角形的面积,并使用variable指令返回三角形的面积给调用该Tag文件的JSP页面。JSP页面负责显示Tag文件返回的三角形的面积。JSP在调用Tag文件时,使用attribute指令将三角形三边的长度传递给Tag文件。one.jsptwo.jsp都使用Tag标记调用GetArea.tagone.jsp将返回的三角形的面积保留最多3位小数,two.jsp将返回的三角形的面积保留最多6位小数。

 

GetArea.tag

<%@ tag language="java" pageEncoding="utf-8"%>
<%@ attribute name="sideA" required="true" %>
<%@ attribute name="sideB" required="true" %>
<%@ attribute name="sideC" required="true" %>
<%@ variable name-given="area" variable-class="java.lang.Double" scope="AT_END" %> <%
double a=Double.parseDouble(sideA);
double b=Double.parseDouble(sideB);
double c=Double.parseDouble(sideC);
if(a+b>c&&a+c>b&&c+b>a)
{ double p=(a+b+c)/2.0;
double result=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ;
jspContext.setAttribute("area",new Double(result));
}
else
{ jspContext.setAttribute("area",new Double(-1));
}
%>

one.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.text.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>
<HTML>
<BODY>
<computer:GetArea sideA="3" sideB="6" sideC="5"/>
<h4> 面积保留3位小数点:
<%
NumberFormat f=NumberFormat.getInstance();
f.setMaximumFractionDigits(3);
double result=area.doubleValue();
String str=f.format(result);
out.println(str);
%>
</BODY>
</HTML>

two.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.text.*" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%>
<HTML>
<BODY>
<computer:GetArea sideA="3" sideB="6" sideC="5"/>
<h4> 面积保留6位小数点:
<%
NumberFormat f=NumberFormat.getInstance();
f.setMaximumFractionDigits(6);
double result=area.doubleValue();
String str=f.format(result);
out.println(str);
%>
</BODY>
</HTML>

运行结果:

作业二:Tag文件与Tag标记作业二:Tag文件与Tag标记