JSP 5일차

MOZZI KIM·2022년 11월 28일
0

JSP

목록 보기
5/10
post-thumbnail

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

--사원테이블(DEPT)에서 급여 (SAL)가 3000 이상인 사원을 출력하는 쿼리문
	👉 select * from dept where sal >= 3000;

--부서 번호(DEPTNO)가 20인 사원에 관한 정보만 출력
	👉 select * from emp where deptno = 20;
    
--이름(ENAME)이 FORD인 사람의 사번(empno), 이름(ename), 급여(SAL)를 출력하는 쿼리문
	👉 select empno, ename, sal from emp where ename = 'FORD';
    
--1982년 1월 1일 이후에 입사한 사원을 출력하는 쿼리문
	👉 select * from emp where hiredate >= '1982-01-01';

--부서번호가 10번이고 job 이 매니져인 사람을 출력
	👉 select * from emp where deptno = 10 and job = 'MANAGER';
    
--부서번호가 10번 이거나(또는) job 이 매니져인 사람을 출력
	👉 select * from emp where deptno = 10 or job = 'MANAGER';
    
--부서번호가 10번 부서가 아닌 사원
	👉 select * from emp where deptno != 10;
    
--급여가 2000~3000 사이의 사원을 검색하는 쿼리문
	👉 select * from emp where sal between 2000 and 3000;
    
--급여가 2000 미만이거나 3000 초과인 사원을 검색하는 쿼리문
	👉 select * from emp where sal not between 2000 and 3000;
    
--1980년에 입사한 사원을 출력하는 쿼리문
	👉 select * from emp where hiredate between '1980-01-01' and '1980-12-31';
    
--커미션(COMM)이 300 혹은 500 혹은 1400인 사원이 있는지 검색하는 쿼리문
	👉 select * from emp where comm in(300, 500, 1400);
    
--커미션(COMM)이 300 혹은 500 혹은 1400이 아닌 사원이 있는지 검색하는 쿼리문
	👉 select * from emp where comm not in(300, 500, 1400);
    
--이름이 F로 시작하는 사람을 찾는 쿼리문
	👉 select * from emp where ename like 'F%';
    
 --위치 상관 없이 이름 중에 A가 들어있는 사람을 찾는 쿼리문
 	👉 select * from emp where ename like '%A%';
    
--이름이 N으로 끝나는 사람을 찾는 쿼리문
	👉 select * from emp where ename like '%N';
    
 --이름의 두 번째 글자가 A인 사원을 찾는 쿼리문
 	👉 select * from emp where ename like '_A%';
    
--이름의 세 번째 글자가 A인 사원을 찾는 쿼리문
	👉 select * from emp where ename like '__A%';
    

2. RDBMS의 종류는?

📌 관계형 데이터베이스(RDBMS) 란?

관계형 데이터베이스는 데이터가 하나 이상의 열과 행의 테이블(또는 '관계')에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 정보 모음이다.

👉 종류

  • ORACLE (오라클)
    -PostgreSQL (Post-Gres-QL, 포스트-그레스-큐엘)
  • MySQL.
  • SQL Server (MS-SQL)
  • SQLite (에스큐엘-라이트)

3.쿠키란 무엇인가요?

📌 쿠키란?

쿠키는 인터넷을 사용하는 유저가 어떤 웹사이트를 방문했을 때 그 사이트가 사용하는 서버를 통해 로컬에 저장되는 작은 데이터이다.
쿠키는 키와 밸류로 이루어져 있으며 만료기간, 도메인, 경로 등의 정보를 가지고 있다.

📌왜 쿠키란 이름을 가지게 된 것일까?
넷스케이프 개발자인 루 몬틀리가 이름을 짓게 되었는데 데이터의 패킷을 의미하는 "매직 쿠키" 에서 비롯되었다고 한다.

👉 클라이언트는 최대 300까지 쿠키를 가질 수 있으며, 하나의 도메인 당 최대 20개,
하나의 쿠키 당 최대 4KB까지 저장할 수 있다.


