개발/KH국비지원과정

[KH국비지원 웹개발자 과정] Day_38 키워드, 액션태그, EL, JSTL

mabb 2022. 8. 3. 21:13
반응형

 안녕하세요. 삶의 질을 높이고자 노력하는 영차영차입니다.
드디어 국비지원 학원을 다니며 공부에 전념을 할 수 있게 되었습니다.
해당 포스팅은 강의 복기용으로 키워드를 기록하는 용도의 포스팅입니다.
--------------------------------------------------------------------------------------------------

-서블릿과 JSP에 대한 전일 복습 중 개인적으로 EL에 대해 교재로 예습을 하고 있었음

-이후 학원 진도로 액션태그, EL, JSTL을 배우게 되어 좋았음.

-액션태그
JSP에서 기본적으로 사용하는 태그로 XML기술을 이용하여 기존의 JSP문법을 확장하는 메커니즘을 제공하는 태그.
웹 브라우저에서 실행되는 것이 아니라 웹 컨테이너에서 실행된 결과를 브라우저로 보내준다.

-컨테이너 : 객체의 생성 소멸 등 객체의 생애주기를 개발자 대신 관리해주는 것이라고 이해.
서블릿을 이용할 때도 개발자가 직접 객체를 생성하지 않고 이용만 하였다.  서블릿 관련 객체의 관리는 톰캣의 서블릿 컨테이너에서 해주고 개발자는 이 객체들을 이용만 하였음. -> 편하고 효율적인 것을 추구하는 사람들이 점점 더 편리한 기술을 만든다~

-액션태그는 표준 액션태그와 커스텀 액션태그로 나뉨. 커스텀 액션태그는 별도의 라이브러리가 필요하다.

-주로 사용하는 표준 액션태그 <jsp: >  태그의 접두사가 jsp이다.
: include, foward, param, usebean, setProperty, getProperty

<jsp:include> 태그를 사용하면 jsp 페이지 내에 헤더 용도의 html을 포함시켜  재사용을 할 수 있게 하여 편리함.

-bean객체 : 개발자가 직접 만들지 않은 객체.
:bean객체를 개발자 대신 만들어주는 대신 VO클래스를 관습에 맞게 만들어줘야함. (캡슐화, 게터세터, 생성자)

EL(Expression Language) & JSTL( JSP Standard Tag Library)
: 스크립트릿을 없앵는 것이 목적. 스크립트릿을 통해 자바 코드를 사용하면 혼란스럽고 복잡한 경우가 많기 때문.
${value}
EL은 5개의 타입이 있다. 정수, 실수, 문자, 불린, 널

JSP에서 자바 자동 import 하기. Ctrl+Shift+O 는 안 됨.  임포트 할 클래스나 인터페이스를 Ctrl+ Space 로 자동완성 하면 자동 임포트가 됨.

-실무에서는 대부분 스크립트릿을 사용하지 않는다. ->  EL&JSTL

${member.id}

이걸 어떻게 인식하는 거지?
처음 든 생각  : request에 setAttribute한 객체의 필드에 바로 접근하는 건가? -> id는 private이므로 아니라고 생각
다음 든 생각 : id라는 문자열을 이용하여 member.setId() 메소드를 알아서 찾아서 값을 가져오는 내부적인 셋팅이 있나?

EL영역에서는 ArrayList 타입의 참조변수도 배열처럼 mList[0]로 접근함. mList.get(0)으로 접근하지 않음.

JSTL은 JSP에서 사용하는 표준 Tag 라이브러리로 유용한 Tag들을 사용할 수 있게 해준다. 대신 웹 다이나믹 프로젝트에서는 lib(라이브러리) 폴더에 해당 jar 파일을 붙여넣어주어야 하며 JSP파일 선언부에

 <%@ taglib prefix="c" url="http://java.sun.com/jsp/jstl/core" %>

를 기재하여야 사용할 수 있다.

<c: > </c:> 이런식으로 사용.  prefix 의 의미가 '앞에 오는것' , ' 접두사'  정도의 뜻이니 선언부에서 prefix="c"라고 설정하였기 때문에 태그에서 c라고 사용하는 것일까? 테스트 해보아야 겠다.

