※스프링 - Servlet, JSP 차이점
1.Servlet
1) 서블릿 은 서버에서 우ㅐㅂ페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램이다.
2) 서블릿 은 자바 코드안에 html 태그가 삽입되며 자바언어로 되어있고,. java가 확장자입니다.
3) 클라이언트 요청을 처리하고 그결과를 다시 클라이언트에게 전송하는 서블릿 클래스의 구현 규칙을 지킨 자바프로그램입니다.
4) 서블릿은 자바언어를 웹어플리케이션에 조금 더 개발하기 쉽게 하기 위해 만든 API (라이브러리. 클래스들)이며 , 규약에 맞게 라이브러리나 클래스들을 상속 및 구현하여 만든 클래스들을 서블릿이라고 합니다.
2. JSP(JAVA SERVER PAGES)
1) html을 코딩하기 너무 어렵고 불편해서 hrml 내부에 java 코드를 삽입하는 형식이 jsp방식입니다.
2) 서블릿의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술이라고 합니다.
3) 서블릿을 이용하게 되면 웹프로그래밍을 할 수 있지만 자바에 대한 지식이 필요하고 , 화면 인터페이스 구현에 너무 많은 코드를 필요로 하는증 비효율적인 측면들이 많아 보다 간편하게 웹프로그래밍을 구현하게 만든 기술이다.
4) jsp는 서블릿 기반의 '서버 스크립트 기술'이라 하고 스크립트 기술이란 asp, php처럼 미리 약속된 규정에 따라 간단한 키워드를 조합하여 입력하면 실행시점에 가각의 키워드에 매칭이 되어있는 어떤 코드로 변환 후 실행한다.
3. servlet과 jsp의 차이점
Servlet | JSP |
1.자바코드로 구현하고 컴파일하고 배포해야 한다. 2. HTML 태그로 문자열("")스크림으로 처리해야 한다. 3. 코드가 수정되면 다시 컴파일하고 배포해야 한다. 4. 사용자의 요청을 받아 분석하고 비지니스층과 통신하여 처리하고 처리한 결과를 사용자에게 응답하는 Controller에서 사용 |
1. 키워드가 태그화 되어 서블릿에 비해 배우기 쉽다. 2. 자바코드를 <%%>태그 안에 처리해 주어야한다. 3. HTML처럼 태그를 사용하여며 자바코드도 사용이 가능하다. 4. 웹애플리케이션 구조에서 사용자에게 결과를 보여주는 프리 젠테이션을 담당하는 VIEW에서 사용 |
4. MVC패턴의 JSP와 Servlet

-> 원래는 jsp만 이용한 개발(model1 방식) 이 유행하다 유지보수 단계에서 많은 단점을 느껴 각가의 역할을 나누어 서블릿과 jsp를 동시에 사용하여 개발하는 방식(moder2방식 mvc) 으로 개발하고 있어 servlet 과 jsp 를 나누어 사용하고 있다.
jsp는 html 태그 사용이 용이하고 자바코드 사용이 불편하기 때문에 웹 애플리케이션에서 사용자에게 결과를 보여주는 views를 담당하고, servlet 은 자바코드 작성이 편리하기 때문에 주로 화면과 통신하여 자료를 받아 가공해서 자료를 다시 화면에 전달하는 controller 역할을 하고 있다.
(보이는 부분은 html 이 중심이 되는 jsp , 다른 자바클래스에게 데이터를 넘겨주는 부분은 java 코드가 중심이 되는 servlet 이 담당, 유지보수 용이 , 가독성이 좋아진다.)


5. MVC패턴의 JSP와 Servlet 흐름패턴
(사용자 요청) -> 디스패치 서블릿 ->handler controller에서 (사용할 controller를 고르게 된다.) -> 사용할 controller 에 들어가게 되고, handler mapping을거쳐 (사용할 mapping 을 고르게 된다.) ->사용할 mapping 에들어가서 메서드를 처리하고 어떤 view파일을 사람들한테 보여줄지 고른다-> 디스패치 서블릿에 자료 넘긴다 -> view에서 디스패치에서 해당 자료 다시 받아서 -> 사용자에게 응답을 해준다.
(controller와 view 사이과정에서 model이란 곳을 거쳐서 자료를 전달받는다.)
※ DAO, DTO, VO 개념
1.DAO
-> DAO는 실제로 DB의 data에 접근하기 위한 객체입니다.
1) 실제로 DB에 접근하여 data를 삽입, 삭제, 조회, 수정 등 CRUD 기능을 수행합니다.
2) Service와 DB를 연결하는 고리 역할을 합니다.
3) Repository package가 바로 DAO입니다.

