๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT์ž๊ฒฉ์ฆ ๊ณต๋ถ€/์ •๋ณด์ฒ˜๋ฆฌ์‚ฐ์—…๊ธฐ์‚ฌ ์‹ค๊ธฐ

[์ •๋ณด์ฒ˜๋ฆฌ์‚ฐ์—…๊ธฐ์‚ฌ ๊ณผ์ •ํ‰๊ฐ€ํ˜• ์‹ค๊ธฐ] ์ง€์—ญ๊ตฌ์˜์›ํˆฌํ‘œ - ๋ฐ์ดํ„ฐ ์ž…/์ถœ๋ ฅ

by yunamom 2022. 4. 28.
728x90
300x250

๊ตฌํ˜„ ์ˆœ์„œ ( ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๐Ÿ‘‰๐Ÿป ์„œ๋ฒ„ ๐Ÿ‘‰๐Ÿป ํ”„๋ก ํŠธ ๐Ÿ‘‰๐Ÿป ๋ฐฑ์—”๋“œ )

 

1) [์ •๋ณด์ฒ˜๋ฆฌ์‚ฐ์—…๊ธฐ์‚ฌ ๊ณผ์ •ํ‰๊ฐ€ํ˜•] ์‹ค๊ธฐ์‹œํ—˜ ๋ฌธ์ œ - ์ง€์—ญ๊ตฌ์˜์›ํˆฌํ‘œ

2) [์ •๋ณด์ฒ˜๋ฆฌ์‚ฐ์—…๊ธฐ์‚ฌ ๊ณผ์ •ํ‰๊ฐ€ํ˜•] ์‹ค๊ธฐ MVC ํŒจํ„ด ๊ตฌ์กฐ / ํ๋ฆ„

3) [์ •๋ณด์ฒ˜๋ฆฌ์‚ฐ์—…๊ธฐ์‚ฌ ๊ณผ์ •ํ‰๊ฐ€ํ˜•] ์ง€์—ญ๊ตฌ์˜์›ํˆฌํ‘œ - DB ์ƒ์„ฑํ•˜๊ธฐ
4) [์ •๋ณด์ฒ˜๋ฆฌ์‚ฐ์—…๊ธฐ์‚ฌ ๊ณผ์ •ํ‰๊ฐ€ํ˜•] ์ง€์—ญ๊ตฌ์˜์›ํˆฌํ‘œ - Java / Servlet ์ƒ์„ฑ
5) [์ •๋ณด์ฒ˜๋ฆฌ์‚ฐ์—…๊ธฐ์‚ฌ ๊ณผ์ •ํ‰๊ฐ€ํ˜•] ์ง€์—ญ๊ตฌ์˜์›ํˆฌํ‘œ - View ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ
6) [์ •๋ณด์ฒ˜๋ฆฌ์‚ฐ์—…๊ธฐ์‚ฌ ๊ณผ์ •ํ‰๊ฐ€ํ˜•] ์ง€์—ญ๊ตฌ์˜์›ํˆฌํ‘œ - ๋ฐ์ดํ„ฐ ์ž…/์ถœ๋ ฅ

โœจ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ( INSERT ) 

ํˆฌํ‘œํ•˜๊ธฐ ํ™”๋ฉด์—์„œ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ DB ์— ์ €์žฅํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์œ ํšจ์„ฑ ์ฒดํฌ ๋ฐ ๋ฐ์ดํ„ฐ์ €์žฅํ›„ ๋ฉ”์ธํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๊ธฐ

ํˆฌํ‘œํ•˜๊ธฐ ํ™”๋ฉด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ›„ ํˆฌํ‘œํ•˜๊ธฐ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด script.js ์—์„œ ์œ ํšจ์„ฑ๊ฒ€์‚ฌ๋ฅผ ๋งˆ์นœ๋’ค,

formํƒœ๊ทธ์˜ action ๊ฒฝ๋กœ vote.do ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

 

1. VoteController.java (VoteDAO.java ํด๋ž˜์Šค์˜ insertVote ๋ฉ”์†Œ๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์ด๋™)

