728x90
반응형
728x90
반응형

개발 환경 구축

JSP를 실행 하기위해 필요한 개발 환경입니다.

1. JDK설치 

자바를 개발하기 위한 필수 도구로 자바 실행 및 디버깅을 위해 사용됩니다.

http://www.oracle.com/



오라클 홈페이지에 접속 후 네모 박스를 클릭해줍니다.

자바SE는 가장 널리 쓰이는 API입니다.



둘 중 아무거나 선택하여 JDK다운로드 페이지로 이동합니다.


Accept License Agreement를 체크 하고 자신의 운영체제에 맞는 버전을

선택하여 다운로드 합니다.

다운로드를 완료하고 next버튼을 누르면 설치가 완료됩니다.


2. 웹 컨테이너 

JSP와 서블릿을 실행시켜주기 위한 컨테이너로 톰캣을 설치해보겠습니다.

http://tomcat.apache.org/

톰캣 버전은 최신 버전보다 한 단계 낮은 버전을 사용합니다.

왜나하면 이전버전에는 이미 안정성이 검증되었기에 전버전을 많이 사용한다고 합니다. 

아래 사진과 같이 tomcat 8.0을 누르고 자신의 운영체제에 맞는 파일을 다운로드하여 설치합니다.



3. 코드를 작성하기 위한 개발 도구 - 이클립스



다운로드 버튼을 클릭합니다.

이클립스는 무료로 배포 중이나 DONATE버튼 도 있네요 

이클립스에 감사하신 분들은 기부를 해주셔도 좋을 것 같네요 ㅎㅎ



다운로드를 완료하고 실행하면 인스톨러가 뜨네요.

프로그래밍을 하기 위해 

Eclipse IDE for Java Developers 또는

Eclipse IDE for java EE Developers 둘 중 하나를 선택하여 설치합니다.



원하는 폴더 위치를 정해주면 설치 끝!



728x90
반응형
728x90
반응형

JSP(Java Server Pages)

 : HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 브라우저를 관리하는 언어입니다.

즉 웹 사이트를 보다 쉽게 구축할 수 있도록 만들어주는 스크립트 언어입니다.


JSP는 자바언어를 기반으로 하는 스크립트 언어로 자바 기능을 그대로 사용할 수 있다는 장점이 있습니다.

또한 자바 기반이기에 플랫폼에 독립적입니다. ( 운영체제가 상관없습니다.)

HTML 코드 속에 들어가는 자바 소스코드로 <% 자바코드 %> 또는 <%= 자바코드 =%> 형태로 사용합니다.


JSP(Java Server Page) 특징

-웹 프로그래머는 소스코드를 수정할 경우 디자인 작업에 신경쓰지 않아도 되기 떄문에 작업 효율이 올라갑니다.

-HTTP와 같은 프로토콜에 따라 클라이언트의 요청을 처리하고 응답합니다.

-대규모 애플리케이션을 구현할 때 사용되는 스프링 프레임워크와 연동이 가능합니다.




MVC2 구조를 제가 한 프로젝트에 접목시켜보았습니다.



728x90
반응형
728x90
반응형

1. Java 

 : 자바는 네트워크 상에서 쓸 수 있도록 개발한 객체 지향 프로그래밍 언어

 

Java의 특징

  a. 자바가상머신(JVM)만 설치하면 컴퓨터의 운영체제에 상관없이 작동한다. 

      ( 즉 운영체제에 독립적이다 = ms, linux, mac 모두 사용 가능하다)

  b. 기본 자료형을 제외한 모든 요소들이 객체로 표현 가능하다

  c. 객체 지향 개념의 특징인 캡슐화, 상속성, 다형성이 잘 적용된 언어이다.

  d. Garbage Collector를 통한 자동적인 메모리 관리가 가능하다.

  e. 멀티쓰레드(Multi-thread)를 지원한다.


2. OOP(객체 지향 프로그래밍)

 : OOP란 Object-Oriented Programming의 약어로 객체 지향 프로그래밍을 의미한다.

  데이터를 객체로 취급하여 프로그램에 반영한 것이며, 순차적으로 프로그램이 동작하는 기존의것들과는 다르게 객체와 상호작용을 통해 프로그램이 동작하는 것을 말한다.


