ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Back End] JSTL, EL, Maven
    Web Development/부스트코스 - Back-End(Java) 2020. 3. 9. 22:54

    EL(Expression Language)

    - EL(표현 언어)는 값을 표현하는 데 사용되는 스크립트 언어로서 JSP의 기본 문법을 보완하는 역할을 한다.

    - 데이터 타입, 수치 연산자, 비교 연산자 등은 여타 언어와 비슷하다.

    - 자세한 설명 : https://www.edwith.org/boostcourse-web/lecture/16714/

     

    EL 사용법

    ${ expr }

    EL의 기본 객체

    예제

     

    el01.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    
    <%  //내장 객체를 사용하여 각 스코프에 변수를 만들어 넣어준다.
    	pageContext.setAttribute("p1","page scope value"); 
    	request.setAttribute("r1", "request scope value");
    	session.setAttribute("s1", "session scope value");
    	application.setAttribute("a1", "application scope value");
    %>
    
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    - JSP로 출력하기 <br>
    pageContext.getAttribute("p1") : <%=pageContext.getAttribute("p1") %> <br><br>
    
    - EL 객체를 사용해서 출력하기 <br>
    pageContext.getAttribute("p1") : ${pageScope.p1}<br>
    request.getAttribute("r1") : ${requestScope.r1}<br>
    session.getAttribute("s1") : ${sessionScope.s1}<br>
    application.getAttribute("a1") : ${applicationScope.a1}<br><br>
    
    - 아래와 같이 내장객체를 명시하지 않아도 출력가능 (단, 내장객체들의 맴버 변수명들이 중복되지 않는다는 조건하에) <br>
    pageContext.getAttribute("p1") : ${p1}<br>
    request.getAttribute("r1") : ${r1}<br>
    session.getAttribute("s1") : ${s1}<br>
    application.getAttribute("a1") : ${a1}<br>
    
    </body>
    </html>

     

    el02.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    <%-- JSP 내장 객체를 사용하여 rquest 스코프에 변수 만들기--%>
    <% 
    request.setAttribute("k",10);
    request.setAttribute("m",true);
    %>
        
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <!-- EL 수치 연산자 사용 예제 -->
    k : ${k } <br>
    k + 5 : ${k+5 } <br>
    k - 5 : ${k-5 } <br>
    k * 5 : ${k*5 } <br>
    k / 5 : ${k/5 } <br><br>
    
    k : ${k }<br>
    m : ${m }<br><br>
    
    <!-- EL 비교 연산자 사용 예제 -->
    k > 5 : ${ k > 5 } <br>
    k < 5 : ${ k < 5 } <br>
    k <= 10 : ${ k <= 10 } <br>
    k >= 10 : ${ k >= 10 } <br>
    m : ${m }<br>
    !m : ${!m }<br>
    
    </body>
    </html>

     

    JSTL(JSP Standard Tag Library)

    - JSTL은 JSP 페이지에서 조건문 처리, 반복문 처리 등을 html tag 형태로 작성할 수 있게 도와준다.

     

    JST 태그 종류

    JSTL 코어 태그

    JSTL 코어 태그 - 변수 지원 태그 : set, remove

    예제

    jstl01.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  <!-- jstl 라이브러리 사용설정 -->
    <c:set var="value1" scope = "request" value ="Park"></c:set>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    성 : ${value1 } <br>
    성 : ${requestScope.value1 } <br><br> <!-- 명시적인 표현 -->
    
    <c:remove var="value1" scope="request"/> <!-- jstl 닫는 태그를 이렇게 간략히 표현할 수 있다. -->
    
    성 : ${value1 } <br>
    성 : ${requestScope.value1 } <br> <!-- 명시적인 표현 -->
    </body>
    </html>

     

    JSTL 코어 태그 - 변수 지원 태그 : 프로퍼티, 맵의 처리

     

    JSTL 코어 태그 - 흐름제어 태그 : if

    예제

    jstl02.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
    
    <!-- JSP로 request 스코프에 변수 넣기 -->
      
    <%--
    <%
    	request.setAttribute("n",10);
    %>
     --%>
    
    <!-- jstl로 request 스코프에 변수 넣기 -->
    <c:set var="n" scope="request" value="10"/>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <c:if test="${n == 0 }">
    	n과 0은 같습니다.
    </c:if>
    
    <c:if test="${n == 10 }">
    	n과 10은 같습니다.
    </c:if>
    
    </body>
    </html>

     

    JSTL 코어 태그 - 흐름제어 태그 : choose

    예제

    jstl03.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
    
    <c:set var="score" scope="request" value="83"/>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <c:choose>
    	<c:when test = "${score >= 90 }">
    		A학점 입니다.
    	</c:when>
    	<c:when test = "${score >= 80 }">
    		B학점 입니다.
    	</c:when>
    	<c:when test = "${score >= 70 }">
    		C학점 입니다.
    	</c:when>
    	<c:when test = "${score >= 60 }">
    		D학점 입니다.
    	</c:when>
    	<c:otherwise>
    	 	F학점 입니다.
    	</c:otherwise>
    </c:choose>
    
    </body>
    </html>

     

    JSTL 코어 태그 - 흐름제어 태그 : forEach

    예제

    jstl04.jsp

    <%@ page import="java.util.ArrayList"%>
    <%@ page import="java.util.List"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <%
    	List<String> list = new ArrayList<>();
    	list.add("hello");
    	list.add("world");
    	list.add("!!!!!");
    	
    	request.setAttribute("list",list);
    %>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <c:forEach items = "${list }" var="item" begin="0">
    	${item }<br>
    </c:forEach>
    </body>
    </html>

     

     

    JSTL 코어 태그 - 흐름제어 태그 : import

    예제

    jstlValue.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    Park Byung Wook

    jstl05jsp 

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <c:import url="http://localhost:8080/firstweb/jstlValue.jsp" var="urlValue" scope = "request"></c:import> 
    <%--이렇게 외부 url도 가능 --%>
    <%-- <c:import url="https://www.naver.com/" var="urlValue" scope = "request"></c:import>--%> 
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    ${urlValue }
    </body>
    </html>
    
    

     

     

    JSTL 코어 태그 - 흐름제어 태그 : redirect

    예제

    jstl06.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!-- jstl05.jsp로 리다이렉트 된다. -->
    <c:redirect url="http://localhost:8080/firstweb/jstl05.jsp"></c:redirect> 
        
    

     

    JSTL 코어 태그 - 기타 태그 : out

     

    jstl07.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <c:set var="t" value="<script type='text/javascript'>alert(1);</script>"></c:set>
    <c:out value="${t }" escapeXml="true"></c:out> <!-- 자바스크립트가 실행됨 >, <, &, ', " 등의 문자가 html로 인식되지 않게됨. 그냥 문자 그대로 인식됨. -->
    <c:out value="${t }" escapeXml="false"></c:out> <!-- 자바스크립트가 실행되지 않음 -->
    </body>
    </html>

     

    Maven

    - 프로젝트가 복잡해질수록 사용하는 라이브러리는 많아진다.

    - 프로젝트에 참여하는 사용자가 많아질수록 라이브러리 관리는 어려워진다.

    - 프로젝트가 복잡해질수록 소스를 컴파일하고 배포하는 것도 어려워진다.

    - 이러한 문제를 해결하기 위해 다양한 도구들이 존재하는데, 그 중 하나가 maven이다.

    - Maven은애플리케이션을 개발하기 위해 반복적으로 진행했던 작업들을 지원하기 위한 도구이다.

    - Maven을 사용하면 빌드, 패키징, 문서화, 테스트와 테스트 리포팅, git, 의존성 관리, svn 같은 형상관리서버와 연동, 배포 등의 작업을 손쉽게할 수 있다. 

    - CoC(Convention over Configuration)이란 일종의 관습을 말한다. 예를들어 프로그램의 소스파일은 어떤 위치에, 소스가 컴파일된 파일들은 어떤 위치에 있어야 하는지 등을 미리 정해놨다는 것을 말한다.

    - CoC에 익숙한 사용자는 쉽게 Maven을 사용할 수 있는데, 익숙하지 않은 사용자는 이러한 제약사항에 대해 심한 거부감을 느낄 수 있다. Maven을 사용한다는 것은 이러한 CoC(관습)에 대해서 알아나가는 것이라고 말할 수 있다.

    - Maven을 사용하면, 필요한 라이브러리를 직접 다운로드 받지 않아도 설정을 통해 라이브러리를 사용할 수 있다.(편리한 의존성 라이브러리 관리)

    - Maven을 사용하면, Maven에 설정한 대로 개발자가 누구인가에 상관없이 일관된 방식으로 빌드를 수행할 수 있다.

    - Maven을 사용하면, 다양한 플러그인을 제공해줘서 굉장히 많은 일들을 자동화 시킬 수 있다.

    'Web Development > 부스트코스 - Back-End(Java)' 카테고리의 다른 글

    [Back End] JDBC - 실습  (0) 2020.03.14
    [Back End] JDBC  (0) 2020.03.14
    [Back End] Scope  (0) 2020.03.07
    [Back End] Redirect & Forward  (0) 2020.03.06
    [Back End] JSP 기초  (0) 2020.03.05

    댓글

Designed by Tistory.