개발일기

학원 수업 47일차 221027

hhana 2022. 12. 9. 10:14
  • 9-11

프로젝트명 : /springWeb05-design

(FaqDTO.java)(/springWeb05-design/src/main/java/com/green/nowon/domain/dto/faq/FaqDTO.java)
빌더패턴 특징?
https://mangkyu.tistory.com/163
클래스 내부에 이너클래스를 만들어줌
(/springWeb05-design/src/main/java/com/green/nowon/controller/CustomerController.java)
따라치기는 하는데 이게 지금 뭐하는 건지 왜 하는건지 이해가 안됨

(/springWeb05-design/src/test/java/com/green/nowon/SpringWeb05DesignApplicationTests.java)
JUnit Test?

@Test
void faq더미테스트() {
    log.debug(" >>> faqMapper : "+faqMapper);
    log.info(" >>> faqMapper : "+faqMapper);
    log.error(" >>> faqMapper : "+faqMapper);
}



디버그가 안뜰때 설정
(/springWeb05-design/src/main/resources/application.yml)

logging:
  level:
    com:
      green:
        nowon: debug

 

(/springWeb05-design/src/test/java/com/green/nowon/SpringWeb05DesignApplicationTests.java)

//java @since 1.8
IntStream.rangeClosed(1, 10000).forEach(i->{
    FaqDTO dto=FaqDTO.builder() //빌더클래스 생성
    .division("use").question("질문-쇼핑몰이용-"+i).answer("답변-쇼핑몰이용"+i)
    .build(); //FaqDTO객체생성
    faqMapper.save(dto);
});

 

 

  • 11-12

고객센터페이지 디자인 다시하는 중
CSS filter Property
https://www.w3schools.com/CSSref/css3_pr_filter.php
이미지 태그에서 적용 가능

 

 

  • 12-1

(/springWeb05-design/src/main/java/com/green/nowon/domain/mapper/FaqMapper.java)

 

 

  • 2-3

- thymeleaf 플러그인 설치
Help > Elipse Marketplace
이클립스(마켓플레이스 맨 왼쪽)에서 thymeleaf 검색하여 설치

충돌하여 설치가 안된다면
https://www.thymeleaf.org/ecosystem.html

플러그인 설치방법 있음
https://github.com/thymeleaf/thymeleaf-extras-eclipse-plugin
https://www.thymeleaf.org/eclipse-plugin-update-site/
In Eclipse, go to Help >> Install New Software... then enter this update site URL (should be http://www.thymeleaf.org/eclipse-plugin-update-site/).
Eclipse should then pick up the plugin to install. 

설치완료되면 프로젝트 우클릭 > Configure > Add Thymeleaf Nature 눌러주면 됨
컨트롤+스페이스바 누르면 제안기능 사용가능
충돌 이슈 있음 무조건 되는거 아님 ㅠ
자바 11버전에서 안된대(컴파일버전이 17이어서 안됨)
--해결책? eclipse폴더의 eclipse.ini파일 편집! 맨 아래에 아래 줄 넣어줘
--add-opens=java.base/java.lang=ALL-UNNAMED

[Solution] -> --add-opens=java.base/java.lang=ALL-UNNAMED in eclipse.ini
참고 https://github.com/thymeleaf/thymeleaf-extras-eclipse-plugin/issues/110
Eclipse Thymeleaf plugin throws exception when using Ctrl+Space #110

쿼리 스트링 파라미터
https://velog.io/@gth1123/%EC%BF%BC%EB%A6%AC-%EC%8A%A4%ED%8A%B8%EB%A7%81Query-string-URL-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0

홈>고객센터페이지에 오면 등록된 문의글을 보여줄거야!
1번부터 10번까지를 한번에! 기능 구현

 

  • 3-4

고객센터 faq 리스트 페이지별로 볼 수 있게 만드는 중(한 페이지에 글 10개씩 length=10)

Numbers
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#numbers
${#numbers.sequence(from,to)}

 

 

  • 4-5

(/springWeb05-design/src/main/java/com/green/nowon/service/impl/CustomerServiceProcess.java)

@Override
public void faqAll(Model model, int page) {
    //if (page=1) {int from=1, int to=10};
    //if (page=2) {int from=11, int to=20};
    int length = 10; //페이지당 보여줄 개수
    int to = page*length;
    int from = to-length+1;

    //페이지계산
    //총 게시글 수
    int tot = mapper.countAll();
    System.out.println("faq의 총 개수 : "+tot);

    int pageTotal = tot/length;
    // if(나머지가 있으면) { pageTotal++; }
    if(!(pageTotal==0)) { //if(pageTotal!=0)
		pageTotal++;
    }

    //page=1, pGroup=1, pFrom=1, pTo=5
    //page=2, pGroup=1, pFrom=1, pTo=5
    //page=3, pGroup=1, pFrom=1, pTo=5
    //page=4, pGroup=1, pFrom=1, pTo=5
    //page=5, pGroup=1, pFrom=1, pTo=5
    //page=6, pGroup=2, pFrom=6, pTo=10
    //page=7, pGroup=2, pFrom=6, pTo=10 ...
    int pLength = 5; //페이지 그룹에 들어가는 글의 개수
    int pGroup = page/pLength;
    if(page%pLength != 0)  pGroup++; // % 나머지계산
    //page start~end -> pGroup=1 
    //page 1~5 -> pGroup=1
    //page 6~10 -> pGroup=2
    //page 11~15 -> pGroup=3

    int end = pGroup*pLength;
    int start = end-pLength+1;

    System.out.println("총페이지수 : "+pageTotal);

    model.addAttribute("list", mapper.faqAll(from, to));
    model.addAttribute("pageTot",pageTotal);
    model.addAttribute("pageStart", start);
    model.addAttribute("pageEnd", end);
}

 

Prev Sign, Next Sign 만들기
(/springWeb05-design/src/main/resources/templates/customer/front.html)

 

 

  • 5-6

4.10 Comparators and Equality
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#comparators-and-equality
A simpler alternative may be using textual aliases that exist for some of these operators: gt (>), lt (<), ge (>=), le (<=), not (!). Also eq (==), neq/ne (!=).

페이지 시작과 끝에서 <, > 표시 없애기

<div class="paging">
    <ol class="flex center">
        <!-- Prev Sign -->
        <li th:if="${pageStart ne 1}"> <!-- ne(!=) -->
       		<a th:href="|/customers/home?page=${pageStart-1}|">&lt;</a>
        </li>
        <!-- pageStart ~ pageEnd 반복 -->
        <li th:each="pageNo:${#numbers.sequence(pageStart,pageEnd)}">
        	<a th:href="|/customers/home?page=${pageNo}|">[[${pageNo}]]</a>
        </li>
        <!-- Next Sign -->
        <li th:if="${pageEnd < pageTot}">
        	<a th:href="|/customers/home?page=${pageEnd+1}|">&gt;</a>
        </li>
    </ol>
<div>



첫페이지로<<, 마지막페이지로>> 표시 만들기

    <!-- 첫 페이지로 -->
    <li>
        <a href="/customers/home?page=1">&lt;&lt;</a>
    </li>
    <!-- 마지막 페이지로 -->
    <li>
        <a th:href="|/customers/home?page=${pageTot}|">&gt;&gt;</a>
    </li>

 

(/springWeb05-design/src/main/java/com/green/nowon/utils/PageDTO.java)
리스트 페이지 구현에 필요한 계산식들 여기에 모아두자