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>

 

 


결과 화면

버튼 누르면 - 데이터 테이블 출력