
--사원테이블(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%';
RDBMS란?
Relational DataBase Management System 의 약자
(관계형 모델을 기반으로 하는 DBMS 유형)
관계형(Relational)이란 정보를 저장하는 테이블들이 서로 연관되어 있음을 뜻한다. 관계형 데이터베이스는 여러 키값들을 사용해 연관된 정보들을 함께 조회하는데 특화되어 있다.
클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법
Cookie() 메소드 사용
Cookie Cookie(String name, String value)
name은 쿠키를 식별하기 위한 이름, value는 쿠키 값
Cookie cookie = new Cookie("memberId", "admin");
response.addCookie(cookie);
getCookies() 메소드 사용 - 쿠키 객체가 여러개일 때는 배열 형태로 가져온다.
Cookie[] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++){
out.println(cookies[i].getName + ":" + cookies[i].getValue()
+ "<br>";
request 내장 객체의 getCookies() 메소드로 쿠키 객체를 읽어온 후 해당 쿠키 객체의 개수만큼 쿠키 이름과 값을 출력한다.
Cookie 클래스는 쿠키를 삭제하는 기능을 별도로 제공하지 않으며, 쿠키를 더 유지할 필요가 없으면 쿠키의 유효 기간을 만료하면 된다.
-> 쿠키의 유효 기간을 결정하는 setMaxAge() 메소드에 유효 기간을 0으로 설정하여 쿠키를 삭제한다.
void setMaxAge (int age)
setMaxAge() 메소드 사용 예
Cookie cookie = new Cookie("memberId", "admin");
cookie.setMaxAge(0);
response.addCookie(cookie);
<body>
<%
Cookie[] cookies = request.getCookies();
// 쿠키 정보를 얻어오도록 request 내장 객체의 getCookies()
메소드 작성
for(int i=0; i<cookies.length; i++){
cookies[i].setMaxAge(0);
response.addCookie(cookies[i]);
// 생성된 Cookie 객체를 쿠키로 저장
// -> response의 addCookie() 메소드 작성
}
response.sendRedirect("cookie02.jsp");
%>
</body>
클라이언트와 웹 서버 간의 상태를 지속적으로 유지하는 방법
사용자 인증을 통해 특정 페이지를 사용할 수 있도록 권한 상태를 유지하는 것
void setAttribute(String name, Object value)
setAttribute() 메소드를 이용하여 세션의 속성을 설정하면 계속 세션 상태를 유지할 수 있다.
첫번째 매개변수 name: 세션으로 사용할 세션 속성 이름
두번째 매개변수 value: 세션의 속성 값 -> Object 객체 타입만 가능
(int, double, char 등의 기본 타입은 사용할 수 없다. 사용하려면 형변환 해줘야함.)
<body>
<%
String user_id = request.getParameter("id");
String user_pw = request.getParameter("passwd");
if(user_id.equals("admin") && user_pw.equals("1234")){
session.setAttribute("userID", user_id);
session.setAttribute("userPW", user_pw);
out.println("세션 설정이 성공했습니다.<br>");
out.println(user_id + "님 환영합니다.");
} else {
out.println("세션 설정이 실패했습니다.");
}
%>
</body>
🍳 단일 세션 정보 얻기
Object getAttribute(String name)
String id = (String)session.getAttribute("memberId");
getAttribute() 메소드는 반환 유형이 Object형이므로, 세션 속성 이름 memberId 값이 String 형의 admin이라면 cast 연산자인 (String)을 사용하여 형변환을 해준다.
세션에 memberId라는 속성 이름이 저장되어 있지 않으면 null을 반환한다.
String user_id = (String) session.getAttribute("userID");
String user_pw = (String) session.getAttribute("userPW");
out.println("설정된 세션의 속성 값[1]: " + user_id + "<br>");
out.println("설정된 세션의 속성 값[2]: " + user_pw);
세션에 저장된 세션 속성 이름 userID, userPW의 속성 값을 가져오도록 session 내장 객체의 getAttribute() 메소드를 작성한다.
🍳 다중 세션 정보 얻기
Enumeration getAttributeNames();
<%@ page import="java.util.Enumeration"%>
String name;
String value;
Enumeration en = session.getAttributeNames();
int i = 0;
while(en.hasMoreElements()){
i++;
name = en.nextElements().toString();
value = session.getAttribute(name).toString();
out.println("설정된 세션의 속성 이름 [" + i + "]:" + name +
"<br>");
out.println("설정된 세션의 속성 이름 [" + i + "]:" + value);
getAttributeNames() 메서드: 세션에 저장된 여러개의 세션 속성 이름에 대한 속성 값을 얻어옴.
반환 유형이 Enumeration 객체 타입이므로 모든 세션 정보를 얻어오는데 유용하다.
🍳 단일 섹션 삭제
void removeAttribute(String name)
<%
String name;
String value;
Enumeration en = session.getAttributeNames();
int i = 0;
while(en.hasMoreElements()){
i++;
name = en.nextElements().toString();
value = session.getAttribute(name).toString();
out.println("설정된 세션의 속성 이름 [" + i + "]:" + name +
"<br>");
out.println("설정된 세션의 속성 이름 [" + i + "]:" + value);
session.removeAttribute("userID");
%>
세션을 삭제한 후
<%
en = session.getAttributeNames();
i = 0;
while(en.hasMoreElements()){
i++;
name = en.nextElement().toString();
value = session.getAttribute(name).toString();
out.println("설정된 세션의 속성 이름 [" + i + "]:" + name + "<br>");
out.println("설정된 세션의 속성 이름 [" + i + "]:" + value);
}
%>
🍳 다중 섹션 삭제
void invalidate()
<%
String name;
String value;
Enumeration en = session.getAttributeNames();
int i = 0;
while(en.hasMoreElements()){
i++;
name = en.nextElements().toString();
value = session.getAttribute(name).toString();
out.println("설정된 세션의 속성 이름 [" + i + "]:" + name +
"<br>");
out.println("설정된 세션의 속성 이름 [" + i + "]:" + value);
session.invalidate();
%>
세션을 삭제한 후
<%
if(request.isRequestedSessionInValid() == true) {
out.print("세션이 유효합니다.");
}else{
out.print("세션이 유효하지 않습니다.");
}
%>
세션 유효 시간이란?
세션을 유지하기 위한 세션의 일정 시간
void setMaxInactiveInterval(int interval)
세션 유효 시간을 360초로 설정
session.setMaxInactiveInterval(60*60);
세션 유효 시간 변경 전
<%
int time = session.getMaxInactiveInterval() / 60;
out.println("세션 유효 시간: " + time + "분<br>";
%>
세션 유효 시간 변경 후
<%
session.setMaxInactiveInterval(60*60);
time = session.getMaxInactiveInterval() / 60;
out.println("세션 유효 시간: " + time + "분<br>";
%>
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>
<% // String name, String value
Cookie cookie = new Cookie("CookieN","CookieV");
cookie.setMaxAge(60*60);
response.addCookie(cookie);
// response 내장 객체의 addCookie() 메소드를 사용하여 쿠키 객체를 설정
// addCookie() 메소드는 웹 브라우저에 쿠키 정보를 추가로 전송한다.
%>
<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();
// 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>
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);
// String name, Object Value
%>
<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 enu = session.getAttributeNames();
int i = 0;
while(enu.hasMoreElements()) {
i++;
String sName = enu.nextElement().toString();
String sValue = (String)session.getAttribute(sName).toString();
// 세션 속성값은 Object 객체 타입만 가능하므로 형변환 필수!
out.println("sName : " + sName + "<br />");
out.println("sValue : " + sValue + "<br />");
}
out.println("************************ <br />");
session.removeAttribute("sessionName");
Enumeration enu1 = session.getAttributeNames();
i = 0;
while(enu1.hasMoreElements()) {
i++;
String sName = enu1.nextElement().toString();
String sValue = (String)session.getAttribute(sName).toString();
out.println("sName : " + sName + "<br />");
out.println("sValue : " + sValue + "<br />");
}
session.invalidate(); //섹션에 있는 것 전부 다 날림
%>
</body>
</html>