본문 바로가기
Study/JSP

[JSP] JSTL (1) - 페이지값과 dto 가져오기, 내장객체 접근하기, parameter 처리

by YoungD 2023. 9. 1.

 

JSTL (Jsp Standard Tag Library)  - JSP 표준 태그 라이브러리

 

EL (Experission Language) - 표현 언어

 

 

 

1. EL과 JSTL을 사용하는 이유

    - JSP 파일에 자바형식의 코드를 태그화하여 사용할 수 있다

 

2. 장점과 단점

   - 장점 : java값을 가져오기 간단하고 가독성을 높여준다

   - 단점 : 디테일한 설정을 하기에는 어려운 점이 많다

 

3. EL의 조건

    - EL은 java에 저장된 아무 변수의값을 꺼내서 쓸 수 있는 것이 아니라 scope에 저장된 값만 꺼내서 사용할 수 있다

 

 

 

 


# scope 영역이란?

 

page: 하나의 페이지를 처리할 때 사용되는 영역

request: 요청을 처리할 때 사용되는 영역

session: 하나의 브라우저와 관련된 영역

application: 하나의 웹 애플리케이션과 관련된 영역

 

중복해서 기술할 때 : 범위가 좁은 내장 객체에서부터 사용 범위가 넓은 내장 객체 순서로 속성값을 찾아옴

page < request < session < application

 

 

 


 

 

 

 

   <%

       session.setAttribute("id", "youngD");

   %>

 

 

< session에 저장된 id라는 이름의 값(youngD)을 웹페이지에 표현하기 >

 

 

 

   ${id} 님 환영합니다!

 

 

 

 

출력 결과

 

 

 

 

< JSTL 사용하여 페이지 영역에 값 넣기 >

   <%

         pageContext.setAttribute("num", 10);

         pageContext.setAttribute("isCheck", true);

   %>

 

 

  • el의 다양한 연산자

   ${num} <br>

   ${num + 10} <br>

   ${num - 5} <br>

   ${num * 3} <br>

   ${num / 2}  =  ${num div 2} <br>  /2 또는 div2 두 가지의 같은 식

   ${num % 3}  =  ${num mod 3} <br>

 

    -- 부울값으로 return

   ${num > 5 && num > 3}  =  ${num > 5 and num > 3} <br>

   ${num > 5 || num > 3}${num > 5 or num > 3} <br>

   ${isCheck} <br>

   ${!isCheck}  =  ${not isCheck} <br>

 

   ${num > 3}  =  ${num gt 3} <br>

   ${num < 20}  =  ${num lt 20} <br>

   ${num >= 3}  =  ${num ge 3} <br>

   ${num < 20}  =  ${num le 20} <br>

 

   ${num == 10} ${num eq 10} <br>

   ${num != 20} ${num ne 20} <br>

 

 

 

차례대로 출력 결과

 

 

 

< EL에서 DTO, VO 가져오기 >

 

 

1. dto 생성

   <%

        MemberDTO dto = new MemberDTO("YDY", "1234", "youngD", "대한민국");

        pageContext.setAttribute("dto", dto);

   %>

 

2. page영역에 저장된 dto 아이디 값을 표현식을 사용해 웹페이지에 표현하기

   <% MemberDTO info = (MemberDTO)pageContext.getAttribute("dto"); %>

   <%= info.getId() %>

 

3. EL 사용하여 dto 안에 있는 private 필드값을 가져오기 위해서는 반드시 getter 메소드가 필요하다

   package com;

 

   public class MemberDTO {

   private String id;

   private String pw;

   private String nick;

   private String addr;

 

   public MemberDTO(String id, String pw, String nick, String addr) {

   super();

   this.id = id;

   this.pw = pw;

   this.nick = nick;

   this.addr = addr;

   }

 

   public String getId() {

   return id;

   }

   public void setId(String id) {

   this.id = id;

   }

   public String getPw() {

   return pw;

   }

   public void setPw(String pw) {

   this.pw = pw;

   }

   public String getNick() {

   return nick;

   }

   public void setNick(String nick) {

   this.nick = nick;

   }

   public String getAddr() {

   return addr;

   }

   public void setAddr(String addr) {

   this.addr = addr;

   }

 

   }

 

4. 출력

   ${dto.id}

   ${dto.pw}

   ${dto.nick}

   ${dto.addr}

 

 

출력 결과

 

 

 

# 만약 el로 없는 값을 가져오면?  --> 출력 x

 

 

    <!-- 존재하는 값인지 아닌지 판별하는 법 -->

    ${empty good}

   ${not empty good}   -- 비어있지 않나요?

 

 

출력 결과

 

 

 

# 동일한 이름의 값이 여러 영역에 들어가있다면 EL에서 가져오는 값은?

 

 

   <%

       pageContext.setAttribute("name", "youngD");   = pageContext.getAttribute("name")

       request.setAttribute("name", "oldD");   = request.getAttribute("name")

       session.setAttribute("name", "babyD");   = session.getAttribute("name")

       application.setAttribute("name", "kidsD");   = application.getAttribute("name")

   %>

 

 

범위가 좁은 내장 객체에서부터 사용 범위가 넓은 내장 객체 순서로 속성값을 찾아옴

(1. page 2. request 3. session 4. application)

 

 

출력 결과

 

 

 

 EL에서 특정영역에서만 찾고자할 때는 name 앞에 특정영역 scope를 붙여준다

 

 

   ${sessionScope.name}

 

 

출력결과

 

 

 


 

표현언어로 요청 parameter 처리하는 법

 

 

사용자가 폼에 입력한 값을 얻어오기 위해서는 jsp 내장객체인 request.getParameter() 메소드를 사용하지만

표현언어에서는 표현 언어의 내장 객체인 param 객체 사용

 

 

  • request.getParameter()  ->  param.() or param[""]
  • 배열 형태 -> getParameterValues() -> paramValues

 

 

 

  <form action="result.jsp" method="post">

   내가 좋아하는 계절

   <input type="text" name="season">

   </form>

 

 

 

<result.jsp>

     request.getParameter() 대신 param 객체 사용

 

   ${param.season}   (또는)

   ${param["season"]}

 

 

 

 

출력 결과

 

 

 

 

param 배열

 

   <form action="result.jsp" method="post">

   좋아하는 계절 :

   봄 <input type="checkbox" name = "season" value="봄">

   여름 <input type="checkbox" name = "season" value="여름">

   가을 <input type="checkbox" name = "season" value="가을">

   겨울 <input type="checkbox" name = "season" value="겨울">

   <input type="submit">

   </form>

 

 

 

 

 

< result.jsp >

   ${paramValues.season[0]}

   ${paramValues.season[1]}

   ${paramValues.season[2]}

   ${paramValues.season[3]}

 

 

 

 

 

출력 결과

 

 

 

'Study > JSP' 카테고리의 다른 글

[JSP] HashMap  (2) 2023.09.24
[JSP] command패턴  (2) 2023.09.21
[JSP] FrontController 패턴  (2) 2023.09.18
[JSP] JSTL (2) - jstl 라이브러리 설치하기, <c:> 태그 사용하기  (2) 2023.09.03