OOP특징

 a. 객체 지향 프로그래밍은 코드의 재사용성이 높다.

 b. 코드의 변경이 편하다.

 c. 직관적인 코드분석이 가능하다.

 d. 개발 속도가 향상된다.

 e. 상속을 통한 장점이 극대화된다.


3. Object

 : 객체는 OOP에서 데이터(변수)와 그 데이터에 관련되는 동작(함수), 즉 절차, 방법, 기능을 모두 포함한 개념이다.

   ex) 기차역에서 승차권을 발매하는 경우, 실체인 '손님'과 동작인 '승착권 주문'은 하나의 객체이며, 실체인 '역무원과' 동작인 '승차권 발매'도 하나의 객체이다. 같은 성질, 같은 구조와 형태를 가지는 객체는 등급으로 정의하고 등급에 속하는 객체는 그 등급의 인스터스라고 한다.


4. Overloading vs Overriding ★중요

 Overloading(오버로딩)

  -클래스 내에 같은 이름의 메소드를 여러 개 정의하는 것이다.

  -매개변수의 타입이 다르거나 개수가 달라야 한다.

    (return type)과 접근 제어자는 영향을 주지 않는다.


 Overriding(오버라이딩)

  -상속에서 나온 개념이다

  -부모 클래스의 메소드를 하위 클래스에서 재정의하는 것이다.


5. Servlet, JSP

  Servlet : Container가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것( Html in Java )

  Jsp(Java Server Page) : Html 기반에 Java코드를 블록화하여 삽인 한 것 ( Java in Html )

 *서블릿의 경우 자바에서 Html코드를 작성해야하기에 불편해 Jsp를 사용합니다.


6. JDBC (Java DataBase Connection)

 : java언어를 통해 데이터 베이스에 접근할 수 있는 프로그래밍이다.


7. Get과 Post방식

 Get방식 

  -클라이언트에서 서버로 데이터를 전달할 때, 주소 뒤에 '주소명' 과 '값'이 결합된 스트링 형태로전달하는 방식이다.

  -주소창에 쿼리 스트링이 그대로 보여지기 때문에 보안성이 떨어진다.

  -길이에 제한이 있다

  -Post방식보다 상대적으로 전송 속도가 빠르다.


 Post방식 

  -일정 크기 이상의 데이터를 보내야 할 때 사용한다.

  -서버로 보내기 전에 인코딩을 하고 전송 후에는 서버에서 다시 디코딩 작업을 한다.

  -주소창에 전송하는 데이터의 정보가 노출되지 않아 Get방식에 비해 보안성이 높다.

  -속도가 Get방식보다 느리다.

  -쿼리스트링(문자열) 데이터 뿐만 아니라, 라디오 버튼, textarea, hidden 같은 객체들의 값도 전송이 가능하다.


  Get과 Post 차이점

   - Get은 주로 웹 브라우저가 웹 서버에 데이터를 요청할 때 사용

   - Post는 웹 브라우저가 웹 서버에 데이터를 전달하기 위해 사용.

   - Get을 사용하면 웹 브라우저에서 웹 서버로 전달되는 데이터가 인코딩되어 URL에 붙는다. 

   - Post방식은 전달되는 데이터가 보이지 않는다.

   - Get방식은 전달되는 데이터가 255개의 문자를 초과하면 문제가 발생할 수 있다.

   - 웹 서버에 많은 데이터를 전달하기 위해서는 Post 방식을 사용하는 것이 바람직하다.


8. Session과 Cookie

 Session과 Cookie를 사용하는 이유 

  -현재 우리가 인터넷에서 사용하고 있는 Http프로토콜은 연결 지향적인 성격을 버렸기 때문에 새로운 페이지를 요청할 때 마다 새로운 접속이 이루어지며 이전 페이지와 현재 페이지 간의 관계가 지속되지 않는다. 이에 따라 Http프로토콜을 이용하게 되는 웹 사이트에서는 엡 페이지에 특정 방문자가 머무르고 있는 동안에 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.


 Session 

  -특정 웹 사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한 번의 방문을 의미한다.

  -session에 관련된 데이터는 server에 저장된다.

  -Cookie에 비해 보안성이 좋다. (사용자에게 저장되지 않기 때문)


 Cookie

  -사용자 정보를 유지할 수 없다는 Http의 한계를 극복할 수 있는 방법

  -인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트 사이를 매개해 주는 정보이다.

  -Cookie는 인터넷 사용자가 특정 웹 서버에 접속할 때, 생성되는 개인 아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시 파일로써, server가 아닌 client에 텍스트 파일로 저장되어 다음에 해당 웹 서버를 찾을 경우 웹 서버에서는 그가 누구인지 어떤 정보를 주로 찾았는 지 등을 파악할 때 사용된다.

  -Cookie는 client pc에 저장되는 정보이기 때문에, 다른 사용자에 의해서 임의로 변경이 가능하다. (정보 유출 가능, session보다 보안성이 낮은 이유이다)

  

 Q. 보안성이 낮은 Cookie 대신 session을 사용하면 되는 데 쿠키를 사용하는 이유는?

 A. 모든 정보를 session에 저장하면 server의 메모리를 과도하게 사용하게 되어 server에 무리가 있기 때문이다.


