【问题标题】:servlet problem while passing values of float from one servlet to other servlet [duplicate]将浮点值从一个servlet传递到另一个servlet时出现servlet问题[重复]
【发布时间】:2020-01-10 11:24:31
【问题描述】:
<!-- language: java-->
    package bhatti;
    public class find extends HttpServlet {

     @Override
     protected void doGet(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {

      response.setContentType("text/html;");
      PrintWriter out = response.getWriter();

      out.println("<html><body>");
      out.println("<feildset>");
      out.println("<form action='display' method='get'>");
      out.println("<tr>");
      out.println("<td>ID :</td><td> <input type='text' name='id' style='width=70px;'></td><tr><br>");
      out.println("<tr><td>Uints: </tr><tr><input type='text' name='uints' style='width=70px;' ></td></tr><br>");
      out.println("<tr><td><input type='submit' value='submit' ></td></tr><br>");
      out.println("</form>");
      out.println("</feildset>");
      out.println("</body></html>");

      int i = Integer.parseInt(request.getParameter("id"));
      int u = Integer.parseInt(request.getParameter("uints"));

      float bill;

      bill = (float)(u * (1.5));

      float s;

      s = (float)(bill * 0.05);

      float totalbill;

      totalbill = bill - s;

      RequestDispatcher requestDispatcher = getServletContext().getRequestDispatcher("display.java");
      requestDispatcher.forward(request, response);

      request.setAttribute("id", i);
      request.setAttribute("uints", u);
      request.setAttribute("totalbill", totalbill);

     }
    }
second servlet
package bhatti;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class display extends HttpServlet {

 @Override
 protected void doGet(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {

  response.setContentType("text/html;");
  PrintWriter out = response.getWriter();

  int i = Integer.parseInt(request.getParameter("id"));

  int u = Integer.parseInt(request.getParameter("uints"));

  float tb = Float.parseFloat(request.getParameter("totalbill"));

  out.println("<p>ID: " + i + "  </p><br>");
  out.println("<p>Uints: " + u + "</p><br>");
  out.println("<p>Subsidy: " + "  5%" + "</p><br>");
  out.println("<h1>Total Bill:" + tb + "</h1><br>");

 }

}

浮点值没有发送到另一个 servlet

错误是 HTTP 状态 500 -

输入异常报告

消息

描述服务器遇到阻止它的内部错误 完成此请求。

异常

java.lang.NullPointerException sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838) sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122) java.lang.Float.parseFloat(Float.java:451) bhatti.display.doGet(display.java:26) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

note 根本原因的完整堆栈跟踪可在 Apache Tomcat/8.0.27 日志。

【问题讨论】:

  • 设置断点并检查值。它是空的吗?想想为什么它是空的。
  • 先生,我是 Java 新手,请帮我解决这个问题。我尝试现在发生错误 404

标签: java servlets jsp-tags servletconfig


【解决方案1】:

您正在一个 servlet 中设置属性,并试图在另一个 servlet 中获取参数。

setAttribute 值不能通过getParameter 获取
setAttribute 值只能通过getAttribute 获取

所以使用请求中的getAttribute作为

request.getAttribute ("totalBill") ;

在您的情况下,request.getParameter("totalBill") 为 NULL,Float.parseFloat(null) 将通过NullPointerException,因此您的 HttpResponse 状态为 500,即内部服务器错误。

【讨论】:

  • 之后出现 HTTP 状态 404 - 错误
  • Integer.parseInt(null) 导致 NullPointerException 并因此出现 500 错误。
  • 这能回答你的问题吗?
  • 不,先生,我正在尝试查找电费单。问题是在一个 servlet 中我必须计算账单,而在另一个 servlet 中将输出账单
  • 我也尝试使用 getAttribute 但错误没有消失
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 2021-03-07
  • 2012-05-22
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多