📘웹서비스프로그래밍

jsp응용

액션 태그

  • JSP에서 객체 생성과 공유,페이지 이동과 전달, 태그 파일 작성 등에 필요한 기능을 제공하는 일종의 커스텀 태그

  • 표준액션 : 커스텀 태그 기반이지만 별도의 taglib지시어 사용없이 jsp 접두어 사용

    • jsp에서 프로그램적인 요소를 많이 구현하거나 컨트롤러로 활용할 때 유용하게 사용
    • JSP 파일에서 커스텀 태그의 구조적인 특정을 살려 HTML 형태로 프로그램 요소를 처리할 수 있기 때문에 간편함
  1. include액션
    • 다른 페이지를 포함한다는 점에서 include지시어와 동일하지만 처리 과정에 차이가 있음 -include 지시어 : include된 파일 구조를 모두 포함해 하나의 파일로 컴파일한 다음 처리, file속성 사용 -include 액션 : include된 파일을 호출해 처리도니 결과만 포함해 보여줌 , page속성 사용
  2. forward 액션
    • 클라이언트 요청을 다른 페이지로 전환하는 액션
    • 리디랙션 : 서버가 클라이언트에게 새로운 페이지로 다시 접속하도록 응답을 보내고, 응답을 받은 클라이언트가 다시 새로운 페이지로 접속하는 방식
    • forward 액션 : 클라이언트가 새롭게 접속하는 것이 아니라 서버에서 내부적으로 새로운 페이지로 이동하고 그 페이지의 내용을 클라이언트에게 응답으로 전달하는 방식(최초 request를 유지하거나 request의 setAttribute()로 속성값을 저장하고 이를 유지하면서 페이지를 이동하는경우)
  3. 자바 빈
    • 자바의 재활용 가능한 컴포넌트 모델
    • 인자가 없는 생성자(기본 생성자) 포함
    • 파일 혹은 네트워크를 통해 객체를 주고받을 수 있는 직렬화 구조
    • getter/setter 메서드를 통해 멤버 변수에 접근
  4. (1) useBean
    • scope 범위에 따라 페이지 별 객체가 살아있음
    • session은 사용자와 공유하지않고 새로운 페이지를 열었을때 객체 공유
    • application은 사용자와 공유, 새로운 페이지 열었을때 객체 공유
  5. (2) jsp:setproperty
    • 자바 빈즈 객체의 속성에 값을 할당함
  6. (3) jsp:getproperty
    • 자바 빈즈 객체의 속성값을 출력함

      커스텀 태그

      - 사용자 정의 태그를 의미함
      - 스크립틀릿 사용을 줄이고 태그와 같은 형태로 프로그램 코드를 대체하거나 재활용 가능한 구조를 통해 태그 라이브러리로 활용하고자 개발된 규격임
      

EL

  • 단순한 출력 외에도 사칙연산,비교연산,논리연산,3항 연산등을 지원함
  • scope object 접근
    • requestScope.m.name(session과 request모두에 m이라는 이름으로 저장된 객체가 있다고 할때 , request scope에 있는 객체를 참조하려면)

JSTL

  • jsp에서 스크립틀린(자바 코드 블록)을 사용하지 않고 HTML형식을 유지하면서 조건문 ,반복문, 간단한 연산과 같은 기능을 손쉽게 사용할 수 있또록 지원

  • 서버에서만 해석할 수 있는 구조로 인해 디자이너와의 협업에 불편한 부분이 있음
  • 개발 과정에서 UI확인을 위해 서버를 통해야만 하는 비효율적인 문제가 있음
  • 뷰 중심의 jsp구현에는 core 정도만 사용됨
  • core 라이브러리(변수, 처리,흐름제어,URL관리,출력등 가장 기본적인 기능을 구현해둔 라이브러리)

Maven 기반 프로젝트

  • 개발 빌드 도구
  • 다중 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속을 받아야함
  • xml 구조이기 때문에 프로젝트가 커질수록 스크립트의 내용이 길어지고 가독성이 떨어지는 문제
  • 이를 해결하기위해 Gradle(JVM기반 언어를 통해 프로그램 구조로 설정)이 나옴 ->훨씬 적은 양의 스크립트로 짧고 간결하게 작성가능

MVC패턴

  1. 디자인 패턴
    • 생성, 구조 , 행동, 동시 실행 등의 문제에 대해 여러 패턴을 제시하고 있으며 UML클래스 다이어그램을 이용해 구조를 표현하고 있음
  2. UML
    • 객체지향 설계와 구현을 지원하기 위해 만들어진 일종의 모델링 언어
    • 시스템 분석, 설계에 필요한 내용을 여러 다이어그램 형태로 정의한 구격임
  3. 추상 팩터토리 패턴
    • 객체를 생성하는 것을 별도로 구현하되 관련된 구체적인 구현을 하위클래스에서 담당하게 하는 설계 보델로 이해할수있음(interface,abstract class)
  4. MVC패턴
    • Model-view-controller의 약어
    • gui 기반의 애플리케이션 개발에 사용되는 디자인 패턴
    • mvc패턴의 목적은 화면과 데이터 처리를 분리하여 코드 간 종속성을 줄이는 것
    • 구성요소 간 역할을 명확하게 하여 코드를 쉽게 분리하고 협업이 용이해짐