9. MVC 패턴

 : 객체지향 프로그래밍에서 MVC는 사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련 시키기 위한 방법론, MVC패턴은 목적 코드의 재사용에 유용한 것은 물론, 사용자 인터페이스와 응용프로그램 개발에 소요되는 시간을 현저하게 줄여주는 형식이라고 많은 개발자들이 평가하고 있다.

 

 MVC 구성요소

  -Model : 애플리케이션에 비즈니스 로직과 사용되는 데이터를 다루는 영역이다.

  -View : 사용자 인터페이스 내의 구성 요소들을 표현(사용자에게 보여지는 화면, jsp를 통해 구현 된다)

  -Controller : Model과 View를 연결하고 있는 클래스를 대표하며 Model과 View내의 클래스들 간 정보 교환에 사용된다.


10. Interface, Abstract ★

 Interface

  -일종의 추상 클래스

  -오직 추상 메소드와 상수만을 멤버로 갖는다.  

  -Implements 키워드를 사용한다.

  -상속의 관계가 없는 클래스 간 서로 공통되는 로직을 구현하여 쓸 수 있도록 한다.

  -Extends는 하나의 클래스만 상속 가능하나 Interface는 다중 상속이 가능하다.


 Abstract

  -추상메소드를 하나 이상 가진 클래스

  -자신의 생성자로 객체 생성이 불가능하다.

  -하위 클래스를 참조하여 상위 클래스의 객체를 생성한다.

  -하위 클래스를 제어하기 위해 사용한다.


 Interface vs Abstract

  공통점

   -new 연산자로 인스턴스 생성이 불가능하다.

   -프로토타입만 있는 메소드를 갖는다.

   -사용하기 위해서는 하위클래스에서 확장 또는 구현해야 한다.

  차이점

   -사용하는 키워드가 다른다.

   -Abstract는 일반 메소드를 사용할 수 있지만, Interface는 메소드 선언만 가능하다.


11. Call by Reference, Call by Value

 -Call by Reference : 매개 변수의 원래 주소에 값을 저장하는 방식, 클래스 객체를 인수로 전달한 경우 

 -Call by Value : 인수로 기본 데이터형을 사용, 주어진 값을 복사하여 처리하는 방식이다. 

      메소드 내의 처리 결과는 메소드 밖의 변수에 영향을 미치지 않는다.


12. Static의 의미

 -클래스가 로딩될 때, 메모리 공간을 할당하는 데 처음 설정된 메모리 공간이 변하지 않음을 의미한다.

 -객체를 아무리 많이 만들어도 해당 변수는 하나만 존재한다. (객체와 무관한 키워드)


13. Framework

 -특정 형태의 소프트웨어 문제를 해결하기 위해 상호 협력하는 클래스 프레임과 인터페이스 프레 임의 집합

 -특정한 틀을 만들어 놓고 거기에 살을 붙여 놓음으로 프로그램을 만들어 작업 시간을 줄여주는   것이다.

 -Framework는 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성된다.

 -Framework는 이렇게 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의한다.

 -Framework 컴포넌트들은 재사용이 가능하다.

 -Framework는 높은 수준의 패턴을 조작한다.


면접 시 익혀 두시면 좋을 것 같아요!

 * Framework가 중요한 이유

  -객체지향 개발을 하면서 개발자의 취향에 따라 다양한 프로그램이 나타난다. 프로그램 개발에   투입되는 개발자도 점점 늘어남에 따라 전체 시스템의 통합성, 일관성이 부족하기 때문에 Framework가 만들어지게 되었다.

   대표적인 예로는 SpringFramework가 있다.

 * Framework의 장/단점

 장점 : 개발 시간을 줄일 수 있고 오류로부터 자유로울 수 있다.

 단점 : 프레임워크에 의존하다보면 개발 능력이 떨어져 프레임워크 없이 개발이 불가능하다.


