MemberServlet
package kr.or.ddit.member.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
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.MemberServiceImpl;
import kr.or.ddit.member.vo.MemberVO;
/**
* Servlet implementation class MemberServlet
*/
@WebServlet("/MemberServlet")
public class MemberServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MemberServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//0. 클라이언트 요청시 전송되는 데이터를 받는다
//1. service 객체를 얻는다
IMemberService service =
MemberServiceImpl.getMemberService();
//2. service 메소드 호출 - 결과 : List<MemberVO>
List<MemberVO> list = service.selectAll();
//3.수행결과를 request에 저장
request.setAttribute("sdfsdf", list);
//4. jsp.viewpage에 위임하여 출력한다 - jsonobject 배열로 응답 데이터를 생성한다
//jsp로 forward
RequestDispatcher disp = request.getRequestDispatcher("1201/member.jsp");
disp.forward(request, response);
}
}
IMemberDao
package kr.or.ddit.member.dao;
import java.util.List;
import kr.or.ddit.member.vo.MemberVO;
public interface IMemberDao {
//메서드 선언
public List<MemberVO> selectAll();
}
MemberDaoImpl
package kr.or.ddit.member.dao;
import java.sql.SQLException;
import java.util.List;
import com.ibatis.sqlmap.client.SqlMapClient;
import kr.or.ddit.ibatis.config.SqlMapClientFactory;
import kr.or.ddit.member.vo.MemberVO;
//mapper수행 - SqlMapClient객체 필요
//자신의 객체를 생성하고 리턴하는 메서드
public class MemberDaoImpl implements IMemberDao{
private SqlMapClient smc;
private static IMemberDao dao;
private MemberDaoImpl() {
smc= SqlMapClientFactory.getSqlMapClient();
}
public static IMemberDao getMemberDao() {
if(dao==null) dao = new MemberDaoImpl();
return dao;
}
@Override
public List<MemberVO> selectAll() {
List<MemberVO> list = null;
try {
list = smc.queryForList("mymember.getAllMember");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}
IMemberService
package kr.or.ddit.member.service;
import java.util.List;
import kr.or.ddit.member.vo.MemberVO;
public interface IMemberService {
//메소드 선언
public List<MemberVO> selectAll();
}
MemberServiceImpl
package kr.or.ddit.member.service;
import java.util.List;
import kr.or.ddit.member.dao.IMemberDao;
import kr.or.ddit.member.dao.MemberDaoImpl;
import kr.or.ddit.member.vo.MemberVO;
public class MemberServiceImpl implements IMemberService{
private IMemberDao dao;
private static IMemberService service;
private MemberServiceImpl(){
dao = MemberDaoImpl.getMemberDao();
}
public static IMemberService getMemberService() {
if(service==null)service = new MemberServiceImpl();
return service;
}
public List<MemberVO> selectAll(){
List<MemberVO> list = null;
list = dao.selectAll();
return list;
//return dao.selectAll();
}
}
MemberVO
package kr.or.ddit.member.vo;
/*
* DB테이블에 있는 각 컬럼들을 기준으로 데이터를 객체화할 클래스이다.
*
* DB테이블의 '컬럼명'이 이 VO클래스의 '멤버변수'가 된다.
*
* DB테이블의 컬럼과 클래스의 멤버변수를 매핑해서 사용한다.(서로 맞춰 데이터를 넣어줌)
*
*/
public class MemberVO {
private String mem_id;
private String mem_name;
private String mem_pass;
private String mem_tel;
private String mem_addr;
//VO클래스에 별도의 생성자를 만들었을 때는 반드시
// 기본 생성자도 같이 만들어야 한다.
public void setMem_id(String mem_id) {
this.mem_id = mem_id;
}
public String getMem_id() {
return mem_id;
}
public String getMem_name() {
return mem_name;
}
public void setMem_name(String mem_name) {
this.mem_name = mem_name;
}
public String getMem_pass() {
return mem_pass;
}
public void setMem_pass(String mem_pass) {
this.mem_pass = mem_pass;
}
public String getMem_tel() {
return mem_tel;
}
public void setMem_tel(String mem_tel) {
this.mem_tel = mem_tel;
}
public String getMem_addr() {
return mem_addr;
}
public void setMem_addr(String mem_addr) {
this.mem_addr = mem_addr;
}
}
member.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel = "stylesheet" href = "../css/mystyle.css" type="text/css">
<script src="../js/jquery-3.6.0.min.js"></script>
<style>
td{
width: 150px;
height: 50px;
text-align : center;
}
#addr{
width : 250px;
}
</style>
<script>
$(function(){
$('#member').on('click', function(){
$.ajax({
url : '/jqpro/MemberServlet',
type : 'get',
success : function(res){
str = "<table border='1'>";
str += "<tr class='title'><td>아이디</td>";
str += "<td>이름</td>";
str += "<td id='addr'>주소</td>";
str += "<td>전화번호</td></tr>";
$.each(res, function(i, v){
str += "<tr><td>" + v.id + "</td>";
str += "<td>" + v.name + "</td>";
str += "<td>" + v.addr + "</td>";
str += "<td>" + v.tel + "</td></tr>";
})
str += "</table>";
$('#result1').html(str);
$('.title').css('background', 'lightgreen');
},
error : function(xhr){
alert("상태 : " + xhr.status);
//500(콘솔에러), 404(url이름에러), 200(제이슨형식이잘못된것)
},
dataType : 'json'
})
})
$('#lprod').on('click', function(){
$.ajax({
url : '/jqpro/LprodServlet',
type : 'get',
success : function(res){
str = "<table border='1'>";
str += "<tr class='title'><td>아이디</td>";
str += "<td>gu</td>";
str += "<td>nm</td></tr>";
$.each(res, function(i,v){
str += "<tr><td>" + v.id + "</td>";
str += "<td>" + v.gu + "</td>";
str += "<td>" + v.nm + "</td></tr>";
})
str += "</table>";
$('#result2').html(str);
$('.title').css('background', 'lightgreen');
},
error : function(xhr){
alert("상태 : " + xhr.status);
//500(콘솔에러), 404(url이름에러), 200(제이슨형식이잘못된것)
},
dataType : 'json'
})
})
})
</script>
</head>
<body>
<div class = "box">
<br>
<button id = "member" type = "button">MemberList</button>
<div id = "result1"></div>
</div>
<div class = "box">
<br>
<button id = "lprod" type = "button">LprodList</button>
<div id = "result2"></div>
</div>
</body>
</html>
member.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"%>
<%
//서블릿에서 저장된 결과데이터 가져오기
List<MemberVO> list = (List<MemberVO>)request.getAttribute("sdfsdf");
%>
[
<%
for(int i=0; i<list.size(); i++){
MemberVO vo = list.get(i);
if(i>0) out.print(",");
%>
{
"id" : "<%= vo.getMem_id() %>",
"name" : "<%= vo.getMem_name() %>",
"addr" : "<%= vo.getMem_addr() %>",
"tel" : "<%= vo.getMem_tel() %>"
}
<%
}
%>
]