jsp_练习7

这篇博客介绍了一个JSP练习,涉及到创建一个名为GetArea.tag的Tag文件来计算三角形面积,并通过variable指令返回结果。JSP页面通过attribute指令传递三角形边长,one.jsp和two.jsp调用该Tag,分别以3位和6位小数精度显示面积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

编写一个 Tag 文件 GetArea.tag 负责求出三角形的面积,并使用 variable 指令返回三角形的面积给调用该 Tag 文件的 JSP 页面。JSP 页面负责显示 Tag 文件返回的三角形的面积。JSP 在调用 Tag 文件时,使用 attribute 指令将三角形三边的长度传递给 Tag 文件。one.jsp 和 two.jsp 都使用 Tag 标记调用 GetArea.tag 。one.jsp 将返回的三角形的面积保留最多 3 位小数, two.jsp 将返回的三角形的面积保留最多 6 位小数.

代码

demo3.jsp

<%@ page contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8" %>

<html>
  <body>
      <form action="one.jsp" method="GET" name="form">
        三角形的边一:
          <input type="text" name="s1"/>
        三角形的边二:
          <input type="text" name="s2"/>
        三角形的边三:
          <input type="text" name="s3"/>
      
        <input type="submit" value="提交"/>
      </form>
  </body>
</html>

GetArea.tag

<%@ tag pageEncoding="UTF-8" %>
<%@ tag import = "java.util.*" %>
<%@ attribute name="size1" required="true" %>
<%@ attribute name="size2" required="true" %>
<%@ attribute name="size3" required="true" %>
<%@ variable name-given="area" variable-class="java.lang.Double" scope="AT_END" %>
<%! 
  public Double getArea(double size1, double size2, double size3){
    //如果是三角形,则计算面积,并返回
    if(size1 + size2 > size3 && size1 + size3 > size2 && size3 + size2 > size1 ){
      double p = (size1 + size2 + size3) / 2.000000;
      double area = Math.sqrt(p * (p - size1) * (p - size2) * (p - size3));
      return area;
    }else 
      return null;
  }
%>

<% 
try{
  //转换类型
  double s1 = Double.parseDouble(size1);
  double s2 = Double.parseDouble(size2);
  double s3 = Double.parseDouble(size3);
  //返回值
  jspContext.setAttribute("area",getArea(s1, s2, s3));
}catch(Exception e){

}
%>

one.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<% 
//获取输入的值
  String s1 = request.getParameter("s1");
  String s2 = request.getParameter("s2");
  String s3 = request.getParameter("s3");
%>
<%-- 引用tag文件 --%>
  <tags:GetArea size1="<%=s1%>" size2="<%=s2%>" size3="<%=s3%>"/>
  <div>
    三角形的边分别为 <%=s1%>, <%=s2%>, <%=s3%>,面积为
    <%-- 设置保留小数点后 3 位 --%>
    <fmt:formatNumber value="<%=area%>" type="number" pattern="#.##" maxFractionDigits="3"/>
  </div>

two.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<% 
//获取输入的值
  String s1 = request.getParameter("s1");
  String s2 = request.getParameter("s2");
  String s3 = request.getParameter("s3");
%>
<%-- 引用tag文件 --%>
  <tags:GetArea size1="<%=s1%>" size2="<%=s2%>" size3="<%=s3%>"/>
  <div>
    三角形的边分别为 <%=s1%>, <%=s2%>, <%=s3%>,面积为 
    <%-- 设置保留小数点后 6 位 --%>
    <fmt:formatNumber value="<%=area%>" type="number" pattern="#.##" maxFractionDigits="6"/>

  </div>

执行结果

页面
one的结果
two的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值