Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
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
Archives
Today
Total
관리 메뉴

Everything has an expiration date

[AWS] 20240312 ~ 13 [수업내용 정리] 본문

카테고리 없음

[AWS] 20240312 ~ 13 [수업내용 정리]

Jelly-fish 2024. 3. 13. 11:08

AWS Study


MvcMybatisMysql


실행 결과 스크린샷

 

0123456
회원 정보 관리 실행 스크린샷

 


com.test.mybatis

MemberDTO.java
package com.test.mybatis;

public class MemberDTO
{
	// 주요 속성 구성
	private String id, pw, name, tel, email;

	// getter / setter 구성
	public String getId()
	{
		return id;
	}

	public void setId(String id)
	{
		this.id = id;
	}

	public String getPw()
	{
		return pw;
	}

	public void setPw(String pw)
	{
		this.pw = pw;
	}

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public String getTel()
	{
		return tel;
	}

	public void setTel(String tel)
	{
		this.tel = tel;
	}

	public String getEmail()
	{
		return email;
	}

	public void setEmail(String email)
	{
		this.email = email;
	}
	
	
}

com.test.mybatis

IMemberDAO.java
/*======================
    IMemberDAO.java
    - 인터페이스
========================*/

package com.test.mybatis;

import java.util.ArrayList;

// SampleDAO.xml 에 작성할 여러 쿼리문들에 대한 매핑을 처리하기 위해
// 인터페이스를 구성하는 것이다.
public interface IMemberDAO
{
	public ArrayList<MemberDTO> list();
	public int count();
	public int add(MemberDTO m);
	public int remove(String id);
	public MemberDTO search(String id);
	public int modify(MemberDTO m);
}

com.test.mybatis.mapper

