Home > Net >  Trying to calculate interest from html to servlet to jsp using java
Trying to calculate interest from html to servlet to jsp using java

Time:02-10

So I am trying to enter a value and select and interest rate from a select drop down, using java to calculate the interest earned. When I run my program I am returned with the following error:

HTTP Status 500 – Internal Server Error
Type Exception Report
Message Cannot invoke "String.trim()" because "in" is null
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
java.lang.NullPointerException: Cannot invoke "String.trim()" because "in" is null
    java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)
    java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    java.base/java.lang.Double.parseDouble(Double.java:651)
    controller.interestServlet.doPost(interestServlet.java:36)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note The full stack trace of the root cause is available in the server logs.
Apache Tomcat/9.0.58

my index:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Calculate Interest</title>
</head>
<body>
<h1>Interest Calculator</h1>
<form action="interestServlet" method="post">
Please enter the dollar amount
<input type="text" name="userDollars" size="15">
Choose an interest rate: <select name="userInterest" id="userInterest">
            <option value=".02">2%</option>
            <option value=".03">3%</option>
            <option value=".05">5%</option>
            <option value=".10">10%</option>
</select>
<input type="submit" value="Calculate Interest" />
</form>

</body>
</html>

my servlet:

/**
 * Servlet implementation class interestServlet
 */
@WebServlet("/interestServlet")
public class interestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public interestServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String userDollar = request.getParameter("userDollar");
        CalculateInterest setInterest = new CalculateInterest(Double.parseDouble(userDollar));
        request.setAttribute("userInterestRate", setInterest);

        getServletContext().getRequestDispatcher("/inerestResult.jsp").forward(request, response);
        
        PrintWriter writer = response.getWriter();
        writer.println(setInterest.toString());
        writer.close();
    }

}

my java:

public class CalculateInterest {
    
    private double userDollars;
    private double twoPercent;
    private double threePercent;
    private double fivePercent;
    private double tenPercent;
    /**
     * 
     */
    public CalculateInterest() {
        super();
        // TODO Auto-generated constructor stub
    }
    /**
     * @param userDollars
     * @param twoPercent
     * @param threePercent
     * @param fivePercent
     * @param tenPercent
     */
    public CalculateInterest(double userDollars) {
        super();
        this.userDollars = userDollars;
        setInterest(userDollars);
    }
    
    /**
     * @return the userDollars
     */
    public double getUserDollars() {
        return userDollars;
    }
    /**
     * @param userDollars the userDollars to set
     */
    public void setUserDollars(double userDollars) {
        this.userDollars = userDollars;
        setInterest(userDollars);
    }
    /**
     * @return the twoPercent
     */
    public double getTwoPercent() {
        return twoPercent;
    }
    /**
     * @param twoPercent the twoPercent to set
     */
    public void setTwoPercent(double twoPercent) {
        this.twoPercent = twoPercent;
    }
    /**
     * @return the threePercent
     */
    public double getThreePercent() {
        return threePercent;
    }
    /**
     * @param threePercent the threePercent to set
     */
    public void setThreePercent(double threePercent) {
        this.threePercent = threePercent;
    }
    /**
     * @return the fivePercent
     */
    public double getFivePercent() {
        return fivePercent;
    }
    /**
     * @param fivePercent the fivePercent to set
     */
    public void setFivePercent(double fivePercent) {
        this.fivePercent = fivePercent;
    }
    /**
     * @return the tenPercent
     */
    public double getTenPercent() {
        return tenPercent;
    }
    /**
     * @param tenPercent the tenPercent to set
     */
    public void setTenPercent(double tenPercent) {
        this.tenPercent = tenPercent;
    }
    
    public void setInterest(double userDollars) {
        final double TWOPERCENT = .02; 
        final double THREEPERCENT = .03; 
        final double FIVEPERCENT = .05; 
        final double TENPERCENT = .10; 
        
        setTwoPercent(userDollars * TWOPERCENT);
        setThreePercent(userDollars * THREEPERCENT);
        setFivePercent(userDollars * FIVEPERCENT);
        setTenPercent(userDollars * TENPERCENT);
        
    }
    @Override
    public String toString() {
        return "CalculateInterest [userDollars="   userDollars   ", twoPercent="   twoPercent   ", threePercent="
                  threePercent   ", fivePercent="   fivePercent   ", tenPercent="   tenPercent   "]";
    }
    
    
}

my results:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>You earned interest</title>
</head>
<body>
<p>${userInterestRate.getUserDollar()} userDollar contains the following: <br />
${userCoinPouch.getTwoPercent()} twoPercent <br />
${userCoinPouch.getThreePercent()} threePercent <br />
${userCoinPouch.getFivePercent()} fivePercent  <br />
${userCoinPouch.getTenPercent()} tenPercent <br />
</p>
<a href="interestIndex.jsp">Select another interest percentage</a>
</body>
</html>

my pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>coinconverter</groupId>
  <artifactId>coinconverter</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>CoinConverter</name>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>17</release>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.3</version>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
    </dependency>
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
  </dependencies>
</project>

CodePudding user response:

  •  Tags:  
  • Related