6.编写两个Tag文件Rect.tag和Circle.tag。Rect负责计算并显示矩形的面积,Circle负责计算并显示圆的面积。编写一个JSP页面lianxi6.jsp,该JSP页面使用Tag标记调用Rect.tag和Circle.tag.。
lianxi6.jsp:
<%@ page contentType = "text/html;charset=UTF-8" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="tsg" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<p>请输入矩形的长和宽:
<form action="" method="post" name=form>
<label>长:</label><input type="text" name="length" id="length">
<br>
<br>
<label>宽:</label><input type="text" name="width" id="width">
<br>
<Input type="submit"value="确定" name=submit1>
</form>
<tsg:Rect/>
<p>请输入圆的半径:
<form action="" method="post" name=form>
<label>半径:</label><input type="text" name="r1" id="r1">
<br><Input type="submit"value="确定" name=submit2>
</form>
<tsg:Circle/>
</body>
</html>
Rect.tag:
<%@ tag pageEncoding="utf-8" %>
<% String length = request.getParameter("length");
String width = request.getParameter("width");
if(l!=null&&h!=null){
int l=Integer.parseInt(length);
int w=Integer.parseInt(width);
int area=0;
area=m*n;
out.println("矩形的面积:"+area);
%>
<%
}
%>
Circle.tag:
<%@ tag pageEncoding="utf-8" %>
<% String str = request.getParameter("r1");
if(str!=null){
Double r=Double.parseDouble(str);
Double area;
area=3.14*r*r;
out.println("圆的面积:"+area);
%>
<%
}
%>
结果:
7.编写一个Tag文件,GetArea.tag负责求三角形面积,并使用variable指令返回三角形的面积给调用该Tag文件的JSP页面。JSP页面负责显示Tag文件返回的三角形面积。JSP在调用Tag文件时,使用attribute指令将三角形三边的长度传递给Tag文件。one.js和two.jsp都是用Tag标记调用GetArea.tag。one返回的三角形的面积保留最多三位小数,two将返回的三角形面积保留最多六位小数。
one.jsp:
<%@ page contentType = "text/html;charset=UTF-8" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="tra" %>
<%@page import="java.text.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<p>请输入三角形三边长:
<form action="" method="post" name=form>
<label>第一条边:</label><input type="text" name="length1" id="length1">
<br>
<br>
<label>第二条边:</label><input type="text" name="length2" id="length2">
<br>
<br>
<label>第三条边:</label><input type="text" name="length3" id="length3">
<br>
<br>
<input type="submit"value="确定" name=submit1>
</form>
<%String a=request.getParameter("length1");//取值并转化为字符串
String b=request.getParameter("length2");
String c=request.getParameter("length3");
%>
<tra:GetArea b="<%=a %>" a="<%=b %>" c="<%=c %>"/>
<% NumberFormat f=NumberFormat.getInstance();
f.setMaximumFractionDigits(3);//设置保留三位小数
if(area1!=null)
{double d=area1.doubleValue();
String str=f.format(d);
out.println(str);}
%>
</body>
</html>
two.jsp:
<%@ taglib tagdir="/WEB-INF/tags" prefix="tra" %>
<%@page import="java.text.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<p>请输入三角形三边长:
<%@ page contentType = "text/html;charset=UTF-8" %>
<form action="" method="post" name=form>
<label>第一条边:</label><input type="text" name="length1" id="length1">
<br>
<br>
<label>第二条边:</label><input type="text" name="length2" id="length2">
<br>
<br>
<label>第三条边:</label><input type="text" name="length3" id="length3">
<br>
<br>
<input type="submit"value="确定" name=submit1>
</form>
<%String a=request.getParameter("length1");
String b=request.getParameter("length2");
String c=request.getParameter("length3");
%>
<tra:GetArea b="<%=a %>" a="<%=b %>" c="<%=c %>"/>
<% NumberFormat f=NumberFormat.getInstance();
f.setMaximumFractionDigits(6); //将参数改为6即可保留6位小数
if(area1!=null)
{double d=area1.doubleValue();
String str=f.format(d);
out.println(str);}
%>
</body>
</html>
GetArea.tag:
<%@tag import="java.util.*" %>
<%@attribute name="a" required="true" %>
<%@attribute name="b" required="true" %>
<%@attribute name="c" required="true" %>
<%@variable name-given="area1" variable-class="java.lang.Double" scope="AT_END"%>
<%
if(a!=null&&b!=null&&c!=null){
double l1=Double.parseDouble(a);
double l2=Double.parseDouble(b);
double l3=Double.parseDouble(c);
if(l1+l2>l3&&l2+l3>l1&&l1+l3>l2){
double p=(l1+l2+l3)/2.0;
double area=Math.sqrt(p*(p-l1)*(p-l2)*(p-l3));
if(a!=null&&b!=null&&c!=null){
jspContext.setAttribute("area1",new Double(area));
}
}
}
%>
结果: