51. JSP(2)

sumin·2023년 9월 15일
0

아카데미

목록 보기
52/82
post-thumbnail

EL

표현언어
1. Expression Language
2. binding 영역에 저장된 값을 나타낼 때 사용할 수 있는 언어이다.
3. JSP 표현식 <%=값%>을 대체할 수 있다.
4. 형식
  ${값}
5. biding 영역 EL 내장 객체
  1) pageContext를 의미하는 pageScope 객체
  2) request를 의미하는 resquestScope 객체
  3) session을 의미하는 sessionScope 객체
  4) application을 의미하는 applicaionScope 객체

 <%--우선순위 확인하기  --%>
  <div>${msg}</div>
  
  <%-- 각영역의 속성 확인하기 --%>
  <div>${pageScope.msg}</div>
  <div>${requestScope.msg}</div>
  <div>${sessionScope.msg}</div>
  <div>${applicationScope.msg}</div>
  
  <%-- 객체 사용하기  --%>
  <%
    // 객체를 만든 뒤 EL 사용이; 가능한 binding 영역에 넣는다. 
    Person person = new Person();
    person.setName("홍길동");
    person.setAge(30);
    pageContext.setAttribute("person", person);    
  %>
  <div>이름 : ${person.name}</div> <%-- EL은 person.name을 person.getName() 방식으로 호출해서 보여준다.  --%>
  <div>나이 : ${person.age}</div><%-- EL은 person.age를 person.getAge() 방식으로 호출해서 보여준다.  --%>
  
 <%-- Map 사용하기 --%>
  <%
    // Map을 만든뒤 EL 사용이 가능한 binding 영역에 넣는다. 
    Map<String, Object> book = new HashMap<>();
    book.put("title", "소나기");
    book.put("price", 10000);
    pageContext.setAttribute("book", book); //"book" 이 올린 이름이다. ${book})
  %>
  <div>제목: ${book.title}</div>
  <div>가격 :${book.price}</div>

EL 연산자

 EL 연산자 
    
    1. 산술연산 
      1) +
      2) -
      3) *
      4) / 또는 div
      5) % 또는 mod
      
    2. 크기 비교 
      1) >  , gt
      2) <  , lt
      3) >= , ge
      4) <= , le
      5) == , eq
      6) != , ne
       
    3. 논리 연산
      1) 논리 AND : && 또는 and
      2) 논리 OR  : || 또는 or
      3) 논리 Not : ! 또는 not
      
   4. 조건 연산
      (조건식) ? true 일 때 : false일 때

Request 사용시 주의 사항

    1. 속성(Attribute)을 저장한 경우 
      request.setAttribute("name", "홍길동")  --->>> ${name}
    2. 파라미터(Parameter)를 저장한 경우 
      /ContextPath/URLMapping?name=홍길동    --->>> ${param.name}

Jstl

Jstl이란

JSTL은 JavaServer Pages Standard Tag Library의 약어로, Java 코드를 바로 사용하지 않고 HTML 태그(<>) 형태로 직관적인 코딩을 지원하는 라이브러리입니다.
HTML 코드 내에 java 코드인 스크립틀릿 <%= student %>를 ${student}로, <%=if %>문을 <c:if>, <%=for%>문을 <c:forEach>로 대체하여 사용한다.

<c:set> 태그
1. 속성(Attribute)을 저장할 때 사용한다.
2. binding 영역을 지정할 수 있다. (디폴트는 pageContext 에 저장임)
영역 : 작성방법
  1) pageScope : page
  2) requestScope : request
  3) sessionScope : session
  4) application : application
3. 형식
  <c:set var="속성명" value="값" scope="binding 영역" />

<%-- 속성 저장하기 --%>
    <c:set var="age" value= "30"/>  <%-- pageContext.setAttribute("age", 30) --%>
    <c:set var="isAdult" value="${age >= 20}" />
    
    <div>나이 : ${age}살 </div>
    <div>${isAdult ?"성인" : "미성년자"}</div>
    
    <%-- 앞으로 자주 사용할 c:set --%>
    <c:set var= "contextPath" value="${pageContext.request.contextPath}" />
    <div>${contextPath}</div>

<c:if>
<c:if>
1. if 문이다.
2. else 문이 없다.
3. 형식
  <c:if test="조건식">
  실행문
  </c:if>

<c:set var="age" value= "30" />
   <c:if test="${age >= 20}">
    <div>성인</div>   
   </c:if>
   <c:if test="${age < 20}">
    <div>미성년자</div>
   </c:if>
   
   
   <c:set var="score" value="75" />
   <c:if test="${100 >= score and score >= 90 }"> <c:set var= "grade" value= "A"/></c:if>
   <c:if test="${90 >= score and score > 80 }">  <c:set var= "grade" value= "B"/></c:if>
   <c:if test="${80 >= score and score > 70 }">  <c:set var= "grade" value= "C"/></c:if>
   <c:if test="${70 >= score and score > 60 }">  <c:set var= "grade" value= "D"/></c:if>
   <c:if test="${60 >= score }">  <c:set var= "grade" value= "F"/></c:if>
   <div>${score}점, ${grade}학점</div>

