프로그래밍

[웹] JSP 예제(MySQL과 연동, 웹 브라우저 출력)(2)

RainIron 2021. 6. 23. 15:36
반응형

※ 개요

요구사항 4) 멤버 상세정보 창에서 삭제 기능, 목록창으로 가는 기능을 가진 버튼을 제작

요구사항 5) 멤버 추가하기


요구사항 4) 멤버 상세정보 창에서 삭제 기능, 목록창으로 가는 기능을 가진 버튼을 제작

* Member.jsp

- 삭제, 목록 버튼 추가

<div>
		<button type="button" onclick="edit(<%=tmp.getNum()%>)">수정</button>
		<button type="button" onclick="del(<%=tmp.getNum()%>)">삭제</button>
		<button type="button" onclick="list()">목록</button>
</div>

- script에 삭제, 목록 함수 추가

<script>
			function edit(num){
				location.href="/MyWeb/mem?cmd=edit&num="+num;
			}
			function del(num){
				if(confirm(num+'번 회원정보를 정말 삭제하시겠어요?')){
					location.href="/MyWeb/mem?cmd=delete&num="+num;
				}			
            }
			function list(){
				location.href="/MyWeb/mem?cmd=list";
			}
</script>

 

* MemDAO.java: 삭제 함수 추가

public void delete(int num) {
    	conn = getConn();
		
		String sql = "DELETE FROM member WHERE num = ?;";
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, num);

			int n = pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} 
    }

 

* MemSvc.java: 조건문에 삭제 명령 추가

else if(cmd.equals("delete")) {
			int num = Integer.parseInt(request.getParameter("num"));
			MemDAO dao = new MemDAO();
			dao.delete(num);
			request.setAttribute("memlist", getList());
			request.setAttribute("deleted", true);
			return "/MemList.jsp";
		}

 

삭제 버튼을 누른 화면


요구사항 5) 멤버 추가하기

* List 페이지에 버튼 추가하기

- MemList.jsp

<button type="button" onclick="location.href='MemberAdd.jsp'">새로운 인원 추가하기</button>

* 버튼을 누르면 이동할 화면 제작하기

- MemberAdd.jsp

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>New Member Insert</title>
	<script
	  src="https://code.jquery.com/jquery-3.6.0.min.js"
	  integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
	  crossorigin="anonymous">
	</script>
	<style>
		div#container{width:fit-content; border: 1px solid black; margin: 0px auto;
			padding:10px; text-align: center;}
		form label{display: inline-block; width: 50px; margin-right: 10px; text-align: right;}
		button{margin-top: 10px;}
	</style>
	<script type = "text/javascript">
		function formCheck(f){
			if(f.name.value == ''){
				alert("Name 항목은 필수 입력 사항입니다.");
				return false;
			}
			else if(f.phone.value == ''){
				alert("Phone 항목은 필수 입력 사항입니다.");
				return false;
			}
			else if(f.email.value == ''){
				alert("Email 항목은 필수 입력 사항입니다.");
				return false;
			}
			return true;
		}
	</script>
</head>
<body>
	<div>
		<h3>[회원정보 추가]</h3>
		<form action = "/MyWeb/mem" method = "post" onsubmit="return formCheck(this)">
	  		<input type = "hidden" name = "cmd" value = "add">
	  		<div>
	  			<label>Name</label><input type = "text" name = "name" id = "name" required></input>
	  		</div>
	  		<div>
	  			<label>Phone</label><input type = "text" name = "phone" id = "phone" required></input>
	  		</div>
	  		<div>
	  			<label>Email</label><input type = "text" name = "email" id = "email" required></input>
	  		</div>
	  		<button type = "submit">저장</button> <button type = "reset">취소</button>
		</form>
	</div>
</body>
</html>

폼에서 입력한 내용이 전달되도록 하는 기능은 form 안에 있는 input tag 중 hidden 속성이다.

<input type = "hidden" name = "cmd" value = "add">

 

빈 칸일 경우 재 입력하는 함수가 스크립트 안에 포함되어 있다. onsubmit 속성으로 리턴값을 지정해 동작을 제어할 수 있다.

<script type = "text/javascript">
		function formCheck(f){
			if(f.name.value == ''){
				alert("Name 항목은 필수 입력 사항입니다.");
				return false;
			}
			else if(f.phone.value == ''){
				alert("Phone 항목은 필수 입력 사항입니다.");
				return false;
			}
			else if(f.email.value == ''){
				alert("Email 항목은 필수 입력 사항입니다.");
				return false;
			}
			return true;
		}
</script>
    
...

<form action = "/MyWeb/mem" method = "post" onsubmit="return formCheck(this)">

 

* 폼에서 입력한 내용을 DB에 반영하기

- MemSvc.java

else if(cmd.equals("add")) {
			String name = request.getParameter("name");
			String phone = request.getParameter("phone");
			String email = request.getParameter("email");
			MemVO newMem = new MemVO();
			newMem.setName(name);
			newMem.setPhone(phone);
			newMem.setEmail(email);
			
			new MemDAO().insert(newMem);
			request.setAttribute("memlist", getList());
			return "/MemList.jsp";
		}

 

- MemDAO.java

public void insert(MemVO mem) {
    	conn = getConn();
		String sql = "INSERT INTO member(name, phone, email) VALUES (?, ?, ?);";
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, mem.getName());
			pstmt.setString(2, mem.getPhone());
			pstmt.setString(3, mem.getEmail());
			
			int n = pstmt.executeUpdate();	
		} catch (SQLException e) {
			e.printStackTrace();
		}
    }

정보 입력
추가 완료

 

반응형