일단 해보는 코딩/JSP

[JSP] JSP와 DB연결

eun_zoey2 2022. 8. 18. 17:08
728x90

기본 파일 5개 


 

DB 생성 시 PK(Primary Key) 가 있어야 한다.

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

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

A 테이블의 이 FK로 B테이블과 관계를 맺을 수 있다. 

 

 

1. CMD 관리자 권한으로 들어감 (hr/rootoor) - 데이터 입력

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);


create table gogaek(
gobun number(3) primary key,
goname varchar2(30),
goaddr varchar2(30),
gojumin varchar2(14),
godam number(3)
);

insert into gogaek values (1,'송강','서울 강남구','660123-1234567',3);
insert into gogaek values (2,'정철','대전 유성구','760123-1333567',4);
insert into gogaek values (3,'무송','부산 강서구','912123-1557567',10);
insert into gogaek values (4,'진평','인천 계양구','660123-4567567',1);
insert into gogaek values (5,'소하','서울 동작구','960123-3314567',10);
insert into gogaek values (6,'장량','서울 강북구','801215-1345783',2);
insert into gogaek values (7,'한신','서울 영등포구','911114-2345678',4);
insert into gogaek values (8,'영포','서울 강남구','960123-2034123',15);
insert into gogaek values (9,'팽월','대전 유성구','952345-1033765',4);
insert into gogaek values (10,'임충','서울 강북구','942278-1237815',3);

create table sawon(
sabun number(3) primary key,
saname varchar2(20),
sagene varchar2(10),
dpetno 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);
insert into sawon values(4, '유비', '남자', 20, '사원', '2001-03-15', 3, 2400);
insert into sawon values(5, '관우', '남자', 10, '부장', '1984-07-25', null, 4000);
insert into sawon values(6, '장비', '남자', 10, '사원', '2001-04-30', 4, 2000);
insert into sawon values(7, '마초', '여자', 30, '과장', '2004-05-25', 10, 3900);
insert into sawon values(8, '황충', '남자', 40, '과장', '1993-08-15', 1, 3000);
insert into sawon values(9, '조인', '여자', 20, '대리', '1997-11-25', 8, 3200);
insert into sawon values(10, '하우연', '남자', 10, '대리', '1998-05-25', 4, 3300);


commit;

select * from dept;
select * from gogaek;
select * from sawon;

2. Java Resources 에서 DeptVO.java 생성 

model 1

: 데이터를 처리하는 로직과 화면을 출력하는 로직이 한 페이지있어서 동시에 실행되는 것을 말한다. 

=> ScriptLet에서는 DB연결, ArrayList에서는 값을 추가하는 작업을 함과 동시에 <body>영역에서 html코드로 화면을 구성하는 경우이다. 

package vo;

public class DeptVO { // DB(table)에서 만든 열_명이 변수처리가 된다.
	int deptNo;
	String dName;
	String loc;

//  public DeptVO() {
//  }
	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;
	}

}

3. jdbs_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/oracle_test");

	Connection conn = dataSource.getConnection();
	// out.println("-----get connection!!------");
	//System.out.println("--- get connection!!! ---");
	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">
<title>Insert title here</title>
</head>
<body>
  <table border="1">
    <caption>::부서목록::</caption>
    <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> <%= dv.getdName() %> </td>
         <td> <%= dv.getLoc() %> </td>
    </tr>
    <% } %>
  </table>
</body>
</html>

 

<%@ 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(); //연결 객체 얻어오기
	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">
<title>Insert title here</title>
</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>

 

■ Templete : 쉽고 간편하게 작업할 수 있도록 미리 만들어 놓은 파일인데 이를 이용해서 간단하게 작업할 수 있다.

 

1. window - Preferences - Java - Editor - Templates - import - xml 파일 넣기

jdbc_templ.xml
0.00MB
DB자료.txt
0.00MB

'일단 해보는 코딩 > JSP' 카테고리의 다른 글

[JSP] 성적프로그램 (추가,수정,삭제)  (0) 2022.08.19
[JSP] VO(Value Object), 내장객체  (0) 2022.08.16
[JSP] JSP이란?  (0) 2022.08.16
[JSP] 작업설정하기  (0) 2022.08.16
[JSP] 서블릿2  (0) 2022.08.12