【问题标题】:Convert Temperature through jsp通过jsp转换温度
【发布时间】:2013-10-12 21:24:17
【问题描述】:

我现在已经搜索了 2 个小时,但显然我没有在正确的地方搜索。我正在尝试创建一个温度转换器计算器。它是三页

  1. 一个 html 表单,其中包含一个用于输入温度数字的表单和 2 个单选按钮来决定您需要摄氏温度还是华氏温度。

  2. 一个 jsp 页面,它采用该表单的值并进行数学转换以转换温度。

  3. 如果用户在表单中输入无效字符,则会引发错误的 jsp 页面。

我很难让我的 jsp 页面转换数字并将用户重定向到显示结果的另一个页面。当我输入一个数字并按下提交按钮时,我被带到我的 jsp 页面代码。如果您想知道,这是一个班级的作业。我准备好翻转桌子并需要帮助。我的代码如下。

第 1 页:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    </head>

    <body>
        <script type="text/javascript">
            function check(){
                document.getElementByValue("fahr").checked=true

            }
            function check2(){
                document.getElementByValue("cel").checked=true
            }

            // -->
        </script>

        <form name="Temperature Converter" method="get" action="convert.jsp">
            <h2 style="font-family:arial;color:red">Temperature Calculator</h2>

            <table border="1">
                <tbody>
                    <tr>
                        <td>Enter a temperature in number form:</td>
                        <td>
                            <input type="text" name="fTemp" id="fTemp"  />
                        </td>
                        <td>
                            <input type="radio" name="temp" value="cel" onclick="check2();return false">Convert to Celsius
                            <br>
                            <input type="radio" name="temp" value="fahr" onclick="check();return false">Convert to Fahrenheit
                        </td>
                    </tr>
                    <tr>
                        <td><input type="submit" value="Convert!">

                        </td>
                    </tr>
                </tbody>
            </table>
        </form>
    </body>
</html>

第 2 页:这是我觉得一团糟的地方。

<%@page contentType="text/html"%>
<%@page import="java.sql.*" %>
<%@page session="true"%>
<%!
    String inp = null;
    int temperature = 0;
        int c = 0;
        int f = 0;

%> 
<%
    inp = request.getParameter("fTemp");

    if (inp == null || inp.equals("") )
    {
        response.sendRedirect("errorMsg.jsp?msg=You are missing values.");
        return;
    }
    try
    {
     if (request.getParameter("cel") = checked)
                {
                f = Integer.parseInt(inp);
                c = (f - 32) * (5.0 / 9.0);
        }else{
                c = Integer.parseInt(inp);
        c = parseFloat(request.getParameter('inp').value);
                f = (c * (9.0 / 5.0)) + 32.0;

    }
    catch (Exception e)
    {
        response.sendRedirect("errorMsg.jsp?msg=Invalid numbers entered.");
        return;
    }
%>
<!DOCTYPE HTML>
<html>
    <head>
        <title>First jsp Page</title>
    </head>
    <body>
        <p>The temperature is <%= c %></p>
                <p>The temperature is <%= f %></p>
    </body>
</html>

非常感谢您的任何建议/指导,对于冗长的信息,我深表歉意。

【问题讨论】:

  • 为什么要使用裸 JSP,尤其是使用老式嵌入式 Java 代码的 JSP,而不是使用 Spring 或 Play 之类的工具?
  • @chrylis 可能用于学习目的。
  • 这是一个作业。所以我按照老师教我们的方法去做。
  • 如果你想学习JSP开发,你也应该学习Servlets。第一课:avoid usage of scriptlets (Java code inside JSP)。如果您的老师认为教授 Scriptlets 的用法很好,请告诉他/她访问这个网站,特别是阅读上面的链接:)。
  • 你有一些语法错误。

标签: java jsp


【解决方案1】:

我查看了您的代码,convert.jsp 文件中存在一些语法错误。

  1. 缺少一些声明,例如language="java" 和一个不必要的导入文件
  2. 用于存储温度的变量应该是双精度数,因为它们是小数。
  3. if 语句参数未正确检查所选值单选按钮的值。使用 equals() 而不是 ==。请参阅此链接What's the difference between ".equals" and "=="?
  4. else 之后缺少结束符 }
  5. 代码 c = parseFloat(request.getParameter('inp').value);没有必要也不正确。使用 " 而不是 '。

这是更正后的代码。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@page session="true"%>
<%!String inp = null;
double temperature = 0;
double c = 0;
double f = 0;%>
<%
inp = request.getParameter("fTemp");    

if (inp == null || inp.equals("")) {
    response.sendRedirect("errorMsg.jsp?msg=You are missing values.");
    return;
}
try {
    if ("cel".equals(request.getParameter("temp"))) {
        f = Integer.parseInt(inp);
        c = (f - 32) * (5.0 / 9.0);
    } else {
        c = Integer.parseInt(inp);
        f = (c * (9.0 / 5.0)) + 32.0;

    }
} catch (Exception e) {
    response.sendRedirect("errorMsg.jsp?msg=Invalid numbers entered.");
    return;
}
 %>

这将按照您的预期编译和执行。

【讨论】:

  • Ack,编码太令人沮丧了。我现在理解 == 和 .equals() 之间的区别。此外,我后来将我的变量更改为双精度值,但一直将它们与整数等不匹配。基本上我只是在做一些随机的事情。我是如此接近。非常感谢 Theedom,并通过链接查看 .equals 和 == 之间的区别。我能够完成并让一切正常工作。感谢所有花时间阅读和回答的人,这是一个巨大的帮助。
  • 很高兴能提供帮助,我同意编码有时非常令人沮丧。
猜你喜欢
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多