[JSP] 회원가입 프로세스

yeju·2023년 6월 15일
0

JSP

목록 보기
2/7

JSP를 사용해 회원 정보 저장/출력/수정/삭제(CRUD) 기능 구현하기


📝 메인 페이지 작성

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>회원 관리 프로그램</title>
</head>
<body>
	<% 
		try {
			String name = request.getParameter("name");
			if(!(name.equals(""))) {
	%>
			<p>안녕하세요, <%= name %>!</p>
	<%
			}
		} 
		catch(Exception e) {}
	%>
	<h1>회원 관리 프로그램</h1>
	<p>
		<a href="input.jsp">회원가입</a>
	</p>
	<p>
		<a href="printer.jsp">회원출력</a>
	</p>
	<p>
		<a href="search.jsp">회원검색</a>
	</p>
	<p>
		<a href="update.jsp">회원정보 수정</a>
	</p>
	<p>
		<a href="delete.jsp">회원삭제</a>
	</p>
</body>
</html>


📝 회원가입 정보 저장하기 (Create)

1. 내용을 입력받을 JSP 페이지 작성 (webapp 폴더 내)

파일명 : input.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>회원가입</title>
</head>
<body>
	<h1>회원가입 (Create)</h1>
	<form action="process.jsp" >
		이름 : <input type="text" name="name" required><br>
		나이 : <input type="text" name="age" required><br>
		<input type="submit" value="확인">
		<!-- submit 하면 input에 입력된 값을 파라미터로 action에 연결된 페이지에 전달 -->
	</form>
</body>
</html>

form 태그의 action 속성에 실행할 페이지 process.jsp 를 연결한다.
제출 시 input 에 입력된 값은 name 속성값을 변수명으로 가진 파라미터가 되어 연결된 페이지로 전달된다.

3. 데이터를 저장할 객체의 클래스 작성 (java 폴더 내)

package dto;

public class Member {

	// DTO : 데이터 전달, 보관을 위한 객체 (=도메인 객체)
	// 변수, 생성자, getter/setter 메서드 필요
	
	private String name;
	private String age;
	
	public Member() {
		
	}
	public Member(String name, String age) {
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	
}
package dao;

import java.util.ArrayList;
import dto.Member;

public class Database {
	// DAO : 도메인 객체를 저장하는 배열 객체
    
	// Member 타입 객체만 저장하는 ArrayList 생성
	public static ArrayList<Member> arr = new ArrayList<Member>();
	// list는 하나만 필요하고
    // 다른 패키지에서 접근 가능해야 하므로 public static 처리
}

4. 입력된 내용을 처리할 JSP 페이지 작성 (webapp 폴더 내)

파일명 : process.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="dto.Member" %>
<%@ page import="dao.Database" %>
<%@ page import="java.util.ArrayList" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>회원가입</title>
</head>
<body>
	<% 
		// form 에서 입력된 값을 전달받음 (request 참조변수로 접근)
		String name = request.getParameter("name");
		String age = request.getParameter("age");
		
		// 데이터를 적절하게 받아와서 변수에 저장했는지 검증하기
		if(name.equals("") || age.equals("")) {
			out.println("데이터 전달 오류");
		}
		else {
			// 전달받은 데이터를 객체에 저장
			Member mb = new Member();
			mb.setName(name);
			mb.setAge(age);
			
			// 객체 리스트에 생성한 객체를 추가
			Database.arr.add(mb);
			
			// 추가하고 나면 특정 페이지로 돌아가기
			response.sendRedirect("main.jsp?name="+name);
		}
	%>
</body>
</html>

📝 회원 정보 출력하기 (Read)

1. 내용을 출력할 JSP 페이지 작성

파일명 : printer.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="dto.Member" %>
<%@ page import="dao.Database" %>
<%@ page import="java.util.ArrayList" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>회원정보 출력</title>
</head>
<body>
	<h1>회원정보 출력 (Read)</h1>
	<%
		// 회원 정보 객체가 저장된 Database.arr의 주소를 변수 tmp에 저장
		ArrayList<Member> tmp = Database.arr;
		
		//  get(idx) : ArrayList의 각 요소 반환해 해당 요소 데이터 가져오기
		for(int i=0; i<tmp.size(); i++) {
			Member mb = tmp.get(i); 
			
			String name = mb.getName();
			String age = mb.getAge();
	%>
		
		<!-- 자바 코드 중간에 html이 들어가야 하면
        스크립트 태그를 닫고 html 작성 후 다시 이어서 작성 -->
		<h3>회원정보</h3>
		<p>이름 : <%= name %></p>
		<p>나이 : <%= age %></p>
		
	<%}%>
	
