StudyServer
web, server, java, spring 등.. 공부한 것을 기록하는 장소 입니다. 공부하면서 정리하였기 때문에 틀린 내용이 있을 수 있습니다. 이야기 해주시면 수정하겠습니다.

HTML 기초 정리

2018-12-07 00:00:00 +0000

HTML과 HTML5차이

  • 웹의 애플리케이션화를 위해서(단순한 정보 전달=>다양한 서비스 제공)
  • 문서의 의미를 부여하기 위해(이전에는 꾸미는것도 같이 씀=>CSS와 분리)

HTML문서 구조

  • DOCTYPE 는 HTML 버전을 정의. 버전에 따라 문법이 다르기 때문
  • HEAD에 문서 정보를 작성
  • BODY는 우리눈에 보이는 화면을 꾸밈

HTML 기초 문법

  • 태그의 대소문자 구별X
  • 시작태그와 종료태그로 이루어지거나, 하나의 태그로 이루어진다

목록 태그

  • ol : 번호가 있는 목록
  • ul : 번호가 없는 목록
  • dl, dd : key, value로 이루어진 목록. 용어를 정의할 때 사용
  • dl, dd 예제
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>타이틀입니당</title>
</head>
<body>
<dl>
<dt>웹표준</dt>
<dd>W3C권고안으로 만든 문서</dd>
</dl>
</body>
</html>

div, span

  • div는 자기가 있는 줄의 자리를 다 차지한다
  • span은 옆에 자리가 비워져 있다

id, class

  • id는 유일한 하나의 식별자이다
  • class는 grouping 하는데 쓰인다

경로

  • 절대경로 : 프로젝트 위치 경로에서 시작( 프로젝트이름/경로… )
  • 상대경로 : html 파일 위치에서 시작( ./경로… )

h1

  • 글자크기X 문서를 구조적으로 보여주기 위해서 사용

웹마

  • 현재 사이트의 이미지를 모두 저장하는 기능을 가진 프로그램

다양한 기능들

  • IMG SRC
  • 이미지 추가. alt는 시각장애인들을 위해 반드시 넣어야 한다(공공프젝 중요!!)
<li><img src="./img/road2.jpg" alt="5" ></li>
  • INPUT
  • 전송버튼, 체크박스, 라디오 박스 등 다양한 기능을 만들 수 있다
  • HTML5가 되면서 MAIL FORM에 MAIL체크도 가능(@만 체크하므로 세세한 확인 필요)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>form Exam</h3>
<form action="server_url.jsp" method="get">
       <fieldset>
       <ol>
       <li>
       <label for="userName">이름</label>
       <input type="text" name="userName" id="userName"
       autofocus="autofocus" placeholder="ex)홍길동">
       </li>
       <li>
             <label>이메일</label>
             <input type="email" placeholder="ex)23123@gmail.com"  required="required" />
       </li>
       <li>
       <label>날짜</label>
       <input type="date"/>
       </li>
             <li>
       <label>색상</label>
       <input type="color"/>
       </li>
             <li>
       <label>수량</label>
       <input type="range" min="1" min="10" min="5"/>
       </li>
       <li>
       <label>옵션</label>
       <select>
       <option value="BMW">BMW</option>
       <option value="BENCH">벤츠</option>
       <option value="KTX">KTX</option>
       </select>
       <li>
       <label><input type="checkbox" name="월" value="1"/>월</label>
       <label><input type="checkbox" name="화" value="2"/>화</label>
       <label><input type="checkbox" name="수" value="3"/>수</label>
       <input type="radio" name="fruit" value="사과" /> 사과
       <input type="radio" name="fruit" value="바나나" checked="checked" />  바나나
       </li>
       <li>
       <input type="radio" name="fruit" value="1"/>목
       <input type="radio" name="fruit" value="2"/>금
       <input type="radio" name="fruit" value="3"  checked="checked" />토
       </li>
       </ol>
       </fieldset>
       <fieldset>
             <input type="submit" value="전송">
       </fieldset>  
</form>
</body>
</html>
  • IFRAME
  • 다른 페이지의 내용을 불러온다
<p>
<iframe src="img_exam.html" width="500" title="이미지 예제"></iframe>
</p>
  • VIDEO
  • 동영상을 불러오는 태그
<figure>
<figcaption>
동영상
<video width="640" height="360" controls="controls">
<source src="Merry_Love.MP4" type="video/mp4"/>
</video>
</figcaption>
</figure>
  • TOP
  • 페이지의 맨 처음으로 이동
<a href="#top">top</a>
  • TABLE
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
       <table width="450" border="1" cellpadding="0" cellspacing="0">
       <caption>2018프로야구 순위</caption>
       <thead>
             <tr height='50' align="center">
             <td>순위</td>
             <td>팀명</td>
             <td>승</td>
             <td>무</td>
             <td>패</td>         
       </tr>
       </thead>
       <tbody>
       <tr height='50' align="center">
             <td rowspan="2">1</td>
             <td>SK</td>
             <td>90</td>
             <td>0</td>
             <td>10</td>         
       </tr>
             <tr height='50' align="center">
             <td>두산</td>
             <td>80</td>
             <td>0</td>
             <td>20</td>         
       </tr>
             <tr height='50' align="center">
             <td>3</td>
             <td>넥센</td>
             
             <td>70</td>
             <td>0</td>
             <td>30</td>         
       </tr>
       </tbody>
       <tfoot>
             </tr>
             <tr height='50' align="center">
             <td colspan='2'>합계</td>
             <td></td>
             <td></td>           
       </tr>
       
       </tfoot>
       </table>
</body>
</html>

Eclipse Web 환경세팅

2018-12-07 00:00:00 +0000

톰캣 설정 시 주의사항

  • 톰캣 설치 시 마지막 finish 시 체크박스 해제
  • 항상 서버가 돌아가는게 아니라 이클립스 사용 시 돌아가도록 체크박스 해제

이클립스 설정 변경

  • 자바EE로 변경
  • window-preference-Server-Runtime E~ - ADD-톰캣버전 선택-톰캣 폴더 추가
  • window-preference-WEB 선택. HTML, CSS EUC-KR을 UTF-8로 변경
  • 앞으로는 JavaProject가 아닌 Dinamic Web Project 만들기
  • WebContent폴더에서 HTML 파일 추가

피보나치의 수

2018-12-04 00:00:00 +0000

문제

피보나치 수 문제

Source

import java.util.Scanner;
public class Main {
       public static void main(String[] args) {
             Scanner sc = new Scanner(System.in);
             int count = sc.nextInt();
             long before_num = 0;                   // 이전 값
             long cur_num = 1;                      // 현재 값
             for(int i = 1; i < count; ++i){
                    long temp = before_num;
                    before_num = cur_num;
                    cur_num += temp;
             }
             
             System.out.println(cur_num);
       }
}

Oracle 반복문,커서,예외,저장 서브프로그램

2018-12-03 00:00:00 +0000

반복문

  • 자바의 WHILE, FOR문처럼 사용할 수 있다
  • LOOP, WHILE, FOR 예제
DECLARE
i NUMBER := 0;
BEGIN
-- LOOP
LOOP
i:=i+1;
EXIT WHEN  i > 10;
dbms_output.put_line(i);
END LOOP;

-- WHILE
WHILE i< 10 LOOP
  i:= i+1;
  dbms_output.put_line(i);
  END LOOP;
  
  -- FOR
  FOR i IN 1..10 LOOP
      dbms_output.put_line(i);
  END LOOP;
END;

커서

  • SQL문 실행 결과 정보를 저장한 메모리 공간
  • 사용방법에 따라 명시적, 묵시적 커서로 나눔
  • SELECT INTO
  • 조회되는 데이터가 1개일 때 사용
  • SELECT로 컬럼을 선택하고 INTO에서 변수에 대입
  • 그 외 기존 사용방식 동일(WHERE, GROUP 등.. 사용가능)
SELECT 열1, 열2, .., 열 n
INTO 변수1, 변수2.., 변수 n
FROM ...
  • 실제 사용 예제
DECLARE
V_DEPT_ROW DEPT%ROWTYPE;
BEGIN
SELECT DEPTNO, DNAME, LOC INTO V_DEPT_ROW FROM DEPT
WHERE DEPTNO = 40;
DBMS_OUTPUT.PUT_LINE('DEPTNO:' || V_DEPT_ROW.DEPTNO);
END;
  • 명시적 커서 선언
DECLARE
CURSOR 커서 이름 IS SQL문;    -- 커서 선언
BEGIN
OPEN 커서 이름;                        -- 커서 열기
FETCH 커서 이름 INTO 변수      -- 커서로부터 읽어온 데이터 사용
CLOSE 커서 이름;                       -- 커서 닫기
END;
  • FOR LOOP를 사용하면 OPEN, FETCH를 사용하지 않아도 된다
FOR 루프 인덱스 이름 IN 커서 이름 LOOP
결과 행별로 반복 수행할 작업;
END LOOP;
  • 사용 예제
DECLARE
-- 명시적 커서 선언
CURSOR c1 IS
SELECT DEPTNO, DNAME, LOC
FROM DEPT;

BEGIN
-- 커서 FOR LOOP 시작(자동 Open, Fetch, Close)
FOR c1_rec IN LOOP
DBMS_OUTPUT.PUT_LINE('DEPTNO:' || c1_rec.DEPTNO);
END LOOP;
END;

