1. session 이란?

1-1. session의 정의

: 웹 브라우저 - 서버 간 요청 및 응답이 종료 될 때 관계가 종료되는 http의 특성 이러한 연결을 유지하기 위해 서버상에 객체를 생성하여 데이터를 임시로 두는 기법.

 

1-2. cookie와 session의 차이점

cookie session
클라이언트 상에서 response 객체를 통해 쿠키를 탑재 클라이언트의 요청에 따라 Session을 자동 생성하여 해당 속성 설정

 

 

2. DBMS의 의미와 종류는?

2-1. DBMS의 의미

: DBMS(Database Management System) 쿼리(Query)를 통해 처리된 데이터들을 모아논 저장소(Database)들을 묶어놓은 하나의 그룹 단위를 칭한다. 이를 통해 여러 DB들을 정의(Definition), 조작(Manipulation) 및 제어(Control)들을 할 수 있다.

 

2-2. DBMS의 종류

: DBMS는 크게 관계형DB(RDB)와 NoSQL(Not Only SQL) 두 가지에 따라 나뉘는데 둘의 차이로 인해 각 DBMS의 성격 또한 다른점이 있다.

  1. RDB
    • Oracle DB: 오라클(Oracle)사의 DBMS로 금융권과 같은 대규모 환경에서 쓰일정도로 신뢰성이 높은 특징이 있다.
    • MySQL: MySQL AB에서 개발된 DBMS로 오픈 소스의 형태라 접근성이 좋다는 특징이 있다.
    • MS-SQL: 마이크로소프트(Microsoft)사의 DBMS로 중소규모의 기업에서 주로 사용한다.
    • Maria DB: MySQL 개발진이 새로 내놓은 오픈 소스 DBMS MySQL의 기능과 흡사한 특징이 있다.
  2. NoSQL
    • MongoDB: 몽고 DB사에서 개발한 DBMS로 문서 지향 DB(Document Oriented Database)의 특성을 가지고 있다.
    • Redis: 살바토르 산필리포에 의해 개발된 DBMS로 키-값(Key-Value) 구조의 비정형 데이터를 관리할 수 있다.
    • HBase: 아파치사의 DBMS로 하둡(Hadoop) 플랫폼 상의 빅데이터를 처리하기 위한 기능을 지원한다.

 

 

3. sessin id 란?

: 웹 브라우저(클라이언트) 단위로 생성되는 이름으로 임의의 정수값으로 나열된 값을 통해 부여한다. 사용자가 웹 사이트를 방문하고 최초로 데이터를 입력한 뒤 이를 일시적으로 저장할 때 주어지는데 일정 시간을 기한을 두어 만료가 되면 사라지는 특징을 가진다. 시간은 개발 방향에 따라 달라질 수 있지만 디폴트는 1800ms를 기준으로 한다.

 

 

4. 에러페이지 처리 방법 2가지를 설명하시오?

4-1. JSP 자체에서 처리

: 에러가 발생할 수 있는 소스코드가 있을 경우 사전에 이를 정의하여 해당 에러페이지를 처리할 수 있는 JSP파일에 Forward를 한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page errorPage="errorPage.jsp" %> <!-- 지시자를 통해 에러페이지로 넘길(Forward) 준비를 한다. -->
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>
<body>
	<% int i = 40/0; %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %> <!-- 넘긴 에러페이지를 처리한다. -->
<% response.setStatus(200); %> <!-- http 상태 코드인 200을 통해 응답(response)한다. -->
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>
<body>
	에러 발생<br>
	<%= exception.getMessage() %> <!-- 에러메시지 가져오기 -->
</body>
</html>

 

4-2. xml에서 처리

: web.xml 파일을 통해 에러 코드를 대비하여 해당 에러페이지로 넘길 수 있게 한다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>JSPWebDevMK2</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <error-page>
  	<error-code>404</error-code>
  	<location>/JSP/error/error404.jsp</location>
  </error-page>

</web-app>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page isErrorPage="true" %>
<% response.setStatus(200); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
	404에러 입니다.
