이미지 - 스타터스 취업 부트캠프(STARTERS) 공식 블로그

8주차 학습 내용을 정리합니다.
이번주는 JSP 액션태그와 el태그, JSTL 라이브러리, Spring 기초에 대해서 학습했습니다.
JSP 액션태그

  JSP(Java Server Page)는 HTML 표준을 따르며 자바 코드를 작성할 수 있는 서버사이드 스크립트이다. 일반적인 JSP 태그를 사용하면 HTML 내에서도 자바 코드를 사용할 수 있지만, 처리해야 할 로직이 많아지고 구현이 복잡해질수록 HTML 내에 자바 코드가 많아져 가독성이 떨어진다. 웹 디자이너와 협업이 필요한 경우, 이는 큰 장애물이 될 수 있다. 그래서 등장한 태그가 바로 '액션 태그'다. JSP 내에서 자주 사용되는 자바 로직을 미리 JSP 태그로 구현하여 최대한 자바 로직 없이 JSP를 작성할 수 있도록 한 것이다.

태그 설명
<jsp:include page="x.jsp"/> 다른 JSP 파일을 현재 JSP 파일에 포함하는 태그 (동일 서버, 동일 컨텍스트)
<jsp:forward page="x.jsp/"> 다른 파일로 이동하는 태그(동일 서버, 동일 컨텍스트), 서블릿의 RequestDispatcher 클래스의 포워딩 기능을 대신하는 태그
<jsp:useBean ... /> 자바 객체 생성 태그
<jsp:setProperty /> 자바 객체 setter 메서드 호출 태그
<jsp:getProperty /> 자바 객체 getter 메서드 호출 태그
<jsp:param name="xxx" value="xxx"(문자열/정수/실수)/> include 또는 forward 시에 parameter로 값을 전달하는 태그 (1개씩만 전달 가능)
  • 자주하는 실수 :  JSP 액션 태그 안에서 HTML 주석(<!-- -->)을 사용하면 에러가 발생한다. (에러 찾기도 쉽지가 않다..) 그러므로 반드시 JSP 안에서는 가급적이면 JSP 주석(<%-- --%>)을 사용하자!

 

JSP el 태그

  Expression Language라고 하며 '표현 언어'라고도 한다. el 태그는 다음과 같은 특징을 지닌다.

  • 기존 표현식보다 편리하게 값을 출력할 수 있다
  • 변수와 여러 가지 연산자를 함께 사용할 수 있다
  • JSP 내장 객체에 저장된 속성과 자바 빈 속성을 출력할 수 있다
  • 표현 언어 자체 내장 객체도 존재한다
  • 단, JSP 스크립트 태그 안에서 선언된 변수는 곧바로 el 태그에서 가져다 사용할 수 없음!
      'JSP 내장 객체'와 'el 내장 객체'는 서로 다른 것이기 때문(=호환 불가)
    → setAttrbute()메서드 사용

<%@ 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>

<h1> scopetest2.jsp </h1>

jsp a 출력(pageContext) = <%=pageContext.getAttribute("a") %><br>
jsp a 출력(request) = <%=request.getAttribute("a") %><br>
jsp a 출력(session)= <%=session.getAttribute("a") %><br>
jsp a 출력(application) = <%=application.getAttribute("a") %><br>

el a 출력(현재 페이지의 jsp태그 전달값) = ${pageScope.a }<br> <%-- jsp에서 값을 정의하고 el에서 값을 출력할 때 사용하는 것 : setAttribute / getAttribute --%>
el a 출력(이동 전의 jsp태그 전달값) = ${requestScope.a }<br>
el a 출력(세션 전달값) = ${sessionScope.a }<br>
el a 출력(어플리케이션 전달값) = ${applicationScope.a }<br>

<!-- 
el 전달 변수 해석 출력
1. pageScope 찾는다
2. requestScope 찾는다
3. sessionScope 찾는다
4. applicationScope 찾는다
 -->

</body>
</html>
  • el 태그는 특별한 명시가  없으면 모두 request 객체로 가져옴
    • 우선순위
      1. pageScope (Default ?)
           → Default는 pageScope인데 왜 request를 가져오는 걸까? 
               : pageScope는 동일한 JSP page 내에서 값을 정의(setAttribute)하고 가져올 때(getAttribute) 사용하는 것
      2. requestScope
      3. sessionScope
      4. applicationScope
JSP JSTL 라이브러리

   JSTL(JSP Standard Tag Library)는 JSP 사양을 확장한 라이브러리로, 기존 JSP 태그(=스크립틀릿)와 el 태그보다 간단하게 '조건문'과 '반복문'을 처리할 수 있다. JSTL을 사용하여 반복문과 조건문을 하나의 태그로 처리하면 JSP 페이지 내에서의 자바 코드와 복잡한 스크립틀릿이 줄어들어 가독성이 높아지고, 그 결과 뷰와 비즈니스 로직이 분리된다는 장점이 있다. 

  • 사용방법 : maven repository(링크)에서 jar 파일 다운로드 - src/main/webapp/WEB-INF/lib/ 폴더로 복사 - JSP 파일 상단에 taglib로 core 추가(<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>)
태그 설명
<c:set>  변수에 값을 할당
<c:remove> 변수 삭제
<c:out> 변수 값을 화면에 출력
<c:if test=""> 조건식 사용 → else문 없음! 다중 조건인 경우 <c:choose> 사용
<c:choose>
<c:when>
<c:otherwise>
<c:choose> : switch-case 문 처럼 사용
<c:when test="조건식1"> : 조건식 사용
<c:when test="조건식2"> : 조건식 사용
<c:otherwise> : 모든 조건문 만족하지 않은 경우 처리 (=else문)
<c:forEach> 반복문 사용
<c:forEach items="${배열명}" var="반복문내부변수명" varStatus="상태변수명" >

 


참고


* 유데미 바로가기 : https://bit.ly/3V220ri

* STARTERS 취업 부트캠프 공식 블로그 보러가기 : https://blog.naver.com/udemy-wjtb

본 후기는 유데미-웅진씽크빅 취업 부트캠프 3기 백엔드 과정 학습 일지 리뷰로 작성되었습니다.

+ Recent posts