-JSP 표준태그중 param 태그를 이용하면 url의 쿼리를 통해 값을 전달하여 테스트하기 편리하다.

- EL 연산자가 별도로 있으나 자바의 연산자가 먹히면 자바의 연산자를 사용해도 무관하다.

-JSTL의 Core태그 <c: >  를 사용하면 제어문을 편리하게 사용할 수 있다. 스크립트릿으로 제어문을 사용했던 것을 생각하면 굉장히 편리하고 좋은 것!. c:if , c:choose, c:forEach

-EL 과 JSTL을 배우면서 스크립트릿 없이 JSP를 사용할 수 있게 되었다..!

구글링)
EL요소는 Scope에 해당 갑에 해당되는 것이 있는지 탐색한다.
예를들어 ${pageScope.Name} 이라고 EL을 사용하였을 때 페이지스코프 영역 안에 Name이라는 것이 있나?
하고 내부적으로 찾아본다는 것.
만약 Scope를 지정하지 않고 ${Name} 으로 사용한다면 내부적으로 Page, Request, Session, Application으로 범위를 넓혀가면서 Name 이 있나? 확인 한다는 것.

구글링)
JSP는 꼭 배워야 하는지에 대한 궁금증.
스프링부트에서는 JSP를 거의 사용하지 않는다고 함.
스프링에서는 사용하는 듯.
MVC패턴의 View를 담당하는 템플릿 엔진으로 타임리프, 노드js 등을 사용하는 것 같다. (아직 잘 모름)

구글링)
컴포넌트란? (Component) 
:요소 , 부품이라는 뜻이다. 여기서는 뭔가를 조립하는 부품으로 이해.
기존의 코딩 방식에 의한 개발에서 벗어나 소프트웨어의 구성단위(module)을 미리 만든 뒤 필요한 응용 기술을 개발할 때 이 모듈을 조립하는 기술을 말한다고 한다.
-> 결국 타이핑으로 한 땀 한 땀 프로그램을 빚는 것이 아니라 미리 만들어 둔 부품들을 조립하여 뚝딱 만든다는 것.

미국은 국가차원에서 소프트웨어의 컴포넌트화를 추진하고 있다고 한다. 개발 생산성과 품질이 10배 이상 올랐다고 한다.
미리 미리 프로그래밍에 필요한 부품들을 규격에 맞춰 잘 만들어 놓으면 개발자 개개인이 한 땀 한 땀 코드를 타이핑 하는 것보다 코드도 일관될 것임. 인터페이스처럼 규격을 갖춰주면서 필요한 것을 가져다 쓰니까 재사용도 편리하고 유지보수도 편리할 것 같음.

교재 및 구글링)
스프링에 대한 막연한 두려움
웹 다이나믹 프로젝트 -> 메이븐 프로젝트 -> 메이븐 프로젝트에 스프링 디펜던시 추가
메이븐을 쓰는 이유
1.웹 다이나믹 프로젝트에 라이브러리를 확장해서 쓰자니 lib 폴더에 다 넣어주어야 하고 불편하네? 다른 사람들과 프로젝트를 공유할 때 라이브러리 환경까지 통일시켜주는 것이 어렵네?
->
2. xml파일에 설정 값만 셋팅해주면 편리하게 라이브러리 등을 추가할 수 있는 메이븐을 쓰자.


결국 한 땀 한 땀 타이핑 하는 것이 아니고 개발자는 부품을 조립하듯 프로그램을 개발하게 되는데
객체 생성이라든가 중복 및 반복되는 코드라든가 하는 것들을 개발자가 신경쓰지 않도록 해주는 도구라고 이해.

1. 다형성으로 자식 또는 구현객체만 대입해주면 코드를 다 바꾸지 않아도 되네?
->
2. 근데 자식 또는 구현객체를 대입하려고 코드를 바꾸는 것도 불편하네?
->
3. 어노테이션이나 xml 파일로 설정을 바꾸어주면 코드를 건드리지 않아도 되겠다! 편리

반응형