본문 바로가기
dev/Spring

[Spring] EL, JSTL

by dev_Step 2022. 6. 4.

 

EL 이란 ? 

 >> Expression Language 의 약자로 JSP에서 EL을 통해 Attribute, Parameter를 통해 넘어오는 값을 편리하게 접근하여 사용할 수 있습니다.

 >> ${} 형식으로 나타내며 

 >> EL 을 사용하기 전에는 <%= %> 의 JSP 문법으로 <%= requset.getParamter("name") %> 으로 나타내던것을 간단하게 ${}으로 표현하고 있다.

 

 

@ Attribute EL

 .java 에서   setAttribute("key", "value"); 를 통해서 값을 저장하면 

 JSP페이지 에서  ${key} 를 통해서 value 값을 출력할 수 있습니다.

 

Attribute EL은 총 4구역으로 나뉘는데

1. pageContext

2. requset

3. Session

4. application

 

<JSP 페이지에서  아래와 같은 표현으로 값을 저장할 수 있다.>

 

<%  

    pageContext.setAttribute("key","value");

    requset.setAttribute("key","value");

    session.setAttribute("key","value");

    application.setAttribute("key","value");

%>

 

 

으로 나뉘어 집니다.

 

1. pageContext

 >> 현재 JSP 페이지에 한해서만 데이터를 사용이 가능합니다 lv라고 생각하면됩니다 

  <%  pageContext.setAttribute("page","context")   %> 값을 설정해주면

   ${page} 를 통해서 사용이 가능합니다.

 

2.  requset

 >> 사용자의 요청 ~ 응답이 끝날때 까지 사용가능합니다 

  <%  requset.setAttribute("requset","response")%> 로 값을 설정해주면

  ${requestScope.requset} 를 통해서 접근이 가능합니다.

  만약에 데이터 처리를 바로 하지 않고 다른 JSP 페이지로 넘길경우

  forward를 통해서 다른 JSP 페이지로 requset 값을 넘겨줄수 있습니다.

 

 

3.  Session : 개별저장소 : Client마다 1개씩 : Session의 시작부터 종료까지

  >> 로그인시에 id를 저장함 -> 다음 요청시에 로그인한 사람인지 확인 할 수 있음

  >> 로그아웃시 개별저장소를 제거(Session 제거) // id나 장바구니 같은것.

  >> Session은 사용자 수마다 생성되기 때문에 최소한의data만 저장해야 한다. (서버 부담이 가장 크다)

 

  <% session.setAttribute("session","sessionss")%>

 

  ${sessionScope.session} 으로 사용가능하며,   session 값은 Session이 생성된 후 Session이 제거 되기 전까지 계속 사용이 가능하다 보통 id를 저장하고, 해당 session을 통해 로그인 되었는지 확인하는등으로 사용한다.

<<<   session이 참조변수라 치면, session.invalidate(); 으로 해당 세션을 모두 삭제할 수 있다. >>>

 

4. application : 공통저장소 : WebApp 시작 부터 종료까지 Context어디서든 접근가능, 모든 클라이언트 공유

  >> WebApp 전체에서 접근가능 (1개의 저장소) 

  <% application.setAttribute("application","app")%>

  ${applicationScope.application} 으로 사용가능

 

 

만약 1. ~ 4. 까지 key 값으로 같은 이름으로 저장되어 있을 때  ${key} 라고 입력하면 범위가 가장 좁은 pageContext에서 설정한 값으로 출력이 된다.

 

@Parameter EL

Parameter 로 받은 값을 EL태그로 출력할 떄는 ${param.name} 과 같이 출력한다

Parameter로 값을 받는 경우는 사용자로부터 Web을 통해서 get  // Post 방식으로 데이터를 받는 것을 말하며

보통 

<Form>의 <input > 태그를 통해 값이 넘어온다. 

아니면 URL을 통해서 직접 입력할수 있지만 .. 그럴일이 별로 없다..

## GET 방식
localhost/ch2/add?year=2022&month=1&day=1


## Post 방식

<form action="URL주소" method="post">
	<input type="text" name="id">
    <input type="password" name="pwd">
    <input type="text" name="email">
</form>

${param.id}, ${param.pwd}, ${param.email} 등으로 사용할수 있으며

name이 중복되어 여러값이 들어올경우 var arr = ${paramValues.sns} 으로 배열로 받고 arr[0] 등으로 사용할수 있다.

 

=========================================================================================

 

 

 

 

>>> 아래 요청시

>> 다음 결과를 통해서

>> Model을 통해서 addAttribute 하는 값은 requsetScope 값인 것을 확인 할수 있었고

>> ${param.name} 과 <%= request.getParameter("name")%> 은 WebBrowser(사용자)의 GET/POST 요청에 의해 들어오는 값을 나타내는 것을 확인 할수 있었습니다.

>> pageContext의 경우는 JSP 페이지에서 <%  pageContext.setAttribute("key","value")  %> 를 통해서 값을 저장하고, ${}를 통해서 사용 할 수 있음을 확인 하였습니다.

requset의 경우는

  사용자의 요청에 의해서 들어온 request값을 Controller에서 Model을 통해 보내준것과 같다.

  즉 Model을 통해 보내준값또한 {requesetScope.name} 이라는 말이다.

  또한 param이란것은 사용자가 POST/GET을 통해서 보내준 값을 의미한다. 

  <%= request.getParameter("name")%> == {param.name} 동일한 값을 의미 차이점이라면 param의 경우 값이 없으면

공백을    <%= request.getParameter("name")%> 는 값이 없다면 null을 나타낸다.

==========================================================================================

 

@JSTL

JSP문법 :

1. <%! 선언부 %>  -> 전역변수, 함수                                   

2.  <% 스크립릿 %> -> 코딩, 지역변수   

3. <%=출력부 %>  ->문자열, 변수값, 함수리턴값 출력

4. <%-- JSP주석 --%>  

 

JSP 문법에서 <%    %> 으로  해당 범위 안에서 java를 사용하여 나타 내던 것을 간편하게 

<c:> 태그를 이용하여 사용하는 태그 라이브러리 이다.

사용하기 위해서는

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  를 JSP에 추가해줘야 하고

해당 문법의 종류로는

태그 명칭 설명
<c:if> if 조건식을 사용한다.
<c:forEach>
<c:forEach var="" items="" ---등>
for문을 사용한다.
<c:choose>
     <c:when test= "">
           //조건 1 참일떄
     </c:when>
     <c:when>
           // 조건 2 참일떄
     </c:when>
     <c:otherwise>
         // 위에 조건 두개다 아닐때
     </c:otherwise>
</c:choose>
switch 문 내부의 default 에 해당
switch 의 조건에 해당
switch문의 switch에 해당
<c:set> 변수를 선언하고, 해당 변수에 값을 할당
<c:out> 변수에 할당한 값을 출력한다.

 

 

 

'dev > Spring' 카테고리의 다른 글

[Spring] redirect, forward  (0) 2022.06.09
[Spring] GetMapping, PostMapping  (0) 2022.06.09
[Spring] 회원가입 페이지  (0) 2022.06.04
[Spring] Tomcat port 변경  (0) 2022.06.04
[Spring] ModelAttribute, BindingResult  (0) 2022.06.04