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());
}
%>

运行效果

  1. index.jsp
    JSP程序设计练习--第三章-课后习题6
    JSP程序设计练习--第三章-课后习题6
  2. index2.jsp
    JSP程序设计练习--第三章-课后习题6
    JSP程序设计练习--第三章-课后习题6