스프링 프레임 워크와 전자정부 프레임워크의 차이점!

-스프링 프레임워크는 전자정부 프레임워크 기반의 기술을 사용하고 있어 스프링을 필요한 기술을 주입해야하는 반면에 전자정부는 필요 없는 기술들을 덜어내는 차이가 있는 것 같다.

 전자정부 표준프레임워크 : 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하는 프레임 워크




14. Garbage Collection

 : 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수하는 것 , 시스템에서 Garbage Collection을 수행하는 부분을 Garbage Collector라고 부른다.


15. Primitive type과 Reference type

 Primitive type : 변수에 값 자체를 저장하는 것

  정수형 byte, short, int, long 실수형 float, double 문자형 char 논리형 boolean

 Reference type : 메모리 상에 객체가 있는 위치를 저장하는 것

  Class, Interface, Array 등이 있다.


16. Wrapper Class

 : Primitive type으로 표현할 수 있는 간단한 데이터를 객체로 만들어야 할 경우의 기능을 지원하는 클래스


17. Spring framework(스프링 프레임워크)

  -java 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이다

  -자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크이다.

  -자바 개발을 위한 프레임워크로 종속 객체를 생성해주고 조립해주는 도구

  -자바로 된 프레임워크로 자바SE로된 자바 객체(POJO)를 자바EE에 의존적이지 않게 연결해주는 역할


 Spring framework의 간단한 특징

  -크기와 부하의 측면에서 경량이다.

  -제어의 역행(IoC)이라는 기술을 통해 애플리케이션의 느슨한 결합을 도모한다.

  -관점지향 프로그래밍(AOP)을 위한 풍부한 지원 (AOP : 객체지향프로그래밍을 더 객체 지향답게 만들어줌)

  -애플리케이션 객체의 생명 주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너라고 할 수 있다.

  -간단한 컴포넌트로 복잡한 애플리케이션을 구성하고 설정할 수 있다.


 Spring framework의 자세한 특징

  -경량 컨테이너로서 자바 객체를 직접 관리

    : 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻   어올 수 있다.

  -스프링은 POJO(Plain Old Java Object) 방식의 프레임워크

    :  일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.

  -스프링은 제어의 역행(IoC : Inversion Of Control)을 지원

    :  컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.

  -스프링은 의존성 주입(DI : Dependency Injection)을 지원

    :  각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임 워크가 서로 연결시켜준다.

  -스프링은 관점 지향 프로그래밍(AOP : Aspect Object Programming)을 지원

    :  트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능 을 분리하여 관리할 수 있다.

  -스프링은성와 관련된 다양한 서비스를 지원

    :  MyBatis, hibernate 등 이미 완성도가 높은 데이터 베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.

  -스프링은 확장성이 높다.

    :  스프링에서 지원되고 있는 라이브러리를 별도로 분리할 수 있다.


18. Thread

 Thread : 프로세스내에서 동시에 실행되는 독립적인 실행 단위를 말한다.

 Process : 운영체제에서 실행중인 하나의 프로그램(하나 이상의 쓰레드를 포함한다 )


 Thread 장점 

 -빠른 프로세스를 생성한다.

 -적은 메모리로 사용이 가능하다.

 -정보를 쉽게 공유할 수 있다.

 Thread 단점

 -교착상태에 빠질 수 있다.

  *교착상태 : 다중 프로그래밍 체제에서 하나 또는 그 이상의 프로세스가 수행할 수 없는 어떤 특정 시간을 기다리고 있는 상태


 Thread와 Process차이

  : 여러 분야에서 '과정' 또는 '처리'라는 뜻으로 사용되는 용어로 컴퓨터 분야에서는 '실행중인 프 로그램'이라는 뜻으로 쓰인다. 이러한 프로세스 내에서 실행되는 각각의 일을 스레드라고 한다. 프로세스 내에서 실행되는 세부 작업 단위로 여러 개의 스레드가 하나의 프로세스를 이루게 되는 것이다.