case "/vote.do" : 
	int result = vote.insertVote(request, response);
	
	break;
}

2. VoteDAO.java ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ DB์— ์ž…๋ ฅ/์ €์žฅ ํ•ฉ๋‹ˆ๋‹ค. (์‹คํŒจ์‹œ 0, ์„ฑ๊ณต์‹œ 1 ๋ฐ˜ํ™˜)

public int insertVote(HttpServletRequest request, HttpServletResponse response) {
		
	int result = 0;
	try {
		conn = getConnection();
		String v_jumin = request.getParameter("v_jumin");
		String v_name = request.getParameter("v_name");
		String m_no = request.getParameter("m_no");
		String v_time = request.getParameter("v_time");
		String v_area = request.getParameter("v_area");
		String v_confirm = request.getParameter("v_confirm");
        
		String sql = "INSERT INTO tbl_vote_202005 VALUES(?,?,?,?,?,?)";
		ps = conn.prepareStatement(sql);
		ps.setString(1, v_jumin);
		ps.setString(2, v_name);
		ps.setString(3, m_no);
		ps.setString(4, v_time);
		ps.setString(5, v_area);
		ps.setString(6, v_confirm);
			
		result = ps.executeUpdate(); // 0์‹คํŒจ, 1์„ฑ๊ณต
		System.out.println(result);	
		conn.close();
		ps.close();
			
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}	
	return result;
}

3. VoteController.java ๋กœ ๋Œ์•„์™€์„œ ์•Œ๋ฆผ์ฐฝ์„ ํ™”๋ฉด์— ์ถœ๋ ฅํ•ด์ค€๋’ค ํ™•์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฉ”์ธํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

*context (๋ฉ”์ธํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋กœ)

case "/vote.do" : 
	int result = vote.insertVote(request, response);
	response.setContentType("text/html; charset=UTF-8");
	PrintWriter out=response.getWriter();
	if(result == 1) {
		out.println("<script>");
		out.println("alert('ํˆฌํ‘œํ•˜๊ธฐ ์ •๋ณด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋“ฑ๋ก ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!'); location.href='"+context+"'; ");
		out.println("</script>");
		out.flush();
	}else {
		out.println("<script>");
		out.println("alert('๋“ฑ๋ก์‹คํŒจ!'); location.href='"+context+"'; ");
		out.println("</script>");
		out.flush();
	}		
	break;
}


โœจ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ( SELECT ) 

ํ›„๋ณด์กฐํšŒ, ํˆฌํ‘œ๊ฒ€์ˆ˜์กฐํšŒ, ํ›„๋ณด์ž๋“ฑ์ˆ˜ ์— ๋„˜๊ฒจ์ค„ ๋ฐ์ดํ„ฐ๋ฅผ DB ์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ํ›„๋ณด์กฐํšŒ

1. VoteController.java ( VoteDAO.java ํด๋ž˜์Šค์˜ selectMember() ๋ฉ”์†Œ๋“œ๋กœ ์ด๋™)

case "/memberList.do" : 			
	site = vote.selectMember(request, response);
	break;

2. VoteDAO.java DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋’ค list ์— ๋‹ด์•„์ค๋‹ˆ๋‹ค.

*DECODE (if ๋ฌธ๊ณผ ๊ฐ™๋‹ค), *|| (์˜ค๋ผํด์—์„œ || ์ด ๊ธฐํ˜ธ๋Š” ๋ฌธ์ž์—ด์„ ๋ถ™์—ฌ์ค€๋‹ค. CONCAT ๊ณผ ๊ฐ™์Œ), *substr(ํ•ด๋‹น ์œ„์น˜์˜ ๋ฌธ์ž๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.)

