혜야의 코딩스토리
[JSP] JSP(Java Server Pages)의 내장 객체/ MVC패턴 / 프레임 워크(Framework) 본문
[JSP] JSP(Java Server Pages)의 내장 객체/ MVC패턴 / 프레임 워크(Framework)
hyeya_ 2022. 7. 17. 23:43✏️JSP의 내장 객체
- request : 사용자의 요청을 처리
- response : 서버의 응답
- session : 사용자의 인증 정보(로그인~로그아웃) 저장
- out : 웹 브라우저에 출력 처리
- application : 서버의 정보 저장
- exception : 에러 처리
- config : jsp의 환경 정보
- page : 현재 페이지
✏️JSP 내장변수의 사용 범위
- pageContext : 현재 페이지
- request : 요청+응답 페이지 (2페이지 => form요청 페이지1, 응답 페이지1)
- session : 사용자 변수 (로그인~로그아웃 할 때까지 참조)
✏️JSP의 개발 방식
🎈Model1 방식 : JSP page 안에 자바 코드 작성 ( 요즘 사용 X)
🎈Model2 (MVC 패턴) 방식 : jsp page 와 java code 분리
Model : 데이터 처리 클래스 (DAO, DTO) // back end단
DAO(Data Access Object) : 실제적인 비즈니스 로직을 처리
DTO(Data Transfer Object) : 프로세스 사이에서 데이터를 자징. 전송하는 객체
//VO(Vectior Object)이라고도 불림.
View : 화면 처리(jsp) // front end단
Controller : 프로그램의 흐름을 제어(servlet class)
객체 | 설명 |
DAO (Data Access Object) |
특정 타입의 데이터베이스나 다른 지속적인 메커니즘에 추상 인터페이스를 제공하는 객체이다. 애플리케이션 호출을 데이터 저장 부분에 매핑함으로써 DAO는 데이터베이스의 세부 내용을 노출하지 않고 특정 데이터 조작 기능을 제공한다. |
DTO (Data Transfer Object) |
DTO는 프로세스 사이에서 데이터를 전송하는 객체를 의미한다. 많은 프로세스 간의 커뮤니케이션이 원격 인터페이스(예: 웹 서비스)에 의해 이루어지기 때문에 전송될 데이터를 모으는 DTO를 이용해서 한 번만 호출하게 하는 것이다. DTO는 스스로의 데이터를 저장 및 회수하는 기능을 제외하고 아무 기능도 가지고 있지 않다는 것이 DAO와의 차이이다. |
VO(Vectior Object) | VO는 간단한 독립체(Entity)를 의미하는 작은 객체를 의미한다. 가변 클래스인 DTO와 다르게 getter기능만 제공하는 불변 클래스를 만들어서 사용한다. |
🎈MVC(Model-View-Controller) 모델은 4 개의 계층으로 구성된다.
1) Presentation Layer (UI Layer)
- 사용자에게 보여지는 화면으로 Event-Driven 방식으로 사용자의 요청을 받는다.
2) Control Layer (Application Layer or Service Layer)
- Presentation에서 받은 요청을 Business Layer에 전달하는 부분이다.
- 비즈니스 로직과 UI(Presentation)을 분리하기 위한 계층
- 사용자의 요청(request)에 해당하는 비즈니스 로직을 결정(controller)하고, 적절한 응답(response)을 사용자에 전달하는 역할을 한다.
3) Business Layer (Domain Layer)
- 핵심적인 로직이 구현되며, Persistence Layer에 데이터를 요청하여 받아서 로직을 수행한다.
4) Persistence Layer
- 데이터베이스에서 데이터를 빼내어(Read) 객체화하거나, 데이터베이스에 데이터를 저장(Create), 수정(Update), 삭제(Delete)하는 역할
✏️Model 1의 장점
- 빠른 개발 속도
- 배우기 쉽다.
✏️Model 1의 단점
- JSP페이지에서 프리젠테이션 로직과 비즈니스 로직을 모두 포함하기 때문에 JSP 페이지가 너무 복잡해진다.
- 프리젠테이션 로직과 비즈니스 로직이 혼재되어 있기 때문에 개발자와 디자이너의 분리된 작업이 어려워진다.
- JSP페이지의 코드가 복잡해짐으로 인해 유지보수가 어려워진다.
✏️Model 2의 장점
- Web Application 이 복잡해지고, 사용자들의 요구가 증가함에 따라 새로운 방식의 개발방식에 대한 요구가 증대되었다.
- 대규모 프로젝트의 경우 개발시의 개발 비용보다는 유지보수를 쉽게 할 수 있는 개발 방식을 요구하는 경우가 많아졌다.
✏️Model 2의 단점
- Model 2 개발방식은 Model 1보다 어렵고 복잡하다.
- Model 1으로 개발하는 것보다 개발시간이 더 요구된다.
✏️프레임워크(Framework)
🎈특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성된다.
🎈컴포넌트의 재사용이 가능하다.
🎈좀 더 높은 수준에서 패턴들을 조직화한다.
🎈Framework의 종류 : Struts, Spring(전자정부 표준) 등
소프트웨어 프레임워크의 정의
- 효율적인 정보 시스템 개발을 위한 코드 라이브러리, 애플리케이션 인터페이스, 설정 정보 등의 집합으로서 재사용이 가능하도록 소프트웨어 구성에 필요한 기본 뼈대를 제공한다.
- 광의적으로 정보 시스템의 개발 및 운영을 지원하는 도구 및 가이드 등을 포함한다.
프레임워크의 특징
항목 | 설명 |
모듈화 (modularity) |
프레임워크는 인터페이스에 의한 캡슐화를 통해서 모듈화를 강화하고 설계와 구현의 변경에 따르는 영향을 극소화하여 소프트웨어의 품질을 향상시킨다. |
재사용성 (reusablity) |
프레임워크가 제공하는 인터페이스는 반복적으로 사용할 수 있는 컴포넌트르 정의할 수 있게 하여 재사용성을 높여 준다. 프레임워크 컴포넌트를 재사용하는 것은 소프트웨어의 품질을 향상시킬 뿐만 아니라 개발자의 생산성도 높여준다. |
확장성 (extensiblity) |
프레임워크는 다형성을 통해 애플리케이션이 프레임워크의 인터페이스를 확장할 수 있게 한다. 프레임워크 확장성은 애플리케이션 서비스와 특성을 변경하고 프레임워크를 애플리케이션의 가변성으로부터 분리함으로써 재사용성의 이점을 얻게 한다. |
제어의 역흐름 (inversion of control) |
프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어하여 특정한 이벤트가 발생할 때 다형성을 통해 애플리케이션이 확장한 메소드를 호출함으로써 제어가 프레임워크로부터 애플리케이션으로 거꾸로 흐르게 한다. |
✏️소프트웨어(SW) 개발 보안
SW개발 과정에서 개발자의 실수, 논리적 오류 등으로 인해 SW에 내포될 수 있는 보안 취약점의 원인, 즉 보안 취약점을 최소화하고, 사이버 보안 위협에 대응할 수 있는 안전한 SW를 개발하기 위한 일련의 보안 활동이다.
소프트웨어 개발 보안 가이드의 구성
<Java 시큐어 코딩 가이드>
유형 | 설명 |
입력 데이터 검증 및 표현 | 프로그램 입력값에 대한 검증 누락 또는 부적절한 검증, 데이터의 잘못된 형식 지정으로 인해 발생할 수 있는 보안 약점 //SQL 삽입, 자원 삽입, 크로스 사이트 스크립트(XSS) 등 26개 |
보안 기능 | 보안 기능(인증, 접근 제어, 기밀성, 암호화, 권한 관리 등)을 적절하지 않게 구현 시 발생할 수 있는 보안 약점 //부적절한 인가, 중요 정보 평문 저장(또는 전송) 등 24개 |
시간 및 상태 | 동시 또는 거의 동시 수행을 지원하는 병렬 시스템, 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안 약점 //경쟁 조건, 제어문을 사용하지 않는 재귀 함수 등 7개 |
에러 처리 | 에러를 처리하지 않거나, 불충분하게 처리하여 에러 정보에 중요 정보(시스템 등)가 포함될 때 발생할 수 있는 보안 약점 //취약한 패스워드 요구 조건, 오류 메시지를 통한 정보 노출 등 4대 |
코드 오류 | 타입 변환 오류, 자원(메모리 등)의 부적절한 반환 등과 같이 개발자가 범할 수 있는 코딩 오류로 인해 유발되는 보안 약점 //널 포인트 역참조, 부적절한 자원 해제 등 7개 |
캡슐화 | 중요한 데이터 또는 기능성을 불충분하게 캡슐화하였을 때 인가되지 않는 사용자에게 데이터 누출이 가능해지는 보안 약점 //제거되지 않고 남은 디버그 코드, 시스템 데이터 정보 노출 등 8개 |
API 오용 | 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API를 사용하여 발생할 수 있는 보안 약점 //DNS Lookup에 의존한 보안 결정, 널 매개 변수 미조사 등 7개 |
'꿈 : 멋진 개발자 🧸 > Java' 카테고리의 다른 글
[Spring] 스프링 프레임워크의 특징 (0) | 2022.09.23 |
---|---|
[Spring] 스프링 회원 관리 프로그램 (0) | 2022.09.23 |
[JSP/Servlet] JSP(Java Server Pages)와 서블릿 (0) | 2022.07.17 |
[Java] 서블릿이란? (0) | 2022.07.17 |
[자바/Java] GUI 커피 주문 프로그램(키오스크) ☕ (0) | 2022.06.08 |