	<a href="main.jsp">메인으로</a>
</body>
</html>
파일명 : search.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>회원정보 검색</title>
</head>
<body>
	<h1>회원정보 검색 (Search)</h1>
	<form action="search_process.jsp">
		<p>찾을 이름을 입력하세요 : <input type="text" name="name"></p>
		<input type="submit" value="확인">
	</form>
</body>
</html>
파일명 : search_process.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="dto.Member" %>
<%@ page import="dao.Database" %>
<%@ page import="java.util.ArrayList" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>회원정보 검색</title>
</head>
<body>
	<%
		String name = request.getParameter("name");
		String search;
		String age;
	
		// ArrayList 가져와 tmp에 담기
		ArrayList<Member> tmp = Database.arr;

		for(int i=0; i<tmp.size(); i++) {
			Member mb = tmp.get(i);
			// 요소의 이름을 search 변수에 대입
			search = mb.getName();
			
			// 입력받은 이름과 일치하는 이름을 가진 요소가 있는지 찾기
			if(search.equals(name)) {
				age = mb.getAge();
	%>		
			<!-- 요소가 있으면 이름, 나이 정보 출력 -->
			<p>이름 : <%= search %></p>
			<p>나이 : <%= age %></p>
	<%
			}
		}
	%>
	<a href="main.jsp">메인으로</a>
</body>
</html>

📝 회원 정보 수정하기 (Update)

파일명 : update.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>회원정보 수정</title>
</head>
<body>
	<h1>회원정보 수정 (Update)</h1>
	<form action="update_process.jsp">
		<p>찾을 이름을 입력하세요 : <input type="text" name="name"></p>
		<input type="submit" value="확인">
	</form>
</body>
</html>
파일명 : update_process.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="dto.Member" %>
<%@ page import="dao.Database" %>
<%@ page import="java.util.ArrayList" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>회원정보 수정</title>
</head>
<body>
	<%
		String name = request.getParameter("name");
		String search;
		String age;
	
		// ArrayList 가져와 tmp에 담기
		ArrayList<Member> tmp = Database.arr;

		for(int i=0; i<tmp.size(); i++) {
			Member mb = tmp.get(i);
			// 요소의 이름을 search 변수에 대입
			search = mb.getName();
			
			// 입력받은 이름과 일치하는 이름을 가진 요소가 있는지 찾기
			if(search.equals(name)) {
				age = mb.getAge();
	%>		
			<!-- 요소가 있으면 이름, 나이 정보 출력하고 수정할 수 있게 함(이름만) -->
			<form action="update_set.jsp">
				<p>이름 : <input type="text" value="<%= search %>" name="name" readonly></p>
				<p>나이 : <input type="text" value="<%= age %>" name="age"></p>
				<input type="submit" value="수정">
			</form>
	<%
			}
		}
	%>
</body>
</html>
파일명 : update_set.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="dto.Member" %>
<%@ page import="dao.Database" %>
<%@ page import="java.util.ArrayList" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>회원정보 수정</title>
</head>
<body>
	<%
		String name = request.getParameter("name");
		String age = request.getParameter("age");
		String search;
	
		// ArrayList 가져와 tmp에 담기
		ArrayList<Member> tmp = Database.arr;

		for(int i=0; i<tmp.size(); i++) {
			Member mb = tmp.get(i);
			// 요소의 이름을 search 변수에 대입
			search = mb.getName();
			
			// 입력받은 이름과 일치하는 이름을 가진 요소가 있는지 찾아
            // 나이를 바꾸고 tmp의 해당 요소 교체
			if(search.equals(name)) {
				mb.setAge(age);
				tmp.set(i,mb);
			}
		}
		
		response.sendRedirect("main.jsp");
	%>
</body>
</html>

📝 회원 삭제하기 (Delete)

파일명 : delete.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<h1>회원정보 삭제 (Delete)</h1>
	<form action="delete_process.jsp">
		<p>삭제할 이름을 입력하세요 : <input type="text" name="name"></p>
		<input type="submit" value="확인">
	</form>
</body>
</html>
파일명 : delete_process.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="dto.Member" %>
<%@ page import="dao.Database" %>
<%@ page import="java.util.ArrayList" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
		String name = request.getParameter("name");
		String search;
	
		// ArrayList 가져와 tmp에 담기
		ArrayList<Member> tmp = Database.arr;

		for(int i=0; i<tmp.size(); i++) {
			Member mb = tmp.get(i);

			search = mb.getName();
			
			// 입력받은 이름과 일치하는 이름을 가진 요소가 있는지 찾고 해당 요소 삭제
			if(search.equals(name)) {
				tmp.remove(i);
	%>		
			<p>삭제되었습니다.</p>
	<%
			// 삭제 후 바로 다음 요소를 검증하기 위해 한번 더 같은 인덱스로 만들기
			// ex) tmp 0번 요소가 삭제되면 뒤의 인덱스가 하나씩 줄어서
            // 다음 반복 때 2번 요소부터 검증하게 됨
			i--;
			}
		}
	%>
	
	<a href="main.jsp">메인으로</a>
</body>
</html>
profile
🌱

0개의 댓글