public String selectMember(HttpServletRequest request, HttpServletResponse response) {
		  	
	ArrayList<Member> list = new ArrayList<Member>();
		
	try {
		conn = getConnection();
		
		//ํ›„๋ณด ์กฐํšŒ ํ™”๋ฉด ์ฟผ๋ฆฌ
		String sql = "SELECT ";
		       sql+= " M.m_no, ";
		       sql+= " M.m_name, ";
		       sql+= " P.p_name, ";
		       sql+= " DECODE(M.p_school,'1','๊ณ ์กธ','2','ํ•™์‚ฌ','3','์„์‚ฌ','๋ฐ•์‚ฌ') p_school, ";
		       sql+= " substr(M.m_jumin,1,6)|| ";
		       sql+= " '-'||substr(M.m_jumin,7) m_jumin, ";
		       sql+= " M.m_city, ";
		       sql+= " substr(P.p_tel1,1,2)||'-'||P.p_tel2||'-'||";
		       sql+= " (substr(P.p_tel3,4)||";
		       sql+= "  substr(P.p_tel3,4)||";
		       sql+= "  substr(P.p_tel3,4)||";
		       sql+= "  substr(P.p_tel3,4)) p_tel ";
		       sql+= " FROM tbl_member_202005 M, tbl_party_202005 P ";
		       sql+= " WHERE M.p_code = P.p_code";
			 ps = conn.prepareStatement(sql);
			 rs = ps.executeQuery();
			 
		while(rs.next()) {
			Member member = new Member();
			member.setM_no(rs.getString(1));
			member.setM_name(rs.getString(2));
			member.setP_name(rs.getString(3));
			member.setP_school(rs.getString(4));
			member.setM_jumin(rs.getString(5));
			member.setM_city(rs.getString(6));
			member.setP_tel(rs.getString(7));
				 
			list.add(member);
		}
		request.setAttribute("list",list);
			conn.close();
			ps.close();
			rs.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
	}	
	return "memberList.jsp";
}

3. memberList.jsp Viewํ™”๋ฉด์— ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="VoteBean.Member" %>

<%
request.setCharacterEncoding("UTF-8");
//list ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
ArrayList<Member> list = new ArrayList<Member>();
list = (ArrayList<Member>)request.getAttribute("list");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>memberList</title>
</head>
<body>
<%@ include file="topmenu.jsp" %>
<section>
<h2>โˆ™ ํ›„๋ณด์กฐํšŒ โˆ™</h2>
<div class="table">
	<table style="width:700px;">
		<tr>
			<th>ํ›„๋ณด๋ฒˆํ˜ธ</th>
			<th>์„ฑ๋ช…</th>
			<th>์†Œ์†์ •๋‹น</th>
			<th>ํ•™๋ ฅ</th>
			<th>์ฃผ๋ฏผ๋ฒˆํ˜ธ</th>
			<th>์ง€์—ญ๊ตฌ</th>
			<th>๋Œ€ํ‘œ์ „ํ™”</th>
		</tr>
		<%
		for(int i=0; i<list.size(); i++){
		%>
		<tr>
			<td><%=list.get(i).getM_no()%></td>
			<td><%=list.get(i).getM_name()%></td>
			<td><%=list.get(i).getP_name()%></td>
			<td><%=list.get(i).getP_school()%></td>
			<td><%=list.get(i).getM_jumin()%></td>
			<td><%=list.get(i).getM_city()%></td>
			<td><%=list.get(i).getP_tel()%></td>
		</tr>
		<%
		}
		%>
	</table>
</div>
</section>
<%@ include file="footer.jsp" %>
</body>
</html>


ํˆฌํ‘œ๊ฒ€์ˆ˜์กฐํšŒ

1. VoteController.java ( VoteDAO.java ํด๋ž˜์Šค์˜ selectAll() ๋ฉ”์†Œ๋“œ๋กœ ์ด๋™)

case "/voteList.do" : 		
	site = vote.selectAll(request, response);
	break;

2. VoteDAO.java DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋’ค list ์— ๋‹ด์•„์ค๋‹ˆ๋‹ค.

