Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발 일기

Servlet 활용해서 회원가입 받기! (feat. HTML의 form으로 데이터를 POST 방식으로 넘겨주기) 본문

Servlet & JSP

Servlet 활용해서 회원가입 받기! (feat. HTML의 form으로 데이터를 POST 방식으로 넘겨주기)

개발 일기 2021. 8. 9. 23:46

안녕하세요.

 

오늘은 html의 form태그를 활용하여 직접 회원 가입을 받아보는 행위를 할 수 있도록

html 코드와 java servlet 코드를 구현해 보겠습니다. (html 코드의 css는 수업 시간에 받은 자료를 활용했습니다!!)

 

 

 

1. HTML Form 태그로 회원 가입 시 수집 데이터 폼 만들기

<html>
<head>
<title>회원 가입</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
	<h3 align="center">◆◆◆ 회원가입 ◆◆◆</h3>
	<form name="join" method="POST" action="join.do">
		<table bgcolor="black" cellspacing="1" cellpadding="5" align="center">
			<tr id="first-tr">
				<th bgcolor="44ff44"><font size="2">아이디</font></th>
				<td bgcolor="white" width="300"><input type="text" size="10"
					name="id" class="TXTFLD"></td>
			</tr>
			<tr>
				<th bgcolor="44ff44"><font size="2">비밀번호</font></th>
				<td bgcolor="white" width="300"><input type="password"
					size="10" name="pass" class="TXTFLD1"></td>
			</tr>
			<tr>
				<th bgcolor="44ff44"><font size="2">비밀번호확인</font></th>
				<td bgcolor="white" width="300"><input type="password"
					size="10" name="repass" class="TXTFLD"></td>
			</tr>
			<tr>
				<th bgcolor="44ff44"><font size="2">이름</font></th>
				<td bgcolor="white" width="300"><input type="text" size="10"
					name="name" class="TXTFLD"></td>
			</tr>
			<tr>
				<th bgcolor="44ff44"><font size="2">주소</font></th>
				<td bgcolor="white" width="300"><input type="text" size="30"
					name="addr" class="TXTFLD"></td>
			</tr>
			<tr>
				<th bgcolor="44ff44"><font size="2">성별</font></th>
				<td bgcolor="white" width="300">
				<input type="radio" name="gender" value="M">
				<font size="2">남자</font> 
				<input type="radio" name="gender" value="F" checked="checked">
				<font size="2">여자</font>
				</td>
			</tr>
			<tr>
				<th bgcolor="44ff44"><font size="2">직업</font></th>
				<td bgcolor="white" width="300">
				<select name="job" size="1">
						<option value="학생">학생</option>
						<option value="주부">주부</option>
						<option value="회사원">회사원</option>
						<option value="사장">사장</option>
						<option value="기타">기타</option>
				</select>
				</td>
			</tr>
			<tr>
				<th bgcolor="44ff44"><font size="2">취미</font></th>
				<td bgcolor="white" width="300">
				<input type="checkbox" name="hobby" checked="checked" value="낮잠">낮잠
				<input type="checkbox" name="hobby" value="연애">연애
				<input type="checkbox" name="hobby" value="운동">운동 
				<input type="checkbox" name="hobby" value="사이클">사이클 
				<input type="checkbox" name="hobby" value="기타">기타
				</td>
			</tr>
			<tr>
			<th colspan="2" bgcolor="ff8888">
				<input type="submit" value="가입">
				<input type="reset" value="취소"></th>
			</tr>
		</table>
	</form>
</body>
</html>

-- 아이디, 비밀번호, 비밀번호확인, 이름, 주소, 성별, 직업, 취미 항목 만들기

 

 

화면 출력 시 UI

-- form을 활용하여 table을 구성

-- 성별은 한 가지만 선택이 가능한 type: radio 버튼, 취미는 여러가지 선택이 가능한 type: checkbox를 활용

-- 성별, 직업, 취미 등 옵션에 대해서는 디폴트값(최초값?고정값?)을 미리 선택 해 놓을 수 있다. (ex 여자, 낮잠)

 

 

2. 데이터를 받을 Servlet 구성

package com.itwill.servlet;

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;

/**
 * Servlet implementation class JoinServlet
 */
@WebServlet("/join.do")
public class JoinServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.sendRedirect("05-03.form.html");
	
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		request.setCharacterEncoding("UTF-8");
			
		String id = request.getParameter("id");
		String pass = request.getParameter("pass");
		String name = request.getParameter("name");
		String addr = request.getParameter("addr");
		String gender = request.getParameter("gender");
		String job = request.getParameter("job");
		//String hobby = request.getParameter("hobby");
		String[] hobbies = request.getParameterValues("hobby");
				
		out.println("<h1>가입정보</h1><hr>");
		out.println("<ul>");
		out.println("<li>아이디:"+id+"</li>");
		out.println("<li>패스워드:"+pass+"</li>");
		out.println("<li>이름:"+name+"</li>");
		out.println("<li>주소:"+addr+"</li>");
		out.println("<li>성별:"+gender+"</li>");
		out.println("<li>직업:"+job+"</li>");
		out.println("<li>취미:");
		out.println("<ol>");
		for(String hobby:hobbies) {
			out.println("<li>"+hobby+"</li>");
		}
		out.println("</ol>");
		
		out.println("</ul>");
	
	}

}

-- doGet 메소드 재정의하여 get방식으로 넘어올 경우 회원가입 화면으로 sendRedirect함

-- doPost 메소드를 활용하여 post방식으로 데이터를 받음

-- post로 넘어오는 데이터(파라미터)를 받아서 화면에 출력함

 

 

회원 가입 예시

 

회원가입 완료 시 출력 화면

 

 

현재는 DB와 연결지어 하지 않아서 수집되는 DB를 당장 어찌 할 순 없으나

앞으로 JSP와 자바스크립트를 배워서 데이터의 유효성 검사를하고 DB와 연결시켜 바로 데이터서버에 쌓는 액션까지

하는 코딩을 해보겠습니다!!

 

감사합니다.

 

Comments