JSP程序设计练习--第三章-课后习题6
JSP程序设计练习--第三章-课后习题6
题3-6 Tag标记
编写两个Tag文件Rect.tag和Circle.tag。Rect.tag负责计算矩形的面积,Circle.tag负责计算圆的面积。编写一个JSP页面,该JSP页面使用Tag标记调用Rect.tag和Circle.tag。调用Rect.tag时,向其传递矩形的两个边的长度,调用Circle.tag时,向其传递圆的半径。
代码设计
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="rect" tagdir="/WEB-INF/tags" %>
<html>
<body>
<table cellspacing="1" cellpadding="1" width="20%" border="0">
<tr valign="bottom">
<td><a href="/index.jsp"><font size=3>计算矩形面积</font> </a> </td>
<td><a href="/index2.jsp"><font size=3>计算圆的面积</font> </a> </td>
</tr>
</table>
<p>输入矩形的长和宽:
<FORM action="" method=get name=form>
<table>
<tr>
<td>输入长的值:</td>
<td><input type="text" name="l"></td>
</tr>
<tr>
<td>输入宽的值:</td>
<td><input type="text" name="w"></td>
</tr>
</table>
<br><input type="submit" value="提交" name=submit>
</FORM>
<%
String l = request.getParameter("l");
String w = request.getParameter("w");
if (l!=null&&w!=null){
%> <rect:Rect longg="<%=l%>" width="<%=w%>"/>
<br><%=message%>
<br><%=area%>
<%
}
%>
</body>
</html>
index2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="circle" tagdir="/WEB-INF/tags" %>
<html>
<body bgcolor="#f5f5dc">
<table cellspacing="1" cellpadding="1" width="20%" border="0">
<tr valign="bottom">
<td><a href="/index.jsp"><font size=3>计算矩形面积</font> </a> </td>
<td><a href="/index2.jsp"><font size=3>计算圆的面积</font> </a> </td>
</tr>
</table>
<p>输入圆的半径:
<FORM action="" method=get name=form>
<table>
<tr>
<td>输入半径的值:</td>
<td><input type="text" name="rd"></td>
</tr>
</table>
<br><input type="submit" value="提交" name=submit />
</FORM>
<%
String rd = request.getParameter("rd");
if(rd!=null) {
%><circle:Circle rr="<%=rd%>"/>
<br><%=message%>
<br><%=area%>
<%}
%>
</body>
</html>
Rect.tag
<%@tag pageEncoding="gb2312" %>
<%@ attribute name="longg" required="true" %>
<%@ attribute name="width" required="true" %>
<%@ variable name-given="area" variable-class="java.lang.Double" scope="AT_END" %>
<%@ variable name-given="message" scope="AT_END" %>
<% try{
double l = Double.parseDouble(longg);
double w = Double.parseDouble(width);
double result = 0;
result = l*w;
jspContext.setAttribute("area", new Double(result));
jspContext.setAttribute("message", "矩形的面积");
}catch (Exception e){
jspContext.setAttribute("area", new Double(-1.0));
jspContext.setAttribute("message", e.toString());
}
%>
Circle.tag
<%@tag pageEncoding="gb2312" %>
<%@ attribute name="rr" required="true" %>
<%@ variable name-given="area" variable-class="java.lang.Double" scope="AT_END" %>
<%@ variable name-given="message" scope="AT_END" %>
<% try{
double r = Double.parseDouble(rr);
double result = 0;
result = 3.14159*r*r;
jspContext.setAttribute("area", new Double(result));
jspContext.setAttribute("message", "圆形的面积");
}catch (Exception e){
jspContext.setAttribute("area", new Double(-1.0));
jspContext.setAttribute("message", e.toString());
}
%>
运行效果
- index.jsp
- index2.jsp