Exception

coc·2023년 8월 25일
0

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.7.0.min.js"></script>
<style>
table,th,td{
	border:1px solid black;
	border-collapse:collapse;
	padding: 5px 10px;
}
input[type="text"]{
width: 100%;
}
</style>
</head>
<body>
	<!-- Joincontroller -->
	<form action= "join" method="post"><!-- 뭔가를 쓸떄는 post를 사용한다 -->
	<table>
	<tr>
		<th>ID</th>
		<td><input type = "text" name="id"/></td>
	</tr>
	<tr>
		<th>PW</th>
		<td><input type = "text" name="pw"/></td>
	</tr>
	<tr>
		<th>AGE</th>
		<td><input type = "text" name="age"/></td>
	</tr>
	<tr>
		<th>취미(2개)</th>
		
		<td>
		<input type = "checkbox" name="hobby" value ="sports"/>스포츠
		<input type = "checkbox" name="hobby" value ="movie"/>영화
		<input type = "checkbox" name="hobby" value ="game"/>게임
		<input type = "checkbox" name="hobby" value ="finshing"/>낚시
		
		</td>
		
	</tr>
	<tr>
		<th>성별</th>
		<td>
		<input type = "radio" name="gender" value=""/>남자
		&nbsp;&nbsp;&nbsp;&nbsp;
		<input type = "radio" name="gender" value=""/>여자
		</td>
	</tr>
	<tr>
		<th colspan ="2"><button>가입</button></th>	
	</tr>
	</table>
	</form>
</body>
<script>


</script>
</html>

Joinmodel

package kr.co.gudi.model;

public class Joinmodel {

	public boolean agecheck(String age) {
		//20세 이상인지 체크하기 위해서는 숫자여야 한다
		//500에러가뜸
		//java.lang.NumberFormatException :숫자 형태가 아닌 문자열을 숫자로 변환 하려고 할때 발생
		//"12" -> 12,"ㅁㄴㅇ" -> ? 숫자로 바꿀수 없기 때문에 위에 처럼 뜸
		int n = Integer.parseInt(age);
		return n<20 ? false:true;
		
		
	}

	public int registHobby(String[] hobby) {
		
		int cnt = hobby.length; //취미를 몇개 선택했는지 배열 크기를 반환
		//hobby 에 있던 취미를 list 라는 배열에 저장한다
		String[] list = new String[2];
		for (int i = 0; i < hobby.length; i++) {
			//java.lang.ArrayIndexOutOfBoundsException 아웃 오브 바운드는 우리가 수용할수 있는 범위
			//java.lang.ArrayIndexOutOfBoundsException: 배열의 크기보다 더 많은 갯수의 값이 들어왔을때
			list[i] = hobby[i]; // 0번인덱스를 list에 0번인덱스 투입
		}
		
		
		return cnt;
	}

}

joincontroller

package kr.co.gudi.controller;

import java.io.IOException;

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;

import kr.co.gudi.model.Joinmodel;

@WebServlet("/join")
public class JoinController extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		req.setCharacterEncoding("UTF-8");
		String id = req.getParameter("id"); //get 파라미터로 받아오기
		String pw = req.getParameter("pw");
		String age = req.getParameter("age");//20세 이상만 가입 가능 
		String[] hobby = req.getParameterValues("hobby");//취미 2개 등록
		String gender = req.getParameter("gender");//여성만 가입 가능
		
		//java.lang.NullPointerException :null인 데이터에 무언가 하려고 했을때(제일 중요)
		System.out.println(hobby); //consol위에 null혼자  있음 그게 hobby다 
		System.out.println(id+"/"+pw+"/"+age+"/"+hobby.length+"/"+gender); // length를 안넣으면 문자열로 나옴
		
		Joinmodel model = new Joinmodel();
		String msg = "가입이 완료 되었습니다";
		
		if(model.agecheck(age) == false) {
			msg = "20세 이상만 가입이 가능 합니다.";
		}else if(model.registHobby(hobby)==0) {
			msg = "취미는 1개 이상 선택해 주세요";
		}

		System.out.println(msg);

	}

	
}
profile
시작

0개의 댓글