JSP 8일차

MOZZI KIM·2022년 12월 1일
0

JSP

목록 보기
8/10
post-thumbnail

1. 아래의 쿼리를 작성하시오.

  • 현재 날짜를 문자형으로 변환하여 출력하는 쿼리문
  • 사원들의 입사일을 출력하되, 요일까지 함께 출력하는 쿼리문
  • 현재 날짜와 시간을 출력하는 쿼리문
  • 담당업무(JOB) 컬럼을 추가
  • 각 지역별 통화 기호를 앞에 붙이고 천 단위마다 콤마를 붙여서 출력하는 쿼리문
  • 1981년 2월 20일에 입사한 사원을 검색하는 쿼리문
  • 올해 며칠이 지났는지 현재 날짜에서 2016/01/01을 뺀 결과를 출력하는 쿼리문
  • 각사원의 연봉을 계산을 하는 쿼리문
  • '20,000'과 '10,000'의 차이를 알아보기 위해서 빼기(-)연산을 구하는 쿼리문

===================================================================

-- 현재 날짜를 문자형으로 변환하여 출력하는 쿼리문
select sysdate, to_char(sysdate,'YYYY-MM-DD') from dual;

-- 사원들의 입사일을 출력하되, 요일까지 함께 출력하는 쿼리문
select hiredate, to_char(hiredate,'YYYY-MM-DD Day') from emp;
-- YYYY-MM-DD에서 -대신 다른거 넣어도 잘 나옴~

-- 현재 날짜와 시간을 출력하는 쿼리문(근데 출력 되는 시간이 미국시간인)
select sysdate, to_char(sysdate,'YYYY-MM-DD HH:MI:SS') from dual;

-- 담당업무(JOB) 컬럼을 추가
alter table emp add JOB varchar(9);

-- 각 지역별 통화 기호를 앞에 붙이고 천 단위마다 콤마를 붙여서 출력하는 쿼리문
select ename,sal,to_char(sal,'L999,999') from emp;
-- L은 로케이션.

-- 1981년 2월 20일에 입사한 사원을 검색하는 쿼리문
select * from emp where hiredate=to_date(19810220,'YYYYMMDD');

-- 올해 며칠이 지났는지 현재 날짜에서 2016/01/01을 뺀 결과를 출력하는 쿼리문
select sysdate-to_date(20160101, 'YYYYMMDD') from dual;
SELECT SYSDATE - TO_DATE('2016/01/01', 'YYYY/MM/DD') FROM DUAL;

-- NVL = null value -> null을 0으로 바꾸는애래
-- 연봉 계산을 하는 쿼리문
select cname, sal, comm, job from emp;
select ename, sal, comm, job, (sal*12 + nvl(comm,0)) as 연봉 from emp;

-- 사원의 부서 번호를 이름으로 설정하는 쿼리문
select deptno from emp;
select deptno, decode(deptno,10,'리서치',
                             20,'연구팀',
                             '디폴트') as 부서이름 from emp;

2. scope에 대하여 설명하시오.

📌 Scope 란?

프로그램상 사용되는 변수들은 사용 가능한 범위를 가지는데, 이 때 변수의 범위를 Scope 스코프라고 한다.
즉, 웹 서버에서 객체 또는 변수가 생성된 후 유효 할 수 있는 범위로 변수가 선언된 블럭이 그 변수의 사용범위이다.

📌 JSP에서 4가지 Scope

  1. Page : 페이지 내에서 지역변수처럼 사용한다.

  2. Request : http 요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용

  3. Session : 웹 브라우저 별로 변수가 관리되는 경우 사용

  4. Application : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용
    ( * Application > Session > Request > Page )


1).Page Scope

  • PageContext 추상 클래스를 사용한다.

  • JSP 페이지에서 pageContext라는 내장 객체로 사용 가능 하다.

  • forward 될 경우 해당 Page scope에 지정된 변수는 사용할 수 없다.

  • 사용 방법은 다른 Scope와 같으나, 마치 지역변수처럼 사용된다는 것이 다른 Scope들과 다르다.

  • page 내에서만 사용될 수 있는 변수기 때문에 지역 변수처럼 해당 JSP나 Servlet 실행되는 동안에만 정보를 유지하고자 할 때 사용한다.

  • JSP에서 pageScope에 값을 저장한 후 해당 값을 EL표기법 등에서 사용할 때 사용할 수 있다.

2).Request Scope

  • http 요청을 WAS가 받아 웹 브라우저에 응답할 때까지 변수값을 유지하고자 할 경우 사용한다.

  • HttpServletRequest 객체를 사용한다.

  • JSP에서는 request 내장 변수를 사용하고, Servlet에서는 HttpServletRequest 객체를 사용한다.

  • 값을 저장할 때는 request 객체의 setAttribute()메소드를 사용한다.

  • 값을 읽어 들일 때는 request 객체의 getAttribute()메소드를 사용한다.

  • forward 시 값을 유지하고자 사용한다.


3).Session Scope

  • 웹 브라우저별로 변수를 관리하고자 할 경우 사용한다.

  • 웹 브라우저 탭 간에는 세션정보가 공유되기 때문에, 각각의 탭에서 같은 세션정보를 사용할 수 있다.

  • HttpSession 인터페이스를 구현한 객체를 사용한다.

  • JSP에서는 session 내장 변수를 사용한다.

  • Servlet에서는 HttpServletRequest의 getSession()메소드를 이용하여 session 객체를 얻는다.

  • 값을 저장할 때는 session 객체의 setAttribute()메소드를 사용한다.

  • 값을 읽어 들일 때는 session 객체의 getAttribute()메소드를 사용한다.

  • 예를 들어, 쇼핑몰 장바구니, 구매목록, 결재내역, 로그인, 회원가입 등과 같이 개별 클라이언트의 정보를 유지할 필요가 있을 때 사용한다.

4). Application Scope

  • 웹 어플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다.

  • ServletContext 인터페이스를 구현한 객체를 사용한다.

  • jsp에서는 application 내장 객체를 이용한다.

  • Servlet에서는 getServletContext()메소드를 이용하여 application객체를 이용한다.

  • 웹 어플리케이션 하나당 하나의 application객체가 사용된다.

  • 값을 저장할 때는 application객체의 setAttribute()메소드를 사용한다.

  • 값을 읽어 들일 때는 application객체의 getAttribute()메소드를 사용한다.

  • 모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용한다.

⭐Scope의 공통 함수⭐

  • setAttribute(string key,object value) : key, value 형식으로 값을 할당한다.

  • getAttribute(string key) : key값으로 value값을 리턴 받는다.


3. 아래를 프로그래밍 하시오.

emp.jsp Dao Dto 객체를 생성해서, el, jstl을 활용하되
empdto 객체를 session 영역에 저장한후, 해당 emp list 를 뿌리시오.

<%@page import="java.util.List"%>
<%@page import="edu.global.ex.dao.EmpDao"%>
<%@page import="edu.global.ex.dto.EmpDto"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ 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>
<%
	EmpDao empDao = new EmpDao();
	List<EmpDto> emps = empDao.empList();
	
	session.setAttribute("emps", emps);
%>
<c:forEach var="emp" items="${emps}">
	사번 : ${emp.empno} 이름 : ${emp.ename} 직종 : ${emp.job}<br>
</c:forEach>
</body>
</html>

4. JSTL 이란?

📌 JSTL란?

자바코드를 html태그형식으로 간편하게 사용하기 위해 나온 라이브러리
JSP 표준 태그 라이브러리(여러 프로그램이 공통으로 사용하는 코드를 모아놓은 코드의 집합)의 약어로 자신만의 태그를 추가할 수 있는 기능을 제공한다.

주로 JSTL의 Core에서 c를 사용하여 <c:if>, <c:forEach> 등을 사용한다.

JSTL을 사용하기 위해선 JSTL Library가 설치되어 있어야 한다.

<%@ taglib prefix="c" uri ="http://java.sun.com/jsp/jstl/core"%>
회사마다 태그에서 사용하는 명칭이 다를수 있다. 그래서 특정회사의 태그타입을 사용하는것이 prefix이다.

여기선 uri ="http://java.sun.com/jsp/jstl/core" 의 태그타입이 c이고 
이것을 사용하기 위해서는 <c:forEach> 이렇게 사용해야한다.

profile
코린이

0개의 댓글