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);
-- 사원들의 입사일에서 입사 년도와 입사 달을 출력하는 쿼리문
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;
CP란 웹 컨테이너(WAS)가 실행되면서 DB와 미리 connection(연결)을 해놓은 객체들을 pool에 저장해두었다가.
클라이언트 요청이 오면 connection을 빌려주고, 처리가 끝나면 다시 connection을 반납받아 pool에 저장하는 방식을 말합니다.
EL이란 Expression Language, 데이터를 표현하기 위한 언어라는 뜻이고. JSP 스크립트의 표현식(<%= %>을 대신하여 속성 값을 쉽게 출력하도록 고안된 언어이다.
<jsp:getProperty name="member" property="name"/>
${member.name}
위 세가지 영역과는 다르게 page내장 객체가 아닌 JSP파일에 내장되어있는 pageContext객체를 통해 접근 할 수 있는 영역 page 내에서만 유효하다.
JSP파일에는 pageContext가 내장되어있다으며 이 객체는 page내에서만 유효하다.
pageContext는 모든 영역의 속성에 대한 접근이 가능
JSP 파일 내에 <% %> 안에 변수를 사용하면 해당 JSP 파일에서만 유효한데 page 스코프에 정의된 객체이기 때문