题目
编写两个 Tag 文件 Rect.tag 和 Circle.tag。Rect.tag 负责计算并显示矩形的面积,Circle.tag 负责计算并显示圆的面积。编写一个 JSP 页面 lianxi6.jsp,该 JSP 页面使用 Tag 标记调用 Rect.tag 和 Circle.tag。调用 Rect.tag 时,向其传递矩形的两个边的长度;调用 Circle.tag 时,向其传递圆的半径。
代码
demo.jsp
<%@ page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<html>
<body>
<form action="lianxi6.jsp" method="GET" name="form">
矩形的宽:
<input type="text" name="width"/>
<br/>
矩形的高:
<input type="text" name="height"/>
<br/>
圆形的半径:
<input type="text" name="radius"/>
<br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
lianxi6.jsp
<%@ page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<%
//获取输入的值
String w = request.getParameter("width");
String h = request.getParameter("height");
String r = request.getParameter("radius");
%>
<%-- 引用 tag 文件 --%>
<tags:Circle radius="<%=r%>"/>
<tags:Rect width="<%=w%>" height="<%=h%>"/>
Rect.tag
<%@ tag pageEncoding="UTF-8" %>
<%@ attribute name="width" required="true" %>
<%@ attribute name="height" required="true" %>
<%!
public String getRectArea(double width, double height){
//计算面积
double area = width * height;
return "矩形的宽为" + width + ",高为" + height + ",矩形的面积为" + area;
}
%>
<%
try{
//转换类型
double w = Double.parseDouble(width);
double h = Double.parseDouble(height);
//调用函数求结果,输出值
out.println(getRectArea(w, h));
}catch(Exception e){
}
%>
Circle.tag
<%@ tag pageEncoding="UTF-8" %>
<%@ attribute name="radius" required="true" %>
<%!
public String getCircleArea(double radius){
//求圆的面积
double area = 2 * Math.pow(radius, 2) * 3.14;
return "圆形的半径为" + radius + ",圆形的面积为" + area + "; ";
}
%>
<%
try{
//转换参数类型
double r = Double.parseDouble(radius);
//输出结果
out.println(getCircleArea(r));
}catch(Exception e){
}
%>
执行结果