JSP 프로그래밍 6일차 수업

김형우·2022년 11월 30일
0

JSP

목록 보기
6/9

1. emp 테이블을 DAO, DTO 클래스로 만들어 뿌리시오.

  • dept 테이블을 DAO, DTO 클래스로 만들어 뿌리시오.

    deptDAO.java

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class P52dao {
	private DataSource dataSource;

	public P52dao() {

		try {
			Context context = new InitialContext();
			dataSource = (DataSource) context.lookup("java:comp/env/jdbc/oracle");
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}
	
	public List<P52dto> deptList() {
		
		ArrayList<P52dto> depts = new ArrayList<>();
		
		Connection c1 = null;
		PreparedStatement p1 = null;
		ResultSet s1 = null;
		
		try {
			String query = "select * from dept";
			c1 = dataSource.getConnection();
			p1 = c1.prepareStatement(query);
			s1 = p1.executeQuery();
			
			while(s1.next()) {
				int deptno = s1.getInt("deptno");
				String dname = s1.getString("dname"); 
				String loc = s1.getString("loc");
				
				P52dto dto = new P52dto(deptno, dname, loc);
				depts.add(dto);
			}
			
		}catch(Exception e){
			
		}finally {
			try {
				if(s1 != null)
					s1.close();
				if(p1 != null)
					p1.close();
				if(c1 != null)
					c1.close();
				
			}catch(Exception e) {
				e.printStackTrace();
			}
		}
		
		return depts;
	}
}
 

deptDTO.java

public class P52dto {
	private int deptno;
	private String dname;
	private String loc;
	
	public P52dto() {
		
	}
	
	public P52dto(int deptno, String dname, String loc) {
		this.deptno = deptno;
		this.dname = dname;
		this.loc = 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;
	}
	
	
}

  • emp 테이블의 총 월급합(모든 사원의 월급합)을 뿌리시오.

    emp.jsp

EmpDao empDao = new EmpDao();
List<EmpDto> emps = empDao.empList();
 
int totalSum = 0;
	
for(int i=0; i<emps.size(); i++){
	totalSum += emps.get(i).getSal();
}
	
out.print("총 급여의 합 : " + totalSum);

2. 아래의 sql 구문을 작성하시오.

-- 사원들의 입사일에서 입사 년도와 입사 달을 출력하는 쿼리문

SELECT ENAME, substr(hiredate, 1, 2)년도, substr(hiredate, 4, 2)달 from emp;

-- 각 직원들이 근무한 개월 수를 수하는 쿼리문

select ename, months_between(sysdate, hiredate) 근무개월수 from emp;

-- 입사한 달의 마지막 날을 구하는 쿼리문

select hiredate, LAST_DAY(hiredate) from emp;

-- 현재 날짜를 반환하는 쿼리문

select sysdate from dual;

3.CP(connection pool)에 대하여 설명하시오.

CP란 웹 컨테이너(WAS)가 실행되면서 DB와 미리 connection(연결)을 해놓은 객체들을 pool에 저장해두었다가.
클라이언트 요청이 오면 connection을 빌려주고, 처리가 끝나면 다시 connection을 반납받아 pool에 저장하는 방식을 말합니다.

4.EL에 대하여 설명하시오.

EL이란 Expression Language, 데이터를 표현하기 위한 언어라는 뜻이고. JSP 스크립트의 표현식(<%= %>을 대신하여 속성 값을 쉽게 출력하도록 고안된 언어이다.

5. 아래의 액션 태그를 EL로 표현하시오.

<jsp:getProperty name="member" property="name"/>

${member.name}

6.4개의 scope 에 대하여 설명하시오.(예습)

  • Application
  • Request
  • Session
  • Page

  1. Application : 웹 어플리케이션이 시작되고 종료될때까지 변수가 유지될 경우 사용.
  • 하나의 애플리케이션 당 1개의 application 객체가 생성된다.
  • 같은 애플리케이션 내의 요청되는 페이지들은 같은 객체를 공유하게 된다.
  • 애플리케이션이 종료되면 객체는 반환된다.
  • 모든 영역에서 공유할 수 있는 데이터 ( 제일 크니까. )
  1. Session : 웹 브라우저 별로 변수가 관리되는 경우 사용 ( 해당 객체가 소멸될때까지 사용 가능).
  • 서로 다른 페이지(리소스) 여도 객체(데이터)들을 공유 할 수 있음.
  • 하나의 브라우저 당 1개의 session 객체가 생성된다(다른 브라우저에서 작업시 휘발).
  • 이 속성의 객체는 세션 종료되는 순간 반환.
  • 같은 브라우저 내에 요청되는 페이지들은 같은 객체를 공유하게 된다.
  1. Request : http요청을 WAS(톰캣)가 받아서 웹 브라우저에게 응답할 때 까지 살아있는 변수
  • 가장 많이 사용 되는 스코프
  • 페이지와 페이지 사이에 존재하고 하나의 관계에서만 사용 가능하다.
  • 요청을 받아 응답할때까지만 객체가 유효한 영역. 페이지 넘길 때 리퀘스트 영역에 값을 올리고 그 올린 값을 누군가
    다른애가 requset.parmeter 등으로 값을 뽑아 갈 수 있다( 다른 페이지에서는 사용 불가 ).
  • forward 또는 include 방식을 이용할 경우 여러 페이지에서도 요청정보가 유지되므로 여러 페이지에서 공유가능.
  1. Page : 페이지 내에서 지역변수 처럼 사용
  • 위 세가지 영역과는 다르게 page내장 객체가 아닌 JSP파일에 내장되어있는 pageContext객체를 통해 접근 할 수 있는 영역 page 내에서만 유효하다.

  • JSP파일에는 pageContext가 내장되어있다으며 이 객체는 page내에서만 유효하다.

  • pageContext는 모든 영역의 속성에 대한 접근이 가능

  • JSP 파일 내에 <% %> 안에 변수를 사용하면 해당 JSP 파일에서만 유효한데 page 스코프에 정의된 객체이기 때문

    출처 : https://itjy2.tistory.com/30

profile
개발자 지망생

0개의 댓글