Language/html, css
0528.Member jpro
생각하는 감쟈🥔
2024. 5. 28. 20:16
MemberVO >> MemberDao >> MemberService >> MemberController
MemberVO
package kr.or.ddit.member.vo;
public class MemberVO {
private String mem_id;
private String mem_pass;
private String mem_name;
private String mem_bir;
private String mem_zip;
private String mem_add1;
private String mem_add2;
private String mem_hp;
private String mem_mail;
public String getMem_id() {
return mem_id;
}
public void setMem_id(String mem_id) {
this.mem_id = mem_id;
}
public String getMem_pass() {
return mem_pass;
}
public void setMem_pass(String mem_pass) {
this.mem_pass = mem_pass;
}
public String getMem_name() {
return mem_name;
}
public void setMem_name(String mem_name) {
this.mem_name = mem_name;
}
public String getMem_bir() {
return mem_bir;
}
public void setMem_bir(String mem_bir) {
this.mem_bir = mem_bir;
}
public String getMem_zip() {
return mem_zip;
}
public void setMem_zip(String mem_zip) {
this.mem_zip = mem_zip;
}
public String getMem_add1() {
return mem_add1;
}
public void setMem_add1(String mem_add1) {
this.mem_add1 = mem_add1;
}
public String getMem_add2() {
return mem_add2;
}
public void setMem_add2(String mem_add2) {
this.mem_add2 = mem_add2;
}
public String getMem_hp() {
return mem_hp;
}
public void setMem_hp(String mem_hp) {
this.mem_hp = mem_hp;
}
public String getMem_mail() {
return mem_mail;
}
public void setMem_mail(String mem_mail) {
this.mem_mail = mem_mail;
}
}
SQL 데이터베이스에서 private로 변수 가져오고
getter setter 추가해주기
MemberDao
IMemberDao / MemberDaoImple
IMemberDao ( interpace)
package kr.or.ddit.member.dao;
import java.util.List;
import kr.or.ddit.member.vo.MemberVO;
public interface IMemberDao {
// 매소드 선언
public List<MemberVO> getAllMember();
}
MemberDaoImple
파일 만들 때
인터페이스 >> add 후 IMemberDao인터페이스 추가
package kr.or.ddit.member.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import kr.or.ddit.member.vo.MemberVO;
import kr.or.ddit.mybatis.config.MyBatisUtil;
public class MemberDaoImple implements IMemberDao {
//sqlSession >> mybatis.util.getsqlsession에서 가지고옴
// 1. 생성자
private MemberDaoImple() { }
// 2. 싱글톤 패턴 사용 - 자기 자신의 객체를 생성해서 리턴 - service에서 사용
// 2-1 변수 선언
private static IMemberDao dao;
// 2-2 생성해서 리턴
public static IMemberDao getDao() {
if(dao == null) dao = new MemberDaoImple();
return dao;
}
@Override
public List<MemberVO> getAllMember() {
// 1. 리턴할 변수를 선언
List<MemberVO> list = null;
SqlSession session = null;
try {
session = MyBatisUtil.getSqlSession();
//2. 실행 - db - mybatis mapper파이에 sql문을 실행 - namespace.id이름
list = session.selectList("member.getAllMember");
} catch (Exception e) {
e.printStackTrace();
}finally {
session.commit();
session.close();
}
// 3. 리턴
return list;
}
}
Memberservice
IMemberService / MemberServiceImple
IMemberService (interface)
package kr.or.ddit.member.service;
import java.util.List;
import kr.or.ddit.member.vo.MemberVO;
public interface IMemberService {
// 매소드 선언
public List<MemberVO> getAllMember();
}
MemberServiceImple
package kr.or.ddit.member.service;
import java.util.List;
import kr.or.ddit.member.dao.IMemberDao;
import kr.or.ddit.member.dao.MemberDaoImple;
import kr.or.ddit.member.vo.MemberVO;
public class MemberServiceImple implements IMemberService {
// 1. dao객체 필요
private IMemberDao dao;
private MemberServiceImple() {
dao = MemberDaoImple.getDao();
}
// 2. 싱글톤 패턴 - 자신의 객체를 생성 해서 리턴 - controller에서 사용
// 2-1. 변수 선언
private static IMemberService service;
// 2-2. 생성- 리턴
public static IMemberService getService() {
if(service == null) service = new MemberServiceImple();
return service;
}
@Override
public List<MemberVO> getAllMember() {
// 1. 리턴할 변수 선언
List<MemberVO> list = null;
// 2. 실행 - dao메소드 호출
list = dao.getAllMember();
// 3. 리턴 - controller로 리턴한다
return list;
}
}
MemberList
package kr.or.ddit.member.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kr.or.ddit.member.service.IMemberService;
import kr.or.ddit.member.service.MemberServiceImple;
import kr.or.ddit.member.vo.MemberVO;
@WebServlet("/MemberList.do")
public class MemberList extends HttpServlet {
private static final long serialVersionUID = 1L;
public MemberList() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 클라이언트에서 전송 시 데이터가 받기 - id, pass
// service객체 얻기
// 서비스 객체를 새로 만들수 없음 new는 안 됨 (매소드 호출)
IMemberService service = MemberServiceImple.getService();
//service메소드 호출 - 결과값을 받는다 -
List<MemberVO> list = service.getAllMember();
// list를 출력 - view페이지로 이동 - jsp페이지
// list를 출력이 아닌 json데이터를 생성
// list결과값을 jsp페이지에서도 알아야 한다
// list 결과값을 현재 controller와 view페이지 - jsp
// 공유하는 방법 - request에 저장 - forward()매소드로 호출한다
request.setAttribute("listvalue", list);
request.getRequestDispatcher("/member_view/memberList.jsp").forward(request, response);
}
}
memberList.jsp
<%@page import="kr.or.ddit.member.vo.MemberVO"%>
<%@page import="java.util.List" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
// controller에서 request에 저장한 데이터 꺼내기
List<MemberVO> list = (List<MemberVO>)request.getAttribute("listvalue");
%>
[
<%
for(int i=0; i<list.size(); i++){
MemberVO vo = list.get(i);
if(i > 0) out.print(",");
%>
{
"mem_id" : "<%= vo.getMem_id() %>",
"mem_name" : "<%= vo.getMem_name() %>",
"mem_mail" : "<%= vo.getMem_mail() %>",
"mem_hp" : "<%= vo.getMem_hp() %>"
}
<%
}
%>
]
member.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/public.css">
<script src ="../js/jquery-3.7.1.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
function getMember(url){
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('get', url);
xhr.onload = () => resolve(xhr.responseText);
xhr.onerror = () => reject(xhr.status);
xhr.send()
})
}
$(() => {
$('#member').on('click', function(){
getMember("/jqpro/MemberList.do")
.then(text => {
console.log("1차 결과", text)
return JSON.parse(text);
})
.then(data => {
let code = `<table class="table table-hover" border='1'>
<tr>
<td>ID</td>
<td>이름</td>
<td>메일</td>
<td>전호</td>
</tr>`;
$.each(data, function(i,v){
code += `<tr>
<td>${v.mem_id}</td>
<td>${v.mem_name}</td>
<td>${v.mem_mail}</td>
<td>${v.mem_hp}</td>
</tr>`;
})
code += `</table>`;
$('#r1').html(code);
})
})
})
</script>
</head>
<body>
<div class="box">
<h3> </h3>
<input type="button" value="memberList" id="member">
<br><br>
<div id="r1"></div>
</div>
</body>
</html>
결과 화면
버튼 누르면 - 데이터 테이블 출력