19. 접근제한자( public > protected > default > private )

 -public : 접근 제한이 없다. ( 같은 프로젝트 내에 어디든 사용 가능하다)

 -protected : 같은 패키지 내, 다른 패키지에서는 상속받아 자손 클래스에서 접근 가능

 -default : 같은 패키지 내에서만 접근 가능

 -private : 같은 클래스 내에서만 접근 가능


20. 소켓 통신(TCP/UDP)

 TCP(Transmission Control Protocol)

  -연결형 서비스 제공

  -높은 신뢰성 보장

  -데이터 흐름 제어, 혼잡 제어

  -전이중, 점대점 서비스(양방향 송수신 서비스)

 UDP(User Datagram Protocol)

  -비연결형 서비스 제공

  -신뢰성이 낮다

  -데이터의 전송 순서가 바뀔 수 있다

  -TCP보다 전송속도가 빠르다.


21. Stack, Queue

 STACK

  -LIFO(Last In First Out)의 후입선출 구조

  -push()를 이용한 데이터 입력, pop()을 이용한 데이터 출력

  -ex) 역순 문자열 만들기

 QUEUE

  -FIFO(Fist In First Out)의 선입선출 구조

  -enQueue()를 이용한 데이터 입력, deQueue()을 이용한 데이터 출력

  -ex) 우선순위가 같은 작업 예약


22. Singleton Design Pattern 

 : 클래스 인스턴스가 하나만 만들어지도록 하고, 그 인스턴스에 대한 전역 접근을 제공한다.

 디자인 패턴 중 하나로 싱글톤은 하나의 객체만을 생성하게 강제하는 패턴입니다. 1개의 객체만 되도록 만드는 것입니다.


23. Database에서 Index

 : 인덱스는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료구조를 말함

   인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다.

   고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다.

   인덱스를 저장하는 데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다.

   데이터 베이스에서 테이블과 클러스터에 연관되어 독립적인 저장 공간을 보유하고 있는 객체

   사용자는 데이터 베이스에 저장된 자료를 더욱 빠르게 조회하기 위해 인덱스를 생성하고 사용함


 DB에서 자료를 검색하는 2가지 방법

 -FTS(Full Table Scan) : 테이블을 처음부터 끝까지 검색하는 방법

 -Index Scan : 인덱스를 검색하여 해당 자료의 테이블을 액세스 하는 방법



출처 : http://hahahoho5915.tistory.com/16




 


 











728x90
반응형
728x90
반응형

프로젝트를 새로 시작하거나 공부를 새로 하실 때 이클립스가 느려지거나 지저분함을 막기 위해

workspace를 만들곤 하는데요.

더 이상 필요 없는 workspace파일을 지워도 workspace목록은 여전히 남아있죠.

저는 지저분한 게 싫어서 바로바로 정리하는 편이라 저 같은 분들에게 유용할 것 같은데요.



저는 삭제하기 위해 test라는 workspace를 하나 만들어줬습니다.


1. 먼저 각자 저장된 이클립스 폴더로 들어갑니다. 폴더 안에 configuration폴더로 이동합니다


2. .settings폴더로 이동합니다.



3. .settings폴더 안에 있는 파일들 중 org.eclipse.ui.ide.prefs파일을 메모장 또는 텍스트 에디터로 열어줍니다.


4. org.eclipse.ui.ide.prefs파일 안에서 rececnt_workspaces= 에서 자신이 지우고 싶어하는 workspace를 지워줍니다.

경로 구분은 ( \n으로 되어있습니다. )




5. 삭제 완료


확인을 위해 이클립스를 실행하면 삭제가 잘되어있네요.








728x90
반응형
728x90
반응형

propagation의 사전적 의미는 전파,확산 입니다.

사용자가 마우스로 웹 페이지 내의 버튼을 클릭했을 때 대부분의 사람들은 버튼만 반응했다고 생각하게 된다. 하지만 웹페이지 내부에서는 버튼을 감싸고 있는 부모 태그들 또한 클릭 이벤트에 반응하게 됩니다. 이를 버블업이라고 합니다.



위 슬라이드 우측의 문서구조를 보면 a태그는 li, ul의 두 개의 부모 태그가 있습니다.

사용자가 a태그를 클릭했을 때 클릭이벤트는 a태그를 감싸고 있는 li, ul태그로 순차적으로 전달되는데   a태그의 onclick -> li태그의 onclick -> ul태그의 onclick을 실행하게 됩니다.