Model

  • 데이터를 처리하는 영역
  • 일반적으로 데이터베이스와 연동을 위한 DAO 클래스와 데이터 구조를 표현하는 DO등으로 구성
  • 모델은 뷰나 컨트롤러에 독립적인 구조로 데이터베이스 처리를 필요로 하는 여러 애플리케이션에서 공유할 수 있으며, 웹 애플리케이션이 아닌 경우에도 사용가능
  • JPA를 사용하면 DAO생략or축소 가능, DO이외에 서비스객체를 두거나 DTO등을 사용하기도 함

View

  • 화면 구성을 담당하는 영역
  • 주어진 데이터를 출력하는 용도로만 사용하는 것이 바람직
  • 뷰에서 데이터를 직접 가져오는 방식은 권장하지 않음
  • 뷰 영역의 구현을 위해 뷰 템플릿 엔진이 사용되며 JSP역시 이러한 뷰 템플릿 엔진 중 하나
  • HTML이외에 EL,JSTL등을 사용해 컨트롤러로부터 전달받은 데이터를 출력하고 HTML,CSS등을 통해 화면 디자인
  • 뷰는 기본적으로 모델, 컨트롤러와의 종속성이 없도록 구현

Controller

  • MVC패턴의 핵심으로 모든 사용자 요청의 중심
  • 사용자 요청은 특정 뷰에 바로 전달되지 않고 컨트롤러를 통해 전달
  • 컨트롤러는 사용자 요청에 따라 모델을 통해 데이터베이스와 연동하여 데이터를 처리하고 뷰에 전달
  • 뷰로 전달하기 위해 데이터가 들어있는 DO혹인 LIST형태의 객체를 Request에 저장한 후 포워딩
  • 컨트롤러는 특정 뷰를 지정해야 하기 때문에 뷰와 종속 관계가 발생할 수밖에없음

-기능

  1. 클라이언트 요청 처리 (클라이언트가 어떤 url 요청을하면 반응하게 해야됨)
  2. 입력값을 헨들링해야됨(어떤 버튼이나 링크를 눌렀을때 값을 가지고온다거나 , 입력양식의 값을 가지고 오거나)
  3. 뷰를 이동할수 있어야됨 (입력값을 DB랑 dao를 통해 연동후 뷰로 가야됨)
  • 하나의 서블릿에서 여러 요청을 처리하는법
    1. URL 파라미터 이용
    • member?action = create
    • member?action = login
    • 컨트롤러에서는 action값을 비교하여 별도의 메서드 구현 등의 방식으로 처리함
    • 비교적 간단한 방법이지만 action 파라미터의 구조가 변경되며 관련된 HTML,JSP,컨트롤러의 수정이 필요하다는 단점이 있음
  1. 프론트 컨트롤러 구현
    • 사용자의 요청을 하나의 컨트롤러를 받고 각각의 기능을 호출해주는 방식
    • member/create.do
    • member/login.do
    • do : 서블릿 url 매핑값으로 모든 요청은 하나의 서블릿을 호출함
    • 단점 : 전체 시스템이 세부 시스템이 분리되어 있는 경우 , 콘텍스트를 분리하는 것은 세션 관리 등에 부담 , 규모 커지면 컨트롤러 클래스 비대

JDBC

데이터 베이스

  • 데이터베이스는 방대한 데이터를 쉽게 검색하거나 찾을 수 있도록 체계적으로 분류하고 정리해둔 정보의 집합이라고 할수있으며, 디지털화도니 정보만 의미하는 것은 아니다

-종류

  1. 관계형 데이터 베이스
    • 데이터 베이스로 데이터구조를 테이블이라고 하는 칼럼과 로우 구조로 정의
    • sql을 사용해 데이터를 관리한다
    • 테이블들을 관리하고 관계를 맺어준다 Pk,Fk로 관리
    • 단점 : 데이터 구조의 변경이 어렵다. 빠른속도를 요구하는 단순한 처리에 대응하기 어려움 , 데이터 관계는 유용하지만 그로 인한 처리 속도 저하가 발생 할 수 있다.
  2. NoSql 데이터 베이스
    • sql을 사용하지 않음
    • 형태가 고정되지 않은 비정형 데이터 처리에 유용 json구조의 document , map 구조의 key value, bit table 등이 있다.
    • 장점: 대용량 데이터 처리에 유리 , 분산 처리에 적합, 클라우드 컴퓨팅환경에 적합 , 빠른 읽기/쓰기 속도를 제공 , 유연한 데이터 모델링이 가능
    • 단점 : 복잡한 데이터 관계를 표현할 때 중복 데이터가 발생 가능
  3. h2 데이터 베이스
    • 프로그램속에 파일을 하나 넣어서 그 파일이 마치 db처럼 동작하는 데이터 베이스
    • 임베디드 데이터베이스로 알려져 있으며 관계형 데이터베이스 관리 시스템이다.
    • 임베디드 모드, 인메모리 모드(속도빠르지만 데이터가 유지 X) , 네트워크 서버 모드

      DBMS

    • DataBase Management System라고 불리는 소프트웨어 시스템 Oracle,Mysql

jdbc

  • java DataBase Connectivty의 약어로 자바 프로그램에서 다른 기종 간의 데이터 베이스를 표준화된 방법으로접속할수있도록 만든 api구격이다.
  • jdbc api : 응용 프로그램에서는 자바에 기본적으로 포함된 jdbc api를 사용해 프로그램 코드 작성
  • jdbc 드라이버 : 실제 데이터베이스 연결은 각 데이터베이스 회사가 제공하는 jdbc드라이버 이용
  • sql문으로 데이터를 조작하는 형태로 동작

태그:

카테고리:

업데이트: