본문으로 바로가기

학원기술서 정리

category ETC 2017. 7. 15. 21:56



 JAVA

 

● 자바 기반 응용프로그래밍 개발 기술 습득

    

● 네트워크 모델의 이해와 protocol 설계를 통한 다자간 채팅, 네트워크 등을 작성

    - soket을 이용한 채팅프로그램 구현

    - 소켓을 이용한 통신 프로그래밍을 뜻한다.

    - 소켓(Socket) : 프로세스 간의 통신에 사용되는 양쪽 끝단을 의미한다.

    - java.net 패키지를 통해 소켓프로그래밍을 지원한다. TCP와 UDP를 이용한 소켓프로그래밍이 대표적이다.


● JDBC CRUD 작업을 통한 데이터의 효율적 관리능력 습득

      - JDBC (Java Database Connectivity) CRUD(CREATE, READ, UPDATE, DELETE)

      - Java에서 DB에 접근하여 데이터 조회, 삽입, 수정, 삭제를 가능케하는 것(connection 풀 이용, try catch, finally)

     - ODBC (Open DataBase Connectivity)

       ODBC는 데이터베이스를 액세스하기 위한 마이크로소프트사에 의해 만들어진, 표준 개방형 응용 프로그램 인터페이스


 Servlet / JSP

 (세미프로젝트 기반으로 설명)

● JavaEE환경에서 자바 기반 웹 프로그래밍 개발기술 습득


● 모델2 기반의 MVC패턴을 이용한 게시판 작성

     - MVC 1


    - MVC 2


    - MVC 패턴

       클라이언트의 요청처리와 응답처리, 비즈니스 로직 처리하는 부분을 모듈화시킨 구조이다.

          - 장점 : 처리작업의 분리로 인해 유지보수와 확장이 용이하다.

                    개발자와 디자이너의 역할과 책임구분이 명확해진다.

                    각 컴포넌트의 재사용성이 높아진다.

           - 단점 : MVC 구조에 대한 이해가 필요하며 개발자의 높은 Skill이 요구된다.


● DBCP 이용 Connection 재사용 및 처리시간 단축

     - DBCP(DataBase Connection Pooling Service) 



    - 커넥션 플링

      클라이언트의 요청이 없더라도 여분의 "접속"을 미리 여러 개 확보하여 Pool 에 모아 놓고, 

      요청이 새로 들어오면 이미 생성된 커넥션 객체를 배분하며, 

      작업이 끝난 후 커넥션 객체를 해제하는 것이 아니라 다시 Pool 로 돌려보내므로 효율적


    - DBCP

      톰켓을 제작한 자카르타에서는 DBCP 라 명칭하여 이를 제공,

      자카르타 DBCP의 BasicDataSource 클래스가 Sun 사의 DataSource 인터페이스를 구현한 객체


● 회원가입, 우편번호 검색, 답변형 게시판, 파일업로드, 웹 메일 등

● 세미프로젝트 (session, 필터서블릿을 이용한 로그인처리와 검색, 페이징, 수정, 삭제 등이 가능한 게시판 작성)


 Ajax

 

● Ajax를 위한 javascript, XML

       -  AJAX란 비동기 JavaScript와 XML을 말합니다. 간단히 말하면, 

        서버측 Scripts와 통신하기 위한 XMLHttpRequest  객체를 사용하는 것. 

        서버측으로 다양한 형식(JSON, XML, HTML 및 일반 텍스트 형식 등)의 정보를  주고 받을 수 있음. 

         AJAX의 강력한 특징은 페이지 전체를 리프레쉬 하지 않고서도 수행 되는 "비동기성"이다. 

        이러한 비동기성을 통해 사용자의 Event가 있으면 전체 페이지가 아닌 일부분만을 업데이트 할 수 있음.


      - 페이지 일부분을 업데이트 하기 위한 정보를 서버에 요청할 수 있다.

      - 서버로부터 받은 데이터로 작업을 한다.


● ID중복 검사, 댓글 처리 등을 작성(아래 로직 분석)


● jQuery 및 jQuery를 이용한 AJAX 처리

     - JQuery를 간단하게 말하면 JavaScript Library. JavaScript를 좀 더 쉽게 사용하도록 만들어 짐

    - jquery를 이용해서 ajax를 사용하는 이유

      일반 javascript로  ajax를 하게되면 코딩량도 많아지고 브라우저별로 구현방법이 다른 단점이 있는데 jquery를 이용하면 

      더 적은 코딩량과 동일한 코딩방법으로 대부분의 브라우저에서 같은 동작을 할 수 있게 됩니다.


 Spring Framework

 아래쪽에 정리




  ★ ID중복 검사

1
2
3
4
5
6
7
<tr>
    <th><label for="user_number">학번(교번)</label></th>
    <td><input type="text" name="user_num" id="user_number" size="8" 
        placeholder="학번(교번)" style="height: 15pt; margin-bottom: 13px">
    <span id="idchk"></span></td>
</tr>
 
cs

상단의 <span>태그에 아이디의 중복여부를 출력합니다.

(학번이 아이디라고 생각해주세요)


member.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$(function(){
    $('#user_number').blur(function(){
        $.ajax({
            type:"POST",
            url:"../member/idcheck.jsp",
            data:{
                "user_number": $('#user_number').val()
            },
            success:function(data){
                if($.trim(data) == "YES"){
                    //alert('사용가능');
                    $('#idchk').html('<b style="font-size:18px;color:blue">사용가능.</b>');
                }else{
                    //alert('사용불가');
                    $('#idchk').html('<b style="font-size:18px;color:red">사용불가.</b>');
                }
            }
        });    
    });
});
cs

POST방식으로 url에 적힌 경로에 요청을 합니다.

