6.
Rect.tag
<%@tag pageEncoding="gb2312" %>
<!-- 这是一个Tag文件,负责计算并显示矩形的面积 -->
<%@attribute name="width" required="true"%>
<%@attribute name="length" required="true"%>
<%!
public double getArea(double width,double length){
return width*length;
}
%>
<%
try{
double w=Double.parseDouble(width);
double l=Double.parseDouble(length);
out.println("<BR>矩形的面积:"+getArea(w,l));
}catch(Exception e){
out.println("<BR>请输入数字!");
}
%>
Circle.tag
<%@tag pageEncoding="gb2312" %>
<!-- 这是一个Tag文件,负责计算并显示圆形的面积 -->
<%@attribute name="radius" required="true"%>
<%!
public double getArea(double radius){
return Math.PI*radius*radius;
}
%>
<%
try{
double r=Double.parseDouble(radius);
out.println("<BR>圆形的面积:"+getArea(r));
}catch(Exception e){
out.println("<BR>请输入数字!");
}
%>
lianxi6.jsp
<%@page contentType="text/html; charset=gb2312" %>
<%@taglib tagdir="/WEB-INF/tags" prefix="computeArea"%>
<HTML>
<BODY>
<FORM action="" method="get" name="form">
<TABLE>
<TR>
<TH>输入矩形的信息:</TH>
</TR>
<TR>
<TD>长:</TD>
<TD><INPUT type="text" name="length"></TD>
</TR>
<TR>
<TD>宽:</TD>
<TD><INPUT type="text" name="width"></TD>
</TR>
<TR>
<TH>输入圆形的信息:</TH>
</TR>
<TR>
<TD>半径:</TD>
<TD><INPUT type="text" name="radius"></TD>
</TR>
<TR>
<TD><INPUT type="submit" value="提交" name="submit"></TD>
</TR>
</TABLE>
</FORM>
<%
String w=request.getParameter("width");
String l=request.getParameter("length");
String r=request.getParameter("radius");
if(w==null||l==null||r==null){
w="0";
l="0";
r="0";
}
%>
<computeArea:Rect width="<%=w%>" length="<%=l%>"/>
<computeArea:Circle radius="<%=r%>"/>
</BODY>
</HTML>
效果:



7.
GetArea.tag
<%@tag pageEncoding="gb2312" %>
<%@tag import="java.util.*" %>
<!-- 这是一个Tag文件,负责计算并返回三角形的面积 -->
<%@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"%>
<%@variable name-given="message" scope="AT_END"%>
<%!
public double getArea(double a,double b,double c){
if(a+b>c&&a+c>b&&b+c>a){
double p=(a+b+c)/2.0;
return Math.sqrt(p*(p-a)*(p-b)*(p-c));
}else if(a==0&&b==0&&c==0){
return 0;
}else{
return -1;
}
}
%>
<%
try{
double a=Double.parseDouble(sideA);
double b=Double.parseDouble(sideB);
double c=Double.parseDouble(sideC);
jspContext.setAttribute("area",new Double(getArea(a,b,c)));
if(getArea(a,b,c)<0){
jspContext.setAttribute("message","无法构成三角形!");
}else{
jspContext.setAttribute("message","请输入数字!");
}
}catch(Exception e){
jspContext.setAttribute("area",new Double(-1));
jspContext.setAttribute("message","请输入数字!");
}
%>
one.jsp
<%@page contentType="text/html; charset=gb2312" %>
<%@page import="java.text.*" %>
<%@taglib tagdir="/WEB-INF/tags" prefix="computeArea"%>
<!-- 负责显示Tag文件返回的三角形的面积且最多保留3位小数 -->
<HTML>
<BODY>
输入三角形三条边的长度:
<FORM action="" method="get" name="form">
边1:<INPUT type="text" name="sideA"><BR>
边2:<INPUT type="text" name="sideB"><BR>
边3:<INPUT type="text" name="sideC"><BR>
<INPUT type="submit" value="提交"><BR>
</FORM>
<%
String a=request.getParameter("sideA");
String b=request.getParameter("sideB");
String c=request.getParameter("sideC");
if(a==null||b==null||c==null){
a="0";
b="0";
c="0";
}
%>
<computeArea:GetArea sideA="<%=a%>" sideB="<%=b%>" sideC="<%=c%>"/>
<%
NumberFormat numberFormat=NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(3);
if(area>0){
out.println("三角形的面积:"+numberFormat.format(area));
}else{
out.println("三角形的面积:"+message);
}
%>
</BODY>
</HTML>
two.jsp
<%@page contentType="text/html; charset=gb2312" %>
<%@page import="java.text.*" %>
<%@taglib tagdir="/WEB-INF/tags" prefix="computeArea"%>
<!-- 负责显示Tag文件返回的三角形的面积且最多保留6位小数 -->
<HTML>
<BODY>
输入三角形三条边的长度:
<FORM action="" method="get" name="form">
边1:<INPUT type="text" name="sideA"><BR>
边2:<INPUT type="text" name="sideB"><BR>
边3:<INPUT type="text" name="sideC"><BR>
<INPUT type="submit" value="提交"><BR>
</FORM>
<%
String a=request.getParameter("sideA");
String b=request.getParameter("sideB");
String c=request.getParameter("sideC");
if(a==null||b==null||c==null){
a="0";
b="0";
c="0";
}
%>
<computeArea:GetArea sideA="<%=a%>" sideB="<%=b%>" sideC="<%=c%>"/>
<%
NumberFormat numberFormat=NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(6);
if(area>0){
out.println("三角形的面积:"+numberFormat.format(area));
}else{
out.println("三角形的面积:"+message);
}
%>
</BODY>
</HTML>
效果:
one.jsp



two.jsp