만약에 ul태그에 클릭 이벤트가 있을 경우 a태그를 클릭하는 순간에는 의도하지 않은 ul태그의 클릭 이벤트가 실행됩니다. 

예를 들면 이웃집에서 이사를 와서 바로 옆집에 살고 있는 슬기네 집에 떡을 돌렸다고 합니다. 슬기는 떡을 받고 기쁜 나머지 아버지에게 가져다 줍니다. 슬기는 “아버지 옆집에서 새로 이사를 왔다고 떡을 주고 갔어요~” 슬기는 효심이 지극했습니다. 슬기 아버지 또한 효심이 지극하여 받자마자 바로 슬기 할아버지에게 떡을 가져다 줍니다. 슬기 아버지는 “아버지 옆집에서 새로 이사를 왔다고 맛있는 떡을 주고 갔습니다.” 이렇게 떡을 오손 도손 나눠 먹게 됩니다.

그런데 옆집에서 슬기에게 떡을 주면서 이 떡은 너 혼자만 먹어야 한다라고 말하면서 슬기에게 떡을 주었다면 슬기는 혼자 먹습니다. 효심보다는 떡에 눈이 멀었던 거죠…..

이때 혼자만 먹어라는 의미를 stopPropagation이라고 한다

stopProPagation은 부모태그로의 이벤트 전파를 stop중지하라는 의미입니다.

 

Event.preventDefault()?

preventDefault()를 이해하기 위해서는 a태그를 유심히 봐야 합니다. 위 슬라이드에 표시된 a태그는 내부적으로 href=”#” 속성을 가지고 있는데 href속성은 웹 브라우저에게 a태그를 클릭시 이동하여야 할 페이지를 나타냅니다. 예를 들면 <a href=”detailproduct?code={#code}” onclick=””}>상세정보로 이동</a>처럼 사용합니다

a태그는 click이벤트 또한 가지고 있기 때문에 a태그를 클릭했을 때는 두 가지 행동을 하게 되는 데 첫 번째는 click이벤트를 실행합니다. 두 번째는 브라우저에게 href에 표시된 곳으로 이동하도록 합니다. href=”#”속성을 넣은 이유는 a태그에는 click이벤트가 있으니 click이벤트만 실행하고 웹 브라우저는 이동하지 말아라 하는 의도로 설정한 값입니다.  이렇게 하게 되면 클릭 시에는 click이벤트만 실행하고 웹 브라우저는 이동하지 마라하는 의도로 설정한 값입니다. 이렇게 하게 되면 클릭 시에는 click이벤트만 실행되고 웹 브라우저가 이동하지 않게 됩니다. 일종의 꼼수이죠

근데 여기서 한가지 주의해야 할 점이 있는데 Href”#”은 웹 브라우저가 다른 곳으로 이동하지는 않지만 스크롤이 있는 곳에서는 페이지 상단으로 이동하게 됩니다. Href=”#~~~”으로 사용하는 것을 앵커(anchor :)라고 하는데 href=”#”은 웹 브라우저의 최상단을 가리키는 앵커입니다.

글을 작성할 때나 회원 가입을 할 때 버튼이 한번 클릭할 때마다 쭉 위로 올라가는 경험을 해보신 분들은 짜증을 알 것입니다.

이 브라우저의 행동을 막기 위해 사용하는 것이 preventDefault입니다.

preventDefault a태그처럼 클릭 이벤트 외에 별도의 브라우저 행동을 막기 위해 사용됩니다.

또한 form submit액션을 막아주기도합니다.


출처 : http://ismydream.tistory.com/98

728x90
반응형
728x90
반응형

AOP(Aspect Oriented Programming: 관점지향 프로그래밍)

 스프링에서 여러 개의 클래스들이 각각의 고유한 관심사에만 집중하도록 공통으로 쓰이는 로그관련모듈, 트랜잭션관련모듈, jdbc connection 관련 모듈등을 모두 다른 각각의 클래스에서 객체 생성하게 하지 말고, 스프링에서 객체 생성하고 관리하는 것입니다.


위 사진은 왼쪽의 각각의 서비스들에 로깅, 보안, 트랜잭션 기능은 강사, 학생, 컨텐츠 서비스 각 서비스의 일차적인 관심사는 아님 그러나 로깅, 보안, 트랜잭션 모듈들은 왼쪽 각 서비스들의 모듈을 참조하고 있습니다.

 