<c:choose>
1. <C:if> 태그를 대체할 수 있다.
2. else if, else 문의 처리가 가능하다.
3. 형식
  <c:choose>
  <c:when test="조건식">
  실행문
  </c:when>
  <c:when test="조건식">
  실행문
  </c:when>
  <c:otherwise>
  실행문
  </c:otherwise>
  </c:choose>

 <c:set var="age" value="20"/>
   <c:choose>
    <c:when test="${age < 8}">
      <c:set var="result" value="미취학아동"/></c:when>
    <c:when test="${age < 14}">
      <c:set var="result" value="초등학생"/></c:when>
    <c:when test="${age < 17}">
      <c:set var="result" value="중학생"/></c:when>
    <c:when test="${age < 20}">
      <c:set var="result" value="고등학생"/></c:when>
    <c:otherwise>
      <c:set var="result" value="성인"/>
    </c:otherwise>  
   </c:choose>
   
   <div>${age}살, ${result}</div>

<c:forEach>
1. 반복문을 처리한다.
2. 형식
  1) 일반 for문
  <c:forEach var="속성" begin="시작값" end="종료값" step="증가값">
  ${속성}
  </c:forEach>
  2) 향상 for문
  <c:forEach var="요소" items="배열 or 리스트">
  ${요소}
  </c:forEach>

jsp

<%-- 1 ~ 5 출력 --%>
 <c:forEach var="n" begin="1" end="5" step="1">
   <div>${n}</div>
 </c:forEach>

 <hr>

 <%-- 5 ~ 1 출력 --%>
 <c:forEach var="n" begin="1" end="5" step="1">
   <div>${6 - n}</div>
 </c:forEach>
 
 <hr>
 
 <%-- <c:forEach> 태그와 배열 --%>
 <%
   String[] seasons = {"봄", "여름", "가을", "겨울"};
   pageContext.setAttribute("seasons", seasons);
 %>
 <c:forEach var="season" items="${seasons}" varStatus="vs">
   <div>인덱스 : ${vs.index}</div>
   <div>요소   : ${season}</div>
 </c:forEach>
 
 <hr>
 
 <%-- <c:forEach> 태그와 리스트 --%>
 <%
   List<String> jobs = Arrays.asList("PM", "기획자", "개발자", "퍼블리셔");
   pageContext.setAttribute("jobs", jobs);
 %>
 <c:forEach var="job" items="${jobs}" varStatus="vs">
   <div>인덱스 : ${vs.index}</div>
   <div>직업 : ${job}</div>
 </c:forEach>
 
 <%-- 임의의 BlogPost 3개를 List에 저장하고 화면에 출력하기 --%>
 <%
   List<BlogPost> list = Arrays.asList(
     new BlogPost(1, "첫 블로그", 10, LocalDate.of(2023, 1, 1)),
     new BlogPost(2, "두 블로그", 15, LocalDate.of(2023, 1, 2)),
     new BlogPost(3, "세 블로그", 20, LocalDate.of(2023, 1, 3))
   );
   pageContext.setAttribute("list", list);
 %>
 <c:forEach var="blogPost" items="${list}">
   <div class="blog">
     <span class="blogPostNo">${blogPost.blogPostNo}</span>
     <span class="title"><a href="">${blogPost.title}</a></span>
     <span class="hit">${blogPost.hit}</span>
     <span class="createdAt">${blogPost.createdAt}</span>
   </div>
 </c:forEach>

servlet

import java.time.LocalDate;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
@Data
public class BlogPost {
  private int blogPostNo;
  private String title;
  private int hit;
  private LocalDate createdAT;
}

lombok

Lombok이란 Java의 라이브러리로 반복되는 메소드를 Annotation을 사용해서 자동으로 작성해주는 라이브러리다.
컴파일 과정에서 자동으로 개발자가 원하는 메소드를 생성/주입 방식으로 동작한다.
getter/seter/constructor 등을 제공한다.
@AllArgsConstructor , @Getter, @Setter 과 같이 사용한다.

롬복 설치
https://projectlombok.org/download
이클립스에 설치하는 것이다
윈도우의 cmd을 통해서 설치한다.
cd (lombok이 있는) 경로
java -jar lombok.jar //
설치파일 나온다
이클립스 실행파일 찾아서 거기에다 설치하면 된다.


자세한 것은 검색하면 자세하게 나온다.

profile
백엔드 준비생의 막 블로그

0개의 댓글