4.세션이란 무엇인가요?

📌 세션이란?

사용자가 웹 브라우저를 통해 웹서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점까지, 같은 사용자로부터 오는 일련의 요청을 하나의 상태로 보고, 그 상태를 일정하게 유지하는 기술.
즉, 방문자가 웹 서버에 접속해있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다.

👉 세션 특징

  • 웹서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장

  • 웹서버에 저장되는 쿠키 (=세션쿠키)

  • 브라우저를 닫거나, 서버에서 세션을 삭제했을 때 삭제되므로, 쿠키보다 보안이 좋다.

  • 저장데이터에 제한이 없다.

  • 각 클라이언트의 고유세션ID를 부여한다.

  • 세션ID로 클라이언트를 구분하여 각 클라이언트 요구에 맞는 서비스를 제공한다.


👉 세션 동작순서
  1. 클라이언트 요청 (사용자가 웹사이트 접근)

  2. 서버는 접근클라이언트의 Request-Header필드인 cookie를 확인하여, 클라이언트가 해당 세션ID를 보냈는지 확인

  3. 세션ID가 존재하지 않는다면, 서버는 세션ID를 생성해 클라이언트에게 전송.

  4. 서버에서 클라이언트로 준 세션ID를 쿠키를 사용해 서버에 저장한다.

  5. 클라이언트는 재접속시, 이 쿠키를 이용하여 세션ID값을 서버에 전달한다.


풀이는 아래와 같다. cookie_set.jsp파일을 생성하여 아래와 같이 코딩한다.


cookie_set.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);//response안에다가 cookie를 보냄
%>

<a href="cookie_get.jsp">cookie get</a>
	
</body>
</html>

=============================================================================
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[] cookies = request.getCookies();
	
		for(int i =0; i<cookies.length; i++){
			String str = cookies[i].getName();
			
			if(str.equals("cookieN")){
				out.println("cookies[" + i + "] name : " + cookies[i].getName() + "<br />");
				out.println("cookies[" + i + "] value : " + cookies[i].getValue() + "<br />");
				out.println("==================================<br />");
			}
		}
	%>
  
</body>
</html>
  

6.아래의 session_set.jsp 파일에 대하여 session get 를 클릭하면 모든 세션 값을 출력하는 session_get.jsp를 만드시오.

풀이는 아래와 같다. session_set.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>
<%
	session.setAttribute("sessionName","sessionValue");
	session.setAttribute("myNum",12345);
%>

<a href="session_get.jsp">session get</a>
	
</body>
</html>

------------------------------------------------------------------------
<%@page import="java.util.Enumeration"%>
<%@ 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>
<%
	
	   Enumeration enumeration = session.getAttributeNames();
	   
	   int i = 0;
	   while(enumeration.hasMoreElements()) {
	      
	      i++;
	      
	      String sName = enumeration.nextElement().toString();
	      String sValue = (String)session.getAttribute(sName).toString();
	      
	      out.println("sName : " + sName + "<br />");
	      out.println("sValue : " + sValue + "<br />");      
	   }
	   
	   out.println("************************ <br />");
	   
	   session.removeAttribute("sessionName");
	   
	   Enumeration enumeration1 = session.getAttributeNames();
	   
	   i = 0;
	   while(enumeration1.hasMoreElements()) {
	      
	      i++;
	      
	      String sName = enumeration1.nextElement().toString();
	      String sValue = (String)session.getAttribute(sName).toString();
	      
	      out.println("sName : " + sName + "<br />");
	      out.println("sValue : " + sValue + "<br />");      
	   }
	   
	   session.invalidate(); //섹션에 있는 것 전부 다 날림
	%>

</body>
</html>
profile
코린이

2개의 댓글

comment-user-thumbnail
2022년 11월 28일

5번 코드 좀 뽀려갈게요...ㅎㅎㅎ 압도적 감사ㅜㅜ

1개의 답글