티스토리 뷰
1. 아래의 문제를 푸시오.
-아래를 구현하시오.
DTO - 클래스 EmpDept
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
import java.sql.Date; // import할 때 주의!
public class EmpDto {
private int empno;
private String ename;
private String job;
private int mgr;
private Date hiredate;
private int sal;
private int comm;
private int deptno;
public EmpDto() {
}
public EmpDto(int empno, String ename, String job, int mgr, Date hiredate,
int sal, int comm, int deptno) {
this.empno = empno;
this.ename = ename;
this.job = job;
this.mgr = mgr;
this.hiredate = hiredate;
this.sal = sal;
this.comm = comm;
this.deptno = deptno;
}
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public int getMgr() {
return mgr;
}
public void setMgr(int mgr) {
this.mgr = mgr;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public int getSal() {
return sal;
}
public void setSal(int sal) {
this.sal = sal;
}
public int getComm() {
return comm;
}
public void setComm(int comm) {
this.comm = comm;
}
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
}
|
cs |
DAO - 함수 작성 -위의 객체를 ArrayList로 담는 함수 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
import java.sql.Connection;
import java.sql.Date; // 꼭 sql로!!
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import edu.kosmo.ex.dto.EmpDto;
public class EmpDao {
private String driver = "oracle.jdbc.driver.OracleDriver";
private String url = "jdbc:oracle:thin:@localhost:1521:xe";
private String uid = "scott";
private String upw = "tiger";
public EmpDao(){
try {
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
public ArrayList<EmpDto> empSelect(){
ArrayList<EmpDto> etos = new ArrayList<>();
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
String query = "SELECT * FROM emp";
con = DriverManager.getConnection(url, uid, upw);
stmt = con.createStatement();
rs = stmt.executeQuery(query);
while(rs.next()) {
int empno = rs.getInt("empno");
String ename = rs.getString("ename");
String job = rs.getString("job");
int mgr = rs.getInt("mgr");
Date hiredate = rs.getDate("hiredate");
int sal = rs.getInt("sal");
int comm = rs.getInt("comm");
int deptno = rs.getInt("deptno");
EmpDto eto = new EmpDto(empno, ename, job, mgr,
hiredate, sal, comm, deptno);
etos.add(eto);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(rs != null)
rs.close();
if(stmt != null)
stmt.close();
if(con != null)
con.close();
} catch (Exception e2) {
}
}
return etos;
}
}
|
cs |
12명의 아래의 정보 출력
- 사원번호, 사원 이름, 부서명 , 부서 위치
-el 및 jstl을 사용 할것
★ jstl을 사용하려면 먼저 jstl을 다운받은 뒤, 해당 알집 안에 들어있는 lib 폴더에서 jstl.jar 파일과 standard.jar 파일 두 개를
이클립스 프로젝트 폴더의 wepapp - lib 폴더에 넣어 주어야한다!
그리고 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 도 잊지말고 넣어주기!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<%@page import="edu.kosmo.ex.dao.EmpDao"%>
<%@page import="edu.kosmo.ex.dto.EmpDto"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!--jstl을 사용하려면 아래 거 잊지말고 꼭 써주기-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous">
<title>Insert title here</title>
</head>
<body class="container">
<%
EmpDao empDao = new EmpDao();
ArrayList<EmpDto> etos = empDao.empSelect();
pageContext.setAttribute("etos", etos);
%>
<table class="table text-center table-striped">
<tr class="table-info">
<td>사원 번호</td>
<td>사원 이름</td>
<td>직종</td>
<td>매니저 번호</td>
<td>입사 날짜</td>
<td>급여</td>
<td>보너스</td>
<td>부서 번호</td>
</tr>
<c:forEach var="eto" items="${etos}">
<tr>
<td>${eto.empno}</td>
<td>${eto.ename}</td>
<td>${eto.job}</td>
<td>${eto.mgr}</td>
<td>${eto.hiredate}</td>
<td>${eto.sal}</td>
<td>${eto.comm}</td>
<td>${eto.deptno}</td>
</tr>
</c:forEach>
</table>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
crossorigin="anonymous"></script>
</body>
</html>
|
cs |
2. 4개의 영역(Scope)에 대하여 설명하시오.
영역이란 웹 서버에서 객체 또는 변수가 생성된 후 유지 되는 범위를 말한다.
pageScope - 해당 페이지에서만 유지 시킨다. (다른 페이지에서는 절대 사용불가) 범위가 가장 좁다.
requestScope - forwarding까지 유지 시킨다. (request는 request객체를 뜻한다.)
page와 request 영역의 차이는 ?? request는 다시 response하기 전까지 살아있다.
포워딩할때는 request 객체가 살아있다! 포워딩하는 다른 페이지에서 사용 가능.
sessionScope - (session 객체)정해진 시간에 따라 유지 시킨다.(디폴트값을 30분)
applicationScope - 프로젝트 끝날때 까지(어플리케이션이 종료 될 때 까지) 유지시킨다.
3. 아래의 조인에 대하여 설명하시오.
-등가조인
조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이 일치되는 행을 연결하여 결과를 생성하는 조인 기법이다.
-비등가 조인
동일 컬럼이 없이 다른 조건을 사용하여 조인 할 떄 쓰인다.
EQUI JOIN과 NON-EQUI JOIN의 차이점
EQUI JOIN : JOIN조건에 서로 다른 조건(=)을 가진 데이터를 JOIN해서 가져오는 방법
NON-EQUI JOIN : 같은 조건이 아닌 크거나 작거나 하는 경우 JOIN을 수행하는 방법
-셀프 조인
자기 자신과 조인을 하는 기법이다.
조인은 서로 다른 두 개의 테이블을 연결하기도 하지만 하나의 테이블 내에서 조인을 해야만 자료를 얻을 수 있는 경우에 쓰인다.
4. 아래의 SQL 문을 작성하시오.
-모든 사원의 이름,직업,부서이름,급여 및 등급을 출력하라.
-12명 사원의 메이져 이름을 출력하시오.
-Smith보다 늦게 입사한 사원의 이름 및 입사일을 출력하라.
1
2
3
4
5
6
7
8
9
10
11
|
-- 모든 사원의 이름,직업,부서이름,급여 및 등급을 출력하라.
SELECT * FROM salgrade s, emp e, dept d WHERE e.deptno = d.deptno and e.sal
BETWEEN s.losal AND s.hisal;
-- 12명 사원의 매니져 이름을 출력하시오.
SELECT e1.ename 사원, e2.ename 매니져 FROM emp e1, emp e2 WHERE e1.mgr = e2.empno;
-- KING의 mgr은 null이기 때문에 출력하면 11명 나온다!
-- Smith보다 늦게 입사한 사원의 이름 및 입사일을 출력하라.
SELECT ename, hiredate FROM emp WHERE hiredate
> (SELECT hiredate FROM emp WHERE ename = 'SMITH');
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
-- join
SELECT * FROM emp, dept; -- 카테이션 곱
-- 사원 정보를 출력할 때, 각 사원이 소속된 부서의 상세 정보를 출력
SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno;
-- 이름이 KING인 사람의 부서명을 출력
SELECT e.ename, d.dname FROM emp e, dept d
WHERE e.deptno = d.deptno and ename = 'KING'; -- SMITH가 속한 부서 위치
SELECT e.ename, d.dname, d.loc FROM emp e, dept d
WHERE e.deptno = d.deptno and ename = 'SMITH'; -- 각 사원의 급여가 몇 등급인지 살펴보는 쿼리문
SELECT * FROM salgrade;
SELECT * FROM salgrade, emp WHERE sal BETWEEN losal and hisal;
-- 한 명의 사원 이름과 소속 부서명, 급여 등급을 출력하는 쿼리문
-- (3개의 테이블 EMP, DEPT, SALGRADE 조인)
SELECT * FROM salgrade s, emp e, dept d WHERE e.deptno = d.deptno and e.sal
BETWEEN s.losal AND s.hisal; -- 이름이 SMITH인 사원의 매니저 이름(자기 자신의 두번 join!..self join)
SELECT * FROM emp e1, emp e2 WHERE e1.mgr = e2.empno and e1.ename = 'SMITH';
SELECT employee.ename ||'의 매니저는 '|| manager.ename|| '입니다.'
FROM emp employee, emp manager
WHERE employee.mgr = manager.empno;
-- 서브 쿼리 (select문이 두번 들어간다)
-- 사원들의 평균 급여보다 더 많은 급여를 받는 사원을 검색하는 쿼리문
SELECT * FROM emp WHERE sal > (SELECT AVG(sal) FROM emp); -- 소괄호 사용하기
-- scott의 부서명을 알아내는 쿼리문
SELECT * FROM dept WHERE deptno = (SELECT deptno FROM emp WHERE ename = 'SMITH');
-- 하나의 컬럼을 모두 출력해야 할때는 join을 써야한다....
-- SMITH의 급여와 동일하거나 급여를 더 많이 받는 사원과 급여를 출력하는 쿼리문
SELECT * FROM emp WHERE sal >= (SELECT sal FROM emp WHERE ename = 'SMITH');
-- 입사일이 BLAKE 이후인 사원
SELECT * FROM emp WHERE hiredate > (SELECT hiredate FROM emp WHERE ename = 'BLAKE');
|
cs |
8번
11 이 1초과 100 미만의 숫자인가?
22 가 2의 배수 또는 3의 배수 숫자인가 ?
위의 결과를 나타내시오.true false 로
9번
국영수 총점 평균 및 수우미양가출력
66번
. 아래의 cookie_set.jsp 파일에 대하여
cookie get 를 클릭하면 모든 쿠키 값을 출력하는 cookie_get.jsp를 만드시오.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Cookie cookie = new Cookie("CookieN","CookieV"); //쿠키객체생성
cookie.setMaxAge(60*60); //쿠키 시간 설정
response.addCookie(cookie);
%>
<a href="cookie_get.jsp">cookie get</a>
</body>
</html>
'수업문제' 카테고리의 다른 글
[문제] 12월 07일 (데이터 무결성, commit, rollback) (0) | 2021.12.07 |
---|---|
[문제] 12월 06일(게시판 만들기, DML, DCL, DDL, 데이타 딕션러리, context.xml) (0) | 2021.12.07 |
[문제] 12월 01일 (DAO, DTO, Session, DBCP, EL, 카티션 곱, 카테이션 곱) (0) | 2021.12.02 |
[문제] 11월 30일 (DAO, DTO, 커넥션 풀, SQL 쿼리문) (0) | 2021.12.01 |
- Total
- Today
- Yesterday
- 쿠키
- 세션
- toString
- hashset
- 입출력
- 참조형
- 채팅
- 쓰레드
- compareTo
- JSP
- SOCKET
- el
- Servlet
- object
- exception
- 사칙연산 계산기
- 제네릭
- 진척도 70번
- Generic
- Session
- string
- 프로토콜
- 예외처리
- TreeSet
- equals
- 래퍼 클래스
- Request
- response
- 부트스트랩
- abstract
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |