error solution

500 에러 - [내부 서버 오류] NumberFormatException : Cannot parse null String

code_learner 2022. 2. 24. 13:27

JSP 간단한 계산기 만들기 실습 중 내부 서버 오류가 났다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%//======1.JAVA코드======
   int result=0;

   int num1=Integer.parseInt(request.getParameter("num1"));
   // 사용자(클라이언트,브라우저)가 "요청(request)"정보에서 "num1(파라미터)"값을 찾아야함!
   // 요청정보는 String타입임에 유의!
   int num2=Integer.parseInt(request.getParameter("num2"));
   String op=request.getParameter("op");
   if(op.equals("+")){
      result=num1+num2;
   }
   else if(op.equals("-")){
      result=num1-num2;
   }
   else if(op.equals("*")){
      result=num1*num2;
   }
   else{
      System.out.println("없는 연산자를 이용중입니다!");
      // Console은 로그확인용 view
   }
   
%>
//=======2. html=========
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h1>계산기</h1>
<hr>
<form method="post">
   <input type="text" name="num1">
   <select name="op">
      <option selected>+</option>
      <option>-</option>
      <option>*</option>
   </select>
   <input type="text" name="num2">
   <input type="submit" value="계산하기">
</form>
<hr>
계산결과 : <%= result %>

</body>
</html>

 

처음 페이지를 요청 할시 GET방식으로 요청을 하게 되는데 그 상태에서 num1, num2변수는 null값을 가지는데 parseint()처리를 하려하니 나타났다. 따라서 초기 로딩시 오류를 방지하기 위해서 JAVA코드에 분기처리를 하여 해결하였다.

<%
   int result=0;

   // 초기로딩시 오류방지
   if(request.getMethod().equals("POST")){
   int num1=Integer.parseInt(request.getParameter("num1"));
   // 사용자(클라이언트,브라우저)가 "요청(request)"정보에서 "num1(파라미터)"값을 찾아야함!
   // 요청정보는 String타입임에 유의!
   int num2=Integer.parseInt(request.getParameter("num2"));
   String op=request.getParameter("op");
   if(op.equals("+")){
      result=num1+num2;
   }
   else if(op.equals("-")){
      result=num1-num2;
   }
   else if(op.equals("*")){
      result=num1*num2;
   }
   else{
      System.out.println("없는 연산자를 이용중입니다!");
      // Console은 로그확인용 view
   }
   }
%>