data에는 요청 서버 보낼 데이터들을 입력합니다.

요청이 성공하면 success에서 콜백함수를 실행합니다.


idcheck.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="selectController" class="sogom.mgmt.libs.controller.SelectController"></jsp:useBean>
<%
    request.setCharacterEncoding("UTF-8");
 
    String user_number = request.getParameter("user_number");
    boolean flag = true;
    String str = "";
    if(user_number == null){
        user_number = "";
    }
    
    if(!user_number.equals("")){
        flag = selectController.idCheck(user_number);
    }
    if(flag){    // 이미 존재하는 계정
        str = "NO";
        out.print(str);
    
    }else{        // 사용가능한 계정
        str = "YES";
        out.print(str);
    }
%>
cs

DB에 연결해 해당 아이디가 존재하는지 확인후 결과값을 flag에 담아놓습니다. (15번라인)

그 후 조건문을 이용해 중복여부에 따라 결과를 출력시킵니다. (member.js)




★jQuerty 특징


1) 가벼움

웹에서 가볍다고 하면 용량과도 관계 있습니다.

아무리 좋은 라이브러리하고 하더라도 용량이 크면 다운로드 받고 불러오는 시간 때문에 무겁다는 느낌을 가져옵니다.

좋은 기능을 가지면서도 용량이 적은 수록 가볍고 좋다고 느껴집니다.

 

JQuery의 현재 최신 버전인 jquery-1.9.1.min.js 경우 90.4KB 정도의 파일 크기를 가지고 있고 웹에서 동작할 때는 32KB 정도 사용한다고 합니다.

 

2) CSS 셀렉터

기존에 CSS는 스타일 파일(확장자 .css)를 통해서 구현이 가능했었습니다.

웹 화면에서 스크립트 명령으로 JavaScript를 사용가능했지만, 불편한 점이 많아서 사용하기 힘들었습니다.

JQuery에서는 CSS를 간단한 코드로 변경가능하도록 적용해서 훨씬 쉽게 사용할 수 있도록 하였습니다.

 

3) 크로스 브라우저

최근에 웹 브라우저는 Internet Explorer, Chrome, Firefox, Safari 등.. 다양하게 사용되고 있습니다.

웹 개발자가 아니더라도 인터넷 컨텐츠를 사용하려면 웹 브라우저를 사용하게 됩니다.

주변 사람들을 보아도 각각 선호하는 브라우저가 달라서 JavaScript 로 만든다면, 어떤 브라우저에서는 동작하고 다른 브라우저에서는 동작하지 않는 문제가 있습니다.

그런 문제를 JQuery 에서는 간단하게 지원합니다. JQuery 코드로 이벤트를 구현하면 브라우저에 상관없이 지원하게 됩니다.




Spring Framework


● Lightweigt J2EE Architectue로써 Lightweight 컨테이너를 사용하여 EJB를 대신할 수 있는 Spring에 대한 전반적인 기술 습득


Lightweight 컨테이너

 프레임워크 내부에 컨테이너 개념을 가지고 있는 프레임워크

  -컨테이너 기능을 가진다는 것: 트랜잭션 처리, Security, 빈의 생명주기 관리와 같은

   컨테이너를 통해서 지원할 수 있는 기능들을 지원 한다는것

 Non EJB 아키텍처와 다른 부분은 각 계층별 인터페이스를 담당하는 POJO 빈들을

 유기적으로 관리해 주는 컨테이너를 가지고 있다는 것

 

장점

 EJB에 비해 배우기 쉬우며, 빈을 설정하는 방법도 쉽다

 서블릿 컨테이너에서 실행하는 것이 가능하므로 이식성이 뛰어나다

 특정 인터페이스에 종속되지 않은 POJO를 기반으로 하기 때문에 테스트가 용이

 AOP의 지원으로 EJB 컨테이너에서 지원 가능했던 컨테이너 기능들을 지원하는 것이 가능


 

단점

 분산환경을 지원하지 못한다(웹 서비스로 극복 가능)

 Lightweight 컨테이너에 대한 표준 없음

 Lightweight 컨테이너 아키텍처를 새로 배워야 한다는 부담



- EJB : 엔터프라이즈 자바빈즈(Enterprise JavaBeans; EJB)는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다.              즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다.


- POJO : Plain Old Java Object, 간단히 POJO는 말 그대로 해석을 하면 오래된 방식의 간단한 자바 오브젝트라는 말로서 Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다.



● DI를 이용한 객체의 생성, 보안에 대한 제어방법 습득

=> 객체 간의 의존관계를 객체 자신이 아닌 외부의 조립기가 수행해 준다는 개념
     (
new를 사용해서 객체를 참조하지 않고...레퍼런스를 가져다가 쓰는 것)
DI 패던을 적용할 경우 클래스는 의존하는 객체를 전달받기 위한
설정 메서드 (setter method) 나 생성자를 제공할 뿐  직접 의존하는 클래스를 찾지 않는다. 
의존(Dependency) 하는 객체를 조립기가 삽입 (Inject) 해주기 때문에 이 방식을 DI 패턴이라고 부른다. 
DI 패턴 사용시 단위 테스트가 가능하다.
단위테스트는 코드의 품질을 향상시키고 개발속도를 증가시키는데 도움이 되기 때문에, 
DI 패턴이 단일테스트를 진행하는데 도움을 준다.
DI 패턴을 적용하려면 각 객체들을 조립해 주는 조립기가 필요하다.
조립기를 직접 만들기 보다는 DI 패턴을 지원해 주는 프레임워크를 사용하는 것이 좋다
(그래서 조립기로 쓰일 것이 바로 Spring 프레임워크이다)



● Intercepter를 이용한 로직 순서 처리 기술 습득