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
}
}
%>