Everything has an expiration date
[AWS] 20240312 ~ 13 [수업내용 정리] 본문
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>