</body>
</html>

 

 

5. bean 이란?

: Java 데이터(속성)와 기능(메소드)로 이루어진 클래스(.java 파일) JSP내 액션태그를 통해서 빈(bean)을 사용한다.

  • useBean: 사전에 생성한 빈(Bean) 파일을 호출한다. (단, Bean 파일은 디폴트 생성자를 만들어 놓을것!)
    <jsp:useBean id="student" class="edu.bit.ex.Student"></jsp:useBean>​
  • setProperty: Bean 객체 내 필드 변수를 가져와 속성 값을 정의한다.(Setter)
    <jsp:setProperty property="name" name="student" value="홍길동"/>​
  • getProperty: 정의한 속성 값을 호출한다.(Getter)
    이름 : <jsp:getProperty property="name" name="student"/><br>​

 

 

6. 실습문제 1번

6-1-1. 소스 코드(메인)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>가위바위보를 하자!</title>
</head>
<body>
	<h1>가위바위보 게임</h1>
	<img alt="RSP_Logo" src="https://lh3.googleusercontent.com/
	proxy/6kTjfxVfEOeKH7M4YQ809xjg76JxLGl4Jsj49YTQaemjtmFk7PsHb
	jm8eR_qUEsGxddyvnWSNZVvcOdD90Ca7FB904ufAUKYTkIDxvQsp7GYm4ikqzgRsA">
	<form action="RSP_info.jsp">
		<select name="rsp">
			<option>가위
			<option>바위
			<option>보
		</select><br>
		<input type="submit" value="제출">
	</form>
</body>
</html>

 

6-1-2. 소스 코드(알고리즘)

<%@page import="java.util.Random"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>과연 결과는?</title>
</head>
<body>
	<%
		Random random = new Random();
	
		String rsp = request.getParameter("rsp");
		int com = random.nextInt(3) + 1;
	%>
	
	
	<%
		out.println("<h1>당신이 낸 것</h1>");
		if(rsp.equals("가위")) {
	%>
			<img src="http://isweb.joongbu.ac.kr/~jgm/photo/sissor.jpeg">
	<%
		} else if(rsp.equals("바위")) {
	%>
			<img src="http://isweb.joongbu.ac.kr/~jgm/photo/rock.jpeg">
	<%
		} else if(rsp.equals("보")) {
	%>
			<img src="http://isweb.joongbu.ac.kr/~jgm/photo/paper.png">	
	<%
		}
	%>
	
	<%
		out.println("<h1>컴퓨터가 낸 것</h1>");
		if(com == 1) {
	%>
			<img src="http://isweb.joongbu.ac.kr/~jgm/photo/sissor.jpeg">
	<%
		} else if(com == 2) {
	%>
			<img src="http://isweb.joongbu.ac.kr/~jgm/photo/rock.jpeg">
	<%
		} else if(com == 3) {
	%>
			<img src="http://isweb.joongbu.ac.kr/~jgm/photo/paper.png">	
	<%
		}
	%>
		
	<%
		switch(com) {
		case 1 : // 가위
			if(rsp.equals("가위")) {
				out.println("<h1>비김</h1>");
			} else if(rsp.equals("바위")) {
				out.println("<h1>승리</h1>");
			} else if(rsp.equals("보")) {
				out.println("<h1>패배</h1>");
			}
			break;
		case 2 : // 바위
			if(rsp.equals("가위")) {
				out.println("<h1>패배</h1>");
			} else if(rsp.equals("바위")) {
				out.println("<h1>비김</h1>");
			} else if(rsp.equals("보")) {
				out.println("<h1>승리</h1>");
			}
			break;
		case 3 : // 보
			if(rsp.equals("가위")) {
				out.println("<h1>승리</h1>");
			} else if(rsp.equals("바위")) {
				out.println("<h1>패배</h1>");
			} else if(rsp.equals("보")) {
				out.println("<h1>비김</h1>");
			}
			break;
		}
	%>

	<a href="RSP.jsp">다시 하기</a>
</body>
</html>

 

6-2. 구현 화면