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 |