public String selectAll(HttpServletRequest request, HttpServletResponse response){
		 	
	ArrayList<Vote> list = new ArrayList<Vote>();	
	try {
	conn = getConnection();
			
		//ํˆฌํ‘œ๊ฒ€์ˆ˜์กฐํšŒ ํ™”๋ฉด ์ฟผ๋ฆฌ
	String sql = "SELECT v_name,";
	       sql+= " '19'||substr(v_jumin,1,2)||";
	       sql+= " '๋…„'||substr(v_jumin,3,2)||";
	       sql+= " '์›”'||substr(v_jumin,5,2)||";
	       sql+= " '์ผ์ƒ' v_jumin,";
	       sql+= " '๋งŒ '||(to_number(to_char(sysdate,'yyyy'))";
	       sql+= " - to_number('19'||substr(v_jumin,1,2)))||'์„ธ' v_age,";
	       sql+= " DECODE(substr(v_jumin,7,1),'1','๋‚จ','์—ฌ') v_gender, ";		   
	       sql+= " m_no, ";
	       sql+= " substr(v_time,1,2)||':'||substr(v_time,3,2) v_time, ";
	       sql+= " DECODE(v_confirm,'Y','ํ™•์ธ','๋ฏธํ™•์ธ') v_confirm ";
	       sql+= " FROM tbl_vote_202005 ";
	       sql+= " WHERE v_area='์ œ1ํˆฌํ‘œ์žฅ'";
	ps = conn.prepareStatement(sql); // ๋ช…๋ น์–ด๋ฅผ ๋ณด๋‚ธ๋‹ค.
	rs = ps.executeQuery();
		
	while(rs.next()) {
		Vote vote = new Vote();
			
		vote.setV_name(rs.getString(1));
		vote.setV_jumin(rs.getString(2));
		vote.setV_age(rs.getString(3));
		vote.setV_gender(rs.getString(4));
		vote.setM_no(rs.getString(5));
		vote.setV_time(rs.getString(6));
		vote.setV_confirm(rs.getString(7));
		
		list.add(vote);
	}
	request.setAttribute("list",list);
	conn.close();
	ps.close();
	rs.close();
		
	} catch (Exception e) {
		
		e.printStackTrace();
	}	
	return "voteList.jsp";
}

 

3. voteList.jsp Viewํ™”๋ฉด์— ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="VoteBean.Vote" %>

<%
request.setCharacterEncoding("UTF-8");
//list ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
ArrayList<Vote> list = new ArrayList<Vote>();
list = (ArrayList<Vote>)request.getAttribute("list");
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>voteList</title>
</head>
<body>
<%@ include file="topmenu.jsp" %>
<section>
<h2>โˆ™ ํˆฌํ‘œ๊ฒ€์ˆ˜์กฐํšŒ โˆ™</h2>
<div class="table">
	<table style="width:700px;">
		<tr>
			<th>์„ฑ๋ช…</th>
			<th>์ƒ๋…„์›”์ผ</th>
			<th>๋‚˜์ด</th>
			<th>์„ฑ๋ณ„</th>
			<th>ํ›„๋ณด๋ฒˆํ˜ธ</th>
			<th>ํˆฌํ‘œ์‹œ๊ฐ„</th>
			<th>์œ ๊ถŒ์žํ™•์ธ</th>
		</tr>
		<%
		for(int i=0; i<list.size(); i++){
		%>
		<tr>
			<td><%=list.get(i).getV_name() %></td>
			<td><%=list.get(i).getV_jumin() %></td>
			<td><%=list.get(i).getV_age() %></td>
			<td><%=list.get(i).getV_gender() %></td>
			<td><%=list.get(i).getM_no() %></td>
			<td><%=list.get(i).getV_time() %></td>
			<td><%=list.get(i).getV_confirm() %></td>
		</tr>
		<%
		}
		%>
	</table>
</div>
</section>
<%@ include file="footer.jsp" %>
</body>
</html>


ํ›„๋ณด์ž๋“ฑ์ˆ˜

1. VoteController.java ( VoteDAO.java ํด๋ž˜์Šค์˜ selectResult() ๋ฉ”์†Œ๋“œ๋กœ ์ด๋™)

case "/voteResult.do" : 			
	site = vote.selectResult(request, response);
	break;

2. VoteDAO.java DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋’ค list ์— ๋‹ด์•„์ค๋‹ˆ๋‹ค.

* v_total DESC (์ดํˆฌํ‘œ์ˆ˜๊ฐ€ ๋งŽ์€ ์ˆœ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. DESC: ๋‚ด๋ฆผ์ฐจ์ˆœ, ASC: ์˜ฌ๋ฆผ์ฐจ์ˆœ, default: ASC)

public String selectResult(HttpServletRequest request, HttpServletResponse response) {
		   	
	ArrayList<Result> list = new ArrayList<Result>();
		
	try {
		conn = getConnection();
		//ํ›„๋ณด์ž ๋“ฑ์ˆ˜ ํ™”๋ฉด ์ฟผ๋ฆฌ
		String sql = "SELECT ";
		       sql+= " M.m_no, M.m_name, count(*) AS v_total";
		       sql+= " FROM tbl_member_202005 M, tbl_vote_202005 V";
		       sql+= " WHERE M.m_no = V.m_no AND V.v_confirm = 'Y' ";
		       sql+= " GROUP BY M.m_no, M.m_name";
		       sql+= " ORDER BY v_total DESC";
		ps = conn.prepareStatement(sql);
		rs = ps.executeQuery();
	
		while(rs.next()) {
			Result result = new Result();
			
			result.setM_no(rs.getString(1));
			result.setM_name(rs.getString(2));
			result.setV_total(rs.getString(3));
			list.add(result);
		}
		request.setAttribute("list",list);
		conn.close();
		ps.close();
		rs.close();		
		
	} catch (Exception e) {
			
		e.printStackTrace();
	}		
	return "voteResult.jsp";
}

3. voteResult.jsp Viewํ™”๋ฉด์— ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="VoteBean.Result" %>

<%
request.setCharacterEncoding("UTF-8");
//list ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
ArrayList<Result> list = new ArrayList<Result>();
list = (ArrayList<Result>)request.getAttribute("list");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>voteResult</title>
</head>
<body>
<%@ include file="topmenu.jsp" %>
<section>
<h2>โˆ™ ํ›„๋ณด์ž๋“ฑ์ˆ˜ โˆ™</h2>
<div class="table">
	<table>
		<tr>
			<th>ํ›„๋ณด๋ฒˆํ˜ธ</th>
			<th>์„ฑ๋ช…</th>
			<th>์ดํˆฌํ‘œ๊ฑด์ˆ˜</th>
		</tr>
		<%
		for(int i=0; i<list.size(); i++){
		%>
		<tr>
			<td><%=list.get(i).getM_no()%></td>
			<td><%=list.get(i).getM_name()%></td>
			<td><%=list.get(i).getV_total() %></td>
		</tr>
		<%
		}
		%>
	</table>
</div>
</section>
<%@ include file="footer.jsp" %>
</body>
</html>

์™„์„ฑ !

( ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๐Ÿ‘‰๐Ÿป ์„œ๋ฒ„ ๐Ÿ‘‰๐Ÿป ํ”„๋ก ํŠธ ๐Ÿ‘‰๐Ÿป ๋ฐฑ์—”๋“œ ) MVC ํŒจํ„ด์œผ๋กœ ์ˆœ์„œ๋Œ€๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค :D

๋ณธ์ธ์€ ํ˜„์žฌ SQLD ์‹œํ—˜๋„ ํ•จ๊ป˜ ์ค€๋น„ํ•˜๊ณ  ์žˆ์–ด์„œ sql์ฟผ๋ฆฌ๋ฌธ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™”๋Š”๋ฐ์š”

์ด ์™ธ์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์ ์šฉํ•˜๋Š” ๋งŽ์€ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋‹ˆ ํŽธํ•œ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘์—…ํ•˜์‹œ๋ฉด ์ข‹์„๊ฒƒ๊ฐ™์Šต๋‹ˆ๋‹ค :D

์ „์ฒด ์†Œ์ŠคํŒŒ์ผ์€ ๋‹ค์Œ๊ธ€์— ํฌ์ŠคํŒ…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ~!

728x90
300x250

์ฝ”๋“œ