상세 컨텐츠

본문 제목

JSP (DB 연결, 부서 별 사원 입력 및 출력)

FrontEnd/JSP (JavaServerPage)

by H_Develop 2022. 8. 19. 16:55

본문

DB 생성 시 PK ( Primary key ) 는 있어야 한다.

A 테이블에서 PK는 unique and not null 이어야 한다.

A 테이블에서 FK는 다른 B 테이블에서 PK이다.

A 테이블의 이 FK로 B 테이블과 관계 ( relation ) 를 맺을 수 있다. <= Join이 가능

 

hr / rootoor 접속

show user;
// HR 접속자 확인
-----------------------------------------
// 테이블 생성

create table dept(
	deptno number(3) primary key,
    dname varchar2(10),
    loc varchar2(10));
)
-----------------------------------------
// 데이터 입력

insert into dept values(10, '총무부', 101);
insert into dept values(20, '영업부', 202);
insert into dept values(30, '전산실', 303);
insert into dept values(40, '관리부', 404);
insert into dept values(50, '경리부', 505);

-----------------------------------------
// table 생성

create table gogaek(
	gobun number(3) primary key,
    goname varchar2(30),
    goaddr varchar2(30),
    godam number(3)
);
    
-----------------------------------------
// 데이터 입력

insert into gogaek values(1, '송강', '서울 강남구', 3);
insert into gogaek values(2, '정철', '대전 유성구', 4);
insert into gogaek values(3, '무송', '서울 강서구', 10);
insert into gogaek values(4, '진평', '인천 계양구', 1);
insert into gogaek values(5, '소하', '서울 마포구', 10);

-----------------------------------------
// table 생성

create table sawon(
	sabun number(3) primary key,
    saname varchar2(20),
    sagene varchar2(10),
    deptno number(3),
    sajob varchar2(10),
    sahire date,
    samgr number(3),
    sapay number(8)
);

-----------------------------------------
// 데이터 입력

insert into sawon values(1, '손권', '남자', 40, '부장', '1993-07-25', null, 4000);
insert into sawon values(2, '조조', '남자', 20, '부장', '1988-02-25', null, 4000);
insert into sawon values(3, '순욱', '여자', 20, '대리', '1998-03-25', 2, 3500);

-----------------------------------------
commit;

 

 

class 파일

 

package vo;
public class DeptVO {
	int deptNo;
    String dName;
    String loc;
    public int getDeptNo() {
    	return deptNo;
    }
    public void setDeptNo (int deptNo) {
    	this.deptNo = deptNo;
    }
    public String getdName() {
    	return dName;
    }
    public void setdName(String dName) {
    	this.dName = dName;
    }
    public String getLoc() {
    	return loc;
    }
    public void setLoc (String loc) {
    	this.loc = loc;
    }
}

 

 

jdbc_dept.jsp

 

아래 코드로 부서번호를 누르면 해당 jdbc_dept.jsp 파일 내용 변경(추가된다)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="vo.DeptVO" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<%
	InitialContext ic = new InitialContext();
    Context ctx = (Context)ic.lookup("java:comp/env");
    DataSource dataSource = (DataSource)ctx.lookup("jdbc/oracl_test");
    Connection conn = dataSource.getConnection();	// Connection 연결 객체 생성
    // out.println("-- 연결 성공 --");
    String sql = "select * from dept";
    PreparedStatement pstmt = conn.prepareStatement(sql);
    ResultSet rs = pstmt.executeQuery();
    ArrayList<DeptVO> dept_list = new ArrayList<>();	// 부서 목록에 들어갈 어레이리스트 생성
    while (rs.next()) {
		DeptVO vo = new DeptVO();
        vo.setDeptNo(rs.getInt("deptno"));
        vo.setdName(rs.getString("dname"));
        vo.setLoc(rs.getString("loc"));
        dept_list.add(vo);
	}
    rs.close();
    pstmt.close();
    conn.close();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
	function send(data) {
    	var f = document.getElementById("m_form");
        var hid = document.getElementById("hid");
        hid.value = data;
        f.submit();
    }
</script>
</head>
<body>
	<form id="m_form" action="sawon_list.jsp">
        <table border="1">
            <caption>부서목록</captioin>
            <tr>
                <th>부서번호</th>
                <th>부서명</th>
                <th>부서위치</th>
            </tr>
            <%
                for(int i=0; i<dept_list.size(); i++) {
                DeptVO dv = dept_list.get(i);
            %>
            <tr>
                <td><%= dv.getDeptNo() %></td>
                <td>
                    <a href="javascript:send('<%= dv.getDeptNo() %>');" name="deptno"><% dv.getdName() %></a>
                </td>
                <td><%= dv.getdName() %></td>
                <td><%= dv.getLoc() %></td>
            </tr>
            <%
                }
            %>
        </table>
		<input type="hidden" value="" id="hid" name="deptno">
    </form>
</body>
</html>

 

 

 

SawonVO class 생성

 

package vo;
publick class SawonVO {
	int sabun;
    String saName;
    String saJob;
    int deptNo;
    public int getSabun() {
    	return sabun;
    }
    public void setSabun(int sabun) {
    	this.sabun = sabun;
    }
    public String getSaName() {
    	return saName;
    }
    public String getSaJob() {
    	return saJob;
    }
    public void setSaJob(String saJob) {
    	this.saJob = saJob;
    }
    public int getDeptNo() {
    	return deptNo;
    }
    public void setDeptNo(int deptNo) {
    	this.deptNo = deptNo;
    }
}

 

WebContent > sawon_list.jsp 파일

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="vo.SawonVO" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="javax.naming.InitialContext" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="java.sql.Connection" %>
<!DOCTYPE html>
<% request.setCharacterEncoding("utf-8"); %>
<%
	int deptno = Integer.parseInt(request.getParameter("deptno"));
    InitialContext ic = new InitialContext();
    Context ctx = (Context)ic.lookup("java:comp/env");
    DataSource dataSource = (DataSource)ctx.lookup("jdbc/oracle_test");
    Connection conn = dataSource.getConnection();	// 연결객체 얻어오기
    //out.println("-- 연결 성공 --");
    String sql="select * from sawon where deptno=" + deptno;
    PreparedStatement pstmt = conn.prepareStatement(sql);
    ResultSet rs = pstmt.executeQuery();
    ArrayList<SawonVO> sawon_list = new ArrayList<>();
    while(rs.next()) {
    	SawonVO vo = new SawonVO();
        vo.setDeptNo(rs.getInt("deptno"));
        vo.setSabun(rs.getInt("sabun"));
        vo.setSaJob(rs.getString("sajob"));
        vo.setSaName(rs.getString("saname"));
        sawon_list.add(vo);
    }
    rs.close();
    pstmt.close();
    conn.close();
%>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
	<table border="1">
    	<caption>부서 목록</caption>
        <tr>
        	<th>부서번호</th>
            <th>사원번호</th>
            <th>직책</th>
            <th>이름</th>
        </tr>
        <%
        	for(int i=0; i<sawon_list.size(); i++) {
            	sawonVO dv = sawon_list.get(i);
        %>
        <tr>
        	<td><%= dv.getDeptNo() %></td>
        	<td><%= dv.getSabun() %></td>
        	<td><%= dv.getSaJob() %></td>
        	<td><%= dv.getSaName() %></td>
        </tr>
        <%
        	}
        %>
    </table>
</body>
</html>

 

 

부서명을 누르면 부서원들의 리스트가 나온다

관련글 더보기