2.DTO
-> DTO는 계층 간 데이터 교환을 하기 위해 사용하는 객체로, DTO는 로직을 가지지 않는 순수한 데이터 객체(Java Beans)입니다, 사용자에게 요청을 받을 때 받을 값이 많으면 객체를 따로 만들어 쓰는데 이걸 DTO=VO 라 한다.(온전히 값만 저장되는 클래스를 뜻함)
1) DTO는 즉, getter/setter 메서드만 가진 클래스를 의미합니다.
2) DB에서 데이터를 얻어서 Service나 Controller 등으로 보낼 때 사용합니다.
3) 즉 엔티티를 DTO 형태로 변환한 후 사용합니다.

3.VO
VO는 DTO와 달리 Read-Only속성을 지닌 값 오브젝트입니다. DTO는 setter를 가지고 있어서 값이 변할 수 있지만 VO의 경우에는 getter만 가지고 있어서 수정이 불가능합니다.
DTO와 VO의 차이점은 DTO는 인터턴스 개념이고, VO는 리터럴 값 개념입니다. VO는 값들에 대해 Read-Only를 보장해 줘야 존재의 신뢰성이 확보되지만 DTO의 경우에는 단지 데이터를 담는 그릇의 역할일 뿐 값은 그저 전달되어야 할 대상일 뿐입니다. 따라서 값 자체에 의미가 있는 VO와 전달될 데이터를 보존해야 하는 DTO의 특성상 개념이 다릅니다.
따라서 VO의 핵심은 두 객체의 모든 필드 값들이 동일하면 두 객체는 같다입니다. 따라서 완전히 값 자체 표현 용도로만 사용하는 게 목적이라면, 두 객체의 모든 필드 값들이 모두 같으면 같은 객체이도록 만드는 것(equals()와 hashCode()의 오버라이딩)이 중요하지, 메서드는 어떤 메서드가 있든 말든 상관없습니다.
4. DTO와 VO 다른 점

5. DTO와 DAO를 활용한 DB저장흐름도

※ 그 외 더 알아보기
- 주석 관련
JSP 파일에서 /* */ 이와 같은 자바파일관련 주석사용시 500번 오류가 날수있다 .그러므로 JSP 파일에서는 <%-- --%> 이와같은 JSP 파일에서의 주석을 사용하해 쓰면 될 것이다.
- JSP에서 자바코드입력 시
JSP에서 자바코드의 값을 넣어줄 시에는 <%= %> 이 태그 안에다가 써줘야 하고, 자바코드를 입력하려면 <% %> 이런 태그 안에다가 자바코드를 입력할 수 있다.
- @Controller ,@RequsestMapping...
서블릿 파일에서 @안에 적용한 것을 '어노테이션'이라 부르며 사전적 의미로는 주석이라는 뜻이고, 자바에서 사용될댸의 어노테이션은 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술이다. 즉, 프로그램에게 추가적인 정보를 제공해 주는 '메타데이터'라고 볼 수 있다.
@Controlle는 spring에게 해당 클래스가 controller 역할을 한다고 명시하기 위해 사용하는 어노테이션입니다.

@RequsestMapping는 @RequestMapping(value=”“)와 같은 형태로 작성하며 , 요청 들어온 URI의 요청과 Annotation value 값이 일치하면 해당 클래스나 메서드가 실행됩니다. Controller 객체 안의 메서드와 클래스에 적용 가능합니다.
1) Class 단위에 사용하면 하위 메서드에 모두 적용됩니다.
2) 메소드에 적용되면 해당 메서드에서 지정한 방식으로 URI를 처리합니다

'국비교육' 카테고리의 다른 글
국비지원 68일차(스프링 - cookie,session ) (1) | 2023.10.30 |
---|---|
국비지원 67일차(스프링 - (GET,POST),(mapping),(forward,redirect) ) (1) | 2023.10.29 |
국비지원 65일차 (스프링(STS) 및 톰캣(tomcat) 설치 ) (1) | 2023.10.25 |
국비지원 64일차 (JAVA - 날짜시간, 제네릭) (2) | 2023.10.23 |
국비지원 63일차 (JAVA- wrapper클래스 ,Class 클래스,Null ) (1) | 2023.10.22 |