-로깅 : 프로그램 개발이나 운영 시 발생하는 문제점을 추적하거나 운영 상태를 모니터링하기 위한 텍스트, Log4j2 : 로그를 전담하는 프레임 워크(공통적인 작업을 자동화하고, 개발자로 하여금 빨리 애플리케이션을 개발하도록 하기 위한 노력의 산물)

-보안 :

-트랜잭션 : DB JAVA언어가 데이터를 주고 받는 과정에 원자성(All or Nothing)을 부여하는 수단


AOP를 이용함으로써 공통 모듈들을 관리하였습니다. 시스템의 전반적인 관심사(로깅, 보안, 트랜잭션 등)를 갖는 모듈들이 그들이 영향을 끼치는 다른 컴포넌트들(학생, 강의, 컨텐츠 서비스)을 모두 덮어버리고 각각의 서비스들은 그들의 고유 기능에 집중할 수 있게 됩니다.

 


 

AOP의 주요 개념 (핵심 기능 바라보며 공통 기능이 철저하게 분리, 개발자가 상황에 따라 핵심기능에 공통 기능을 추가할 수 있습니다.)

1) 관점(Aspect)

-구현하고자 하는 횡단 관심사의 기능을 의미, 한 개 이상의 포인트 컷과 어드바이스의 조합으로 이루어집니다.

-공통기능(로깅, 보안 ,트랜잭션) ex) 물을 트는 행위

2) 조인포인트(Join point)

-관점(Aspect)를 삽입하여 어드바이스가 적용될 수 있는 위치를 말합니다.

-핵심 기능 하나하나 ex) 밥을 짓는 행위

3) 어드바이스(Advice)

  -관점(Aspect)의 구현체로 조인 포인트에 삽입되어 동작하는 코드

-Aspect의 기능 자체

 

4) 포인트 컷(Point Cut)

 어드바이스를 적용할 조인 포인트를 선별하는 과정이나 그 기능을 정의한 모듈을 의미, 패턴 매칭을 이용하여 어떤 조인 포인트를 사용할 것인지 결정한다.

5) 타켓(Target)

 어드바이스를 받을 대상, 즉 객체를 의미, 비즈니스 로직을 수행하는 클래스일 수도 있지만, 프록시 객체가 될 수도 있습니다.

6) 위빙(Weaving) : advice point cut에 입히는 행동


출처 : http://bobr2.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%A3%BC%EC%9A%94-%EA%B0%9C%EB%85%90-%EC%9A%A9%EC%96%B43-AOPAspectoriented-programming

728x90
반응형
728x90
반응형

1. 웹 애플리케이션 만드는 순서

 구상->기획(세부적인 실행 계획을 세우는 단계)->디자인(웹 사이트의 UI, 사용자 경험을 향상)->

개발(프로그래밍)->테스트(QA, 버그를 찾는 일, 놓친 부분을 잡는 일)

Start small : 처음부터 크게 시작하지 말고 작은 것부터 시작해 크게 나가자

복잡도 : 체크박스가 하나라면 경우가 2가지 발생한다, 두 개라면 4가지 경우가 발생

        체크박스가 50개라면 천조가지의 경우가 발생해 테스트를 진행해야 함

2. 구상

 최신순 정렬 : 독립적인 컨텐츠에게 적합

순차적 정렬이 필요한 컨텐츠에게 적합하지 않다.

3. 기획(어떻게 동작해야 하는가?)

 UI(User Interface) : 사용자가 시스템을 제어하는 조작장치, 포괄적 ex) 웹사이트 버튼, 스위치

모델링(Modeling) : 사용자 입장에서 동작하는 기능을 가상으로 만들어 보는 것

4. 인터넷과 웹의 역사


https://opentutorials.org/course/1688/9408





728x90
반응형

'프로그래밍 > Web' 카테고리의 다른 글

아파치 버전 확인하는 방법  (0) 2022.10.21
HTTP란 무엇인가??  (0) 2017.12.15
JSP 처리과정!!  (0) 2017.11.30
WEB과 WAS의 차이(아파치와 톰캣의 차이에 대해 아는가)  (2) 2017.11.15
728x90
반응형

+ Recent posts