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의 성격 또한 다른점이 있다.
- RDB
- Oracle DB: 오라클(Oracle)사의 DBMS로 금융권과 같은 대규모 환경에서 쓰일정도로 신뢰성이 높은 특징이 있다.
- MySQL: MySQL AB에서 개발된 DBMS로 오픈 소스의 형태라 접근성이 좋다는 특징이 있다.
- MS-SQL: 마이크로소프트(Microsoft)사의 DBMS로 중소규모의 기업에서 주로 사용한다.
- Maria DB: MySQL 개발진이 새로 내놓은 오픈 소스 DBMS로 MySQL의 기능과 흡사한 특징이 있다.
- 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. 구현 화면
'WebDev > 본과정' 카테고리의 다른 글
SQL의 그룹 함수와 형 변환 및 조건문, JSP의 MVC 패턴 (0) | 2021.05.15 |
---|---|
DB 기초 쿼리문과 JDBC 개요 (0) | 2021.05.15 |
경로, CSS의 Position, JSP의 액션태그 및 쿠키 (0) | 2021.05.15 |
CSS의 Box 속성과 JSP의 내장객체 (0) | 2021.05.15 |
CSS의 display와 JSP의 태그 (0) | 2021.05.15 |
최근댓글