MemberDAO.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.mybatis.IMemberDAO">

	<select id="list" resultType="com.test.mybatis.MemberDTO">
		SELECT ID, NAME, TEL, EMAIL
		FROM TBL_MEMBERLIST
	</select>
	

	<select id="count" resultType="java.lang.Integer">
		SELECT COUNT(*) AS COUNT
		FROM TBL_MEMBERLIST
	</select>

	
	<insert id="add">
		INSERT INTO TBL_MEMBERLIST(ID, PW, NAME, TEL, EMAIL)
		VALUES(#{id}, #{pw}, #{name}, #{tel}, #{email})
	</insert>
	
	
	<delete id="remove">
		DELETE
		FROM TBL_MEMBERLIST
		WHERE ID=#{id}
	</delete>
	
	
	<select id="search" resultType="com.test.mybatis.MemberDTO">
		SELECT ID, NAME, TEL, EMAIL, PW
		FROM TBL_MEMBERLIST
		WHERE ID= #{id}
	</select>
	
	
	<update id="modify">
		UPDATE TBL_MEMBERLIST
		SET PW= #{id}, NAME= #{name}, TEL= #{tel}, EMAIL= #{email}
		WHERE ID= #{id}
	</update>
	
	
	
</mapper>

com.test.mybatis

MemberController.java
/*========================
    MemberController.java
    - 컨트롤러 객체
==========================*/

package com.test.mybatis;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class MemberController
{
	@Autowired
	private SqlSession sqlSession;
	
	
	@RequestMapping(value="/memberlist.action", method=RequestMethod.GET)
	public String memberList(ModelMap model)
	{
		IMemberDAO dao = sqlSession.getMapper(IMemberDAO.class);
		
		model.addAttribute("count", dao.count());
		model.addAttribute("list", dao.list());
		
		return "/WEB-INF/view/MemberList.jsp";
		
	}
	
	
	@RequestMapping(value = "/memberinsert.action", method = RequestMethod.POST)
	public String memberInsert(MemberDTO m)
	{
		IMemberDAO dao = sqlSession.getMapper(IMemberDAO.class);
		
		dao.add(m);
		
		return "redirect:memberlist.action";
	}
	
	
	@RequestMapping(value = "/memberdelete.action", method = RequestMethod.GET)
	public String memberDelete(String id)
	{
		IMemberDAO dao = sqlSession.getMapper(IMemberDAO.class);
		
		dao.remove(id);
		
		return "redirect:memberlist.action";
	}
	
	
	@RequestMapping(value = "/memberupdateform.action", method = RequestMethod.GET)
	public String memberUpdateForm(ModelMap model, String id)
	{
		IMemberDAO dao = sqlSession.getMapper(IMemberDAO.class);
		
		model.addAttribute("member", dao.search(id));
		
		return "/WEB-INF/view/MemberUpdateForm.jsp";
	}
	
	
	
	@RequestMapping(value = "/memberupdate.action", method = RequestMethod.POST)
	public String memberUpdate(MemberDTO m)
	{
		IMemberDAO dao = sqlSession.getMapper(IMemberDAO.class);
		
		System.out.println(m.getId() + " " + m.getName() + " " + m.getTel() + " " + m.getEmail());
	
		
		dao.modify(m);
		
		return "redirect:memberlist.action";
	}
	
}

 

WebContent / WEB-INF / view

MemberList.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>MemberList.jsp</title>

<!-- 기본 CSS -->
<link rel="stylesheet" type="text/css" href="<%=cp %>/css/main.css">

<!-- 부트스트랩 적용 CSS -->
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

<!-- 부트스트랩 부가 테마 CSS -->
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">

<!-- 제이쿼리 적용 JS -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

<!-- 부트스트랩 관련 스크립트 적용 JS -->
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>

<!-- 삭제 기능 처리 -->
<script type="text/javascript">

	$(function()
	{
		$(".btnDelete").click(function()
		{
			// 테스트
			//alert("확인~!!!");
			//alert($(this).val());
			
			if (confirm("현재 선택한 데이터를 정말 삭제하시겠습니까?"))
			{
				$(location).attr("href", "memberdelete.action?id=" + $(this).val());
			}
			
		});
		
		$(".btnUpdate").click(function()
		{
			$(location).attr("href", "memberupdateform.action?id=" + $(this).val());
					
		});
	});

</script>


</head>
<body>

<div>
	<h1>회원 정보</h1>
	<hr>
</div>

<div class="container">
	<div class="panel-group">
		<div class="panel panel-default">
		
			<div class="panel-heading" id="title">
				회원 정보 입력
			</div>
			
			<div class="panel-body">
				<form role="form" action="memberinsert.action" method="post">
					
					<div class="form-group">
						<label for="id">
							ID : 
						</label>
						<input type="text" class="form-control" id="id" name="id">
					</div>
					
					<div class="form-group">
						<label for="pw">
							PW : 
						</label>
						<input type="password" class="form-control" id="pw" name="pw">
					</div>
					
					<div class="form-group">
						<label for="name">
							NAME : 
						</label>
						<input type="text" class="form-control" id="name" name="name">
					</div>
					
					<div class="form-group">
						<label for="tel">
							TELEPHONE : 
						</label>
						<input type="tel" class="form-control" id="tel" name="tel">
					</div>
					
					<div class="form-group">
						<label for="email">
							E-MAIL : 
						</label>
						<input type="email" class="form-control" id="email" name="email">
					</div>
					
					<button type="submit" class="btn btn-default btn-sm">SUBMIT</button>
					<button type="button" class="btn btn-default btn-sm btnCancel">CANCEL</button>
					
				</form>
			</div>
		
		</div><!-- close .panel .panel-default -->
		
		<div class="panel panel-default">
			
			<div class="panel-heading">
				회원 정보 출력
			</div>
			
			<div class="panel-body">
				<table class="table">
					<thead>
						<tr>
							<th>ID</th>
							<th>NAME</th>
							<th>TEL</th>
							<th>EMAIL</th>
							<th>수정 / 삭제</th>
						</tr>
					</thead>
					<tbody>
						<!-- 
						<tr>
							<td>1</td>
							<td>박가영</td>
							<td>010-2234-5678</td>
							<td>
								<button type="button" class="btn btn-default btn-xs btnUpdate">수정</button>
								<button type="button" class="btn btn-default btn-xs btnDelete">삭제</button>
							</td>
						</tr>
						-->
						<c:forEach var="member" items="${list }">
						<tr>
							<td>${member.id }</td>
							<td>${member.name }</td>
							<td>${member.tel }</td>
							<td>${member.email }</td>
							<td>
								<button type="button" class="btn btn-default btn-xs btnUpdate"
								value="${member.id }">수정</button>
								<button type="button" class="btn btn-default btn-xs btnDelete"
								value="${member.id }">삭제</button>
							</td>
						</tr>
						</c:forEach>
					</tbody>
				</table>
				
				<button type="button" class="btn btn-default btn-sm" role="badgeFrame">
					<!-- Count <span class="badge" role="badge">1</span> -->
					Count <span class="badge" role="badge">${count }</span>
				</button>
			
			</div>
			
		</div><!-- close .panel .panel-default -->
		
	</div>
</div>



</body>
</html>

WebContent / WEB-INF / view

MemberUpdateForm.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>MemberUpdateForm.jsp</title>

<!-- 기본 CSS -->
<link rel="stylesheet" type="text/css" href="<%=cp %>/css/main.css">

<!-- 부트스트랩 적용 CSS -->
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

<!-- 부트스트랩 부가 테마 CSS -->
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">

<!-- 제이쿼리 적용 JS -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>

<!-- 부트스트랩 관련 스크립트 적용 JS -->
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>

</head>
<body>

<div>
	<h1>회원 정보</h1>
	<hr>
</div>

<div class="container">
	<div class="panel-group">
		<div class="panel panel-default">
		
			<div class="panel-heading" id="title">
				회원 정보 수정
			</div>
			
			<div class="panel-body">
				<form role="form" action="memberupdate.action" method="post">
					
					<div class="form-group">
						
						ID : <span style="color: gray; font-weight: bold;">${member.id }</span>
						<input type="hidden" id="id" name="id" value="${member.id }">
						
					</div>
					
					<div class="form-group">
						<label for="pw">
							PW : 
						</label>
						<input type="password" class="form-control" id="pw" name="pw"
						value="${member.pw }">
					</div>
					
					<div class="form-group">
						<label for="name">
							NAME : 
						</label>
						<input type="text" class="form-control" id="name" name="name"
						value="${member.name }">
					</div>
					
					<div class="form-group">
						<label for="tel">
							TELEPHONE : 
						</label>
						<input type="tel" class="form-control" id="tel" name="tel"
						value="${member.tel }">
					</div>
					
					<div class="form-group">
						<label for="email">
							E-MAIL : 
						</label>
						<input type="email" class="form-control" id="email" name="email"
						value="${member.email }">
					</div>
					
					<button type="submit" class="btn btn-default btn-sm">SUBMIT</button>
					<button type="button" class="btn btn-default btn-sm btnCancel">CANCEL</button>
					
				</form>
			</div>
		
		</div><!-- close .panel .panel-default -->
		
	</div>
</div>



</body>
</html>