[JSP] EL

형이·2023년 8월 29일
0

JSP

목록 보기
30/32
post-thumbnail
post-custom-banner

📝 JSP

🖥️ 1. EL

Expression Language

  • 값을 간결하고 간편하게 출력할 수 있도록 해주는 언어
  • <%= %>, out.println()과 같은 자바코드를 더이상 사용하지 않고 좀 더 간편하게 출력을 지원하기 위한 도구
  • 배열이나 컬렉션에도 사용되고, javaBean의 프로퍼티에서도 사용된다.

1-1. EL구문

  • ${..} 내에 표현식으로 표현한다.
  • 예시
    ${true}
    ${false}
    ${123}
    ${"java"}

	📌 띄어쓰기는 있어도 상관 없지만, 오류처럼 인식한다.
          EX)

          <body>
              <%
              	  // 자바변수로 등록된 값을 그대로 사용하면 보이지 않는다.
                  String data = "hello";
                  // pageContext : '현재 페이지에 저장한다'는 뜻
                  pageContext.setAttribute("data", data);
              %>
              
              <!-- '\'는 문자열 그대로 출력한다는 의미
                   ${data} : hello가 그대로 출력됨    -->
              \${data} : ${data} <br/>
              <!-- 30 -->
              ${10+20} <br/>
              <!-- true -->
              ${10>3} <br/>
          </body>

1-2. 범위

  • EL식에서는 Attribute의 이름으로 해석이 된다. 값을 찾을 때 Attribute는 작은 Scope에서 큰 Scope로 찾는다.
  • page > request > session > application
  • 만약 특정한 객체 값을 가져오려면 Scope의 범위를 지정해서 호출
	✔️ page scope : 하나의 JSP 페이지에서만 사용할 수 있는 영역
	✔️ request scope : 하나의 요청에서만 사용할 수 있는 영역
	✔️ session scope : 하나의 웹 브라우저에서 사용할 수 있는 영역
	✔️ application scope : 웹 어플리케이션 영역

1-3. EL연산자

  • 산술연산자 : +, -, *, /(div), %(mode)
  • 논리연산자 : &&(and), ||(or), !(not)
  • 비교연산자 : ==(eq), !=(ne), <(lt), >(gt), <=(le), >=(ge)
  • empty 연산자 : 값이 null이거나 공백문자인지를 판단하는 연산자
	${empty ""}     -> true
	${empty null}	-> true
	${empty data}	-> data에 값이 없으면 true
  • 조건연산자 : a? b:c
    a 조건이 만족하면 b를 리턴, 만족하지 않으면 c를 리턴

📝 예제

EX1)
Servlet.java

    @WebServlet("/eltest")
    public class Servlet extends HttpServlet{

        @Override
        protected void service(HttpServletRequest arg0, HttpServletResponse arg1) 
    throws ServletException, IOException {

            arg0.setAttribute("result", "success");

            String[] names = {"lhy", "abc"};
            arg0.setAttribute("names", names);

            Map<String, Object> notice = new HashMap<String, Object>();
            notice.put("id", 1);
            notice.put("title", "el학습");
            arg0.setAttribute("notice", notice);

            RequestDispatcher dispatcher = arg0.getRequestDispatcher("/el/el_test2.jsp");
            dispatcher.forward(arg0, arg1);

        }

    }




el_test2.jsp

    <body>
        <!-- success 출력 -->
        <%=request.getAttribute("result") %> <br/>
        ${result}

        <!-- 특정한 객체 값을 가져올 때 -->
        ${requestScope.result}

        <!-- lhy, abc -->
        ${names[0]}<br/>
        ${names[1]}<br/>

        <!-- 1, el학습  -->
        ${notice.id}<br/>
        ${notice.title}<br/>
    </body>        
        

EX2)
  
    <BODY>

      <!-- 
        http://localhost:8081/el/el_test2.jsp?num=3
        '?num=3', '?num=5' 등 url에 직접 값을 입력하는 것이 가능하다.
        만약 '?num=3'을 입력했을 경우
      -->

      ${param.num}					// 페이지에 '3'이라고 표출

      ${param.num >= 3}				// true
      ${param.num ge 3}				// true (>=와 ge는 같은 의미)

      ${empty param.num}			// false 
      ${not empty param.num}		// true

      ${empty param.num? '값이 비어있습니다.':param.num}
      // 삼항연산자로 표현하기

    </BODY>

EX3)
  
    el_test3.jsp


    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="el_test4.jsp">
            아이디 <input type="text" name="id" /><br/>
            패스워드 <input type="password" name="pw" /><br/>
            <input type="submit" />
        </form>
    </body>
    </html>
el_test4.jsp

  
    <body>

        <!-- EL식에서는 값을 찾을 때 작은 Scope에서 큰 Scope로 찾는다.
             pageContext.getAttribute("id");
             requestContext.getAttribute("id");
             sessionContext.getAttribute("id");
             applicationContext.getAttribute("id");
        -->


        아이디 ${param.id } <br/>
        패스워드 ${param.pw } <br/>
    </body>

EX4)
  
    <body>
        <%
            ArrayList<String> arList = new ArrayList<>();
            arList.add("Hello");
            arList.add("JSP");
            arList.add("EL");
            arList.add("JSTP");
            pageContext.setAttribute("list",arList);
        %>
        
        <!-- for문으로 작성해야되는 걸 간편하게 표현 가능 -->
        ${list }<br/>

    </body>
  
post-custom-banner

0개의 댓글