예외처리

  • SQL 프로그램 실행 에러를 ‘예외’라고 함
  • 예외 이름 선언, 처리부분으로 나눠짐
  • RAISE 예외를 발생시키는 키워드
DECLARE
  cnt NUMBER:=0;
  e_user_exception EXCEPTION; -- 예외 정의
BEGIN
  SELECT COUNT(*) INTO cnt
    FROM employees
    WHERE department_id = 40;
  
IF cnt < 5 THEN
    RAISE e_user_exception;
END IF;

EXCEPTION
    WHEN e_user_exception THEN
                dbms_output.put_line('인원이 너무 적어요');
END;

저장 서브프로그램

  • 여러번 사용할 목적으로 이름을 지정하여 오라클에 저장해두는 것
  • 저장할 때 한번만 컴파일
  • 메모리, 성능, 재사용성 등 장점이 있다
  • 실행은 EXEC 저장 서브프로그램 이름(인자);
  • RETURN 값이면 인자에 OUT, 전달 인자면 IN으로 명시
CREATE [OR REPLACE] PROCEDURE 프로시저 이름
IS | AS
선언부
BEGIN
실행부
EXCEPTION
예외 처리부
END [프로시저 이름];
  • 사용 예제
create or replace PROCEDURE JOB_UPDATE(p_job_id in JOBS2.JOB_ID%TYPE, p_job_title in JOBS2.JOB_TITLE%TYPE, p_min_salary in JOBS2.MIN_SALARY%TYPE, p_max_salary in JOBS2.MAX_SALARY%TYPE)
IS
v_count NUMBER := 0;
-- CURSOR job_cursors IS SELECT JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY FROM JOBS2;
BEGIN

--CURSOR job_cursors IS
SELECT COUNT(*)
INTO v_count
FROM jobs2
WHERE job_id = p_job_id;
--job_record job_cursors%ROWTYPE;

dbms_output.put_line('count:'||' '||v_count);
IF 0 = v_count THEN
dbms_output.put_line('INSERT2'||' '||p_job_id);
INSERT INTO JOBS2 VALUES(p_job_id, p_job_title, p_min_salary, p_max_salary);
dbms_output.put_line('INSERT'||' '||p_job_id);
ELSE
dbms_output.put_line('UPDATE2'||' '||p_job_id);
UPDATE JOBS2 SET JOB_TITLE = p_job_title, MIN_SALARY = p_min_salary, MAX_SALARY = p_max_salary WHERE JOB_ID = p_job_id;
dbms_output.put_line('UPDATE'||' '||p_job_id);
END IF;
END;

Oracle PL/SQL

2018-11-29 00:00:00 +0000

PL/SQL

  • SQL에 프로그래밍 언어 기능(변수, 제어문, 함수 등)을 절차적으로 확장한 언어
  • Compile이 필요 없이 Script 생성 및 변경 가능
  • 선언부(DECLARE), 실행부(BEGIN~END), 예외처리부(Exception)
  • output에서 출력하기 위해 set serveroutput on; => 설정 필요

DECLARE

  • 변수선언
DECLARE
v_no NUMBER(3) := 10;
v_hireDate VARCHAR2(30) := TO_CHAR(SYSDATE, 'YYYY/MM/DD');
  • 상수선언
c_message CONSTANT VARCHAR2(50) :='hello world'

BEGIN~END

  • DBMS_OUTPUT 패키지 PUT_LINE 프로시저를 이용하여 결과 출력
BEGIN
DBMS_OUTPUT.PUT_LINE('hello world');
DBMS_OUTPUT.PUT_LINE(c_message);
DBMS_OUTPUT.PUT_LINE(v_hireDate);
END;
  • 전체 예제
DECLARE
v_no NUMBER(3) := 10;
v_hireDate VARCHAR2(30) := TO_CHAR(SYSDATE, 'YYYY/MM/DD');
c_message CONSTANT VARCHAR2(50) :='hello world';

BEGIN
DBMS_OUTPUT.PUT_LINE('hello world');
DBMS_OUTPUT.PUT_LINE(c_message);
DBMS_OUTPUT.PUT_LINE(v_hireDate);
END;
  • 특정 테이블의 로우를 검색하여 변수에 할당 후 출력
  • dbms_output.put_line();
  • 사용 예제
DECLARE
    v_name VARCHAR2(20)
    v_salary NUMBER;
    v_hiredate VARCHAR2(30);

BEGINE
    SELECT last_name, salary, TO_CHAR(hire_date, 'yyyy-mm-dd')
    INTO v_name, v_salary, v_hiredate
    FROM employees
    WHERE last_name = 'Chen';

dbms_output.put_line('검색된 사원 정보');
dbms_output.put_line(v_name || ' ' || v_salary || ' ' || v_hiredate);
END;

Posts

subscribe via RSS