SpringBoot 2 통합 FreeMarker 구현 페이지 정적 화 예시 상세 설명

1.페이지 정적 화
1.동적 정적 페이지
정적 페이지
즉,정적 웹 페이지 는 콘 텐 츠 HTML 페이지 를 불 러 왔 습 니 다.요청 서버 데이터 와 컴 파일 과정 을 거치 지 않 고 클 라 이언 트 브 라 우 저 에 직접 불 러 옵 니 다.일반적으로 독립 된 HTML 페이지 를 만 들 고 서버 와 데이터 상호작용 을 하지 않 는 다 는 것 이다.
장단 점 설명:
  • 정적 웹 페이지 의 내용 이 안정 적 이 고 페이지 로드 속도 가 매우 빠르다.
  • 서버 와 상호작용 하지 않 고 안전성 을 향상 시킨다.
  • 정적 웹 페이지 의 상호작용 성 이 떨 어 지고 데이터 의 실시 간성 이 낮다.
  • 차원 원가 가 높 고 HTML 페이지 를 많이 생 성 합 니 다.
  • 동적 페이지
    정적 웹 페이지 와 상대 적 인 웹 프로 그래 밍 기술 을 말 합 니 다.페이지 의 내용 은 서버 에 요청 해 야 합 니 다.캐 시 를 고려 하지 않 은 상태 에서 서비스 인터페이스의 데이터 변화,페이지 로 딩 의 내용 도 실시 간 으로 변화 합 니 다.표 시 된 내용 은 데이터 베이스 작업 의 결과 에 따라 동적 으로 변 합 니 다.
    장단 점 설명:
  • 동적 웹 페이지 의 실시 간 으로 데 이 터 를 얻 고 지연 성 이 낮다.
  • 데이터 뱅 크 의 상호작용 에 의존 하고 페이지 유지 비용 이 매우 낮다.
  • 데이터 베이스 와 실시 간 으로 상호작용 을 하고 안전 통제 의 원가 가 높다.
  • 페이지 로드 속 도 는 데이터베이스 와 서비스의 성능 에 매우 의존한다.
  • 동적 페이지 와 정적 페이지 는 상대 성 이 강하 고 비교 해 보면 이해 하기 쉽다.
    2.응용 장면
    동적 페이지 정적 처리 의 응용 장면 이 매우 많다.예 를 들 어:
  • 대형 사이트 의 머리 와 밑부분 은 정태 화 된 후에 통일 적 으로 불 러 옵 니 다.
  • 미디어 사 이 트 는 내용 이 렌 더 링 을 거 쳐 HTML 페이지 로 직접 전환 된다.
  • 높 고 보 내 는 CDN 변두리 노드 에이전트 의 정적 웹 페이지;
  • 전자상거래 사이트 에서 복잡 한 제품 상세 페이지 처리;
  • 정적 화 기술 의 근본:서비스의 응답 속 도 를 제시 하거나 응답 노드 를 앞 당 깁 니 다.예 를 들 어 일반적인 절차,페이지(클 라 이언 트)요청 서비스,서비스 처리,응답 데이터,페이지 로드 등 일련의 절차 가 복잡 할 뿐만 아니 라 시간 도 걸 립 니 다.만약 에 정적 화 기술 처 리 를 바탕 으로 정적 페이지 를 직접 불 러 오 면 요청 이 끝 납 니 다.
    2.절차 분석
    정적 페이지 전환 은 상대 적 으로 복잡 한 과정 으로 그 중에서 핵심 절 차 는 다음 과 같다.
  • 정적 웹 스타일 인 페이지 템 플 릿 을 개발 합 니 다.
  • 인 터 페 이 스 를 제공 하여 페이지 템 플 릿 에 데 이 터 를 가 져 옵 니 다.
  • 페이지 템 플 릿 에서 데이터 인터페이스 리 셋 을 작성 하 는 분석 절차;
  • 분석 엔진 을 바탕 으로 데이터 와 페이지 템 플 릿 을 통합 합 니 다.
  • 페이지 템 플 릿 내용 을 불 러 온 후 HTML 정적 페이지 로 변환 합 니 다.
  • HTML 정적 페이지 를 파일 서버 에 업로드 합 니 다.
  • 클 라 이언 트(Client)가 정적 페이지 의 url 로 딩 디 스 플레이 를 가 져 옵 니 다.
  • 주류 과정 은 대체적으로 위 와 같 습 니 다.만약 에 데이터 인터페이스 응답 매개 변수 가 변 하면 정적 페이지 를 다시 생 성 해 야 하기 때문에 데이터 의 로드 실시 성 이 많이 낮 습 니 다.
    3.코드 실현 사례
    1.기초 의존
    FreeMarker 는 템 플 릿 엔진 입 니 다.즉,템 플 릿 과 변경 할 데 이 터 를 기반 으로 출력 텍스트(HTML 페이지,이메일,프로필,소스 코드 등)를 만 드 는 일반적인 도구 입 니 다.
    
    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>
    2.페이지 템 플 릿
    이곳 은 FreeMarker 가 개발 한 템 플 릿 스타일 도 사용 합 니 다.
    
    <html>
    <head>
     <title>PageStatic</title>
    </head>
    <body>
      :${myTitle}<br/>
    <#assign text="{'auth':'cicada','date':'2020-07-16'}" />
    <#assign data=text?eval />
      :${data.auth}   :${data.date}<br/>
    <table class="table table-striped table-hover table-bordered" id="editable-sample">
     <thead>
     <tr>
      <th>    </th>
      <th>    </th>
     </tr>
     </thead>
     <tbody>
        <#list tableList as info>
        <tr class="">
         <td>${info.desc}</td>
         <td><img src="${info.imgUrl}" height="80" width="80"></td>
        </tr>
        </#list>
     </tbody>
    </table><br/>
    <#list imgList as imgIF>
     <img src="${imgIF}" height="300" width="500">
    </#list>
    </body>
    </html>
    FreeMarker 의 문법 은 기 존의 HTML 문법 과 대체적으로 일치 하지만 자신의 데이터 처리 라벨 을 가지 고 있어 사용 하기에 복잡 하지 않다.
    3.해석 과정
    분석 을 통 해 페이지 템 플 릿 과 데이터 인터페이스의 데 이 터 를 합 치면 됩 니 다.
    
    @Service
    public class PageServiceImpl implements PageService {
    
     private static final Logger LOGGER = LoggerFactory.getLogger(PageServiceImpl.class) ;
     private static final String PATH = "/templates/" ;
    
     @Override
     public void ftlToHtml() throws Exception {
      //      
      Configuration configuration = new Configuration(Configuration.getVersion());
      //       
      String classpath = this.getClass().getResource("/").getPath();
      configuration.setDirectoryForTemplateLoading(new File(classpath + PATH));
      //     
      Template template = configuration.getTemplate("my-page.ftl");
      //     
      Map<String, Object> map = new HashMap<>();
      map.put("myTitle", "     (PageStatic)");
      map.put("tableList",getList()) ;
      map.put("imgList",getImgList()) ;
      //        
      String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
      LOGGER.info("content:{}",content);
      InputStream inputStream = IOUtils.toInputStream(content,"UTF-8");
      //     
      FileOutputStream fileOutputStream = new FileOutputStream(new File("F:/page/newPage.html"));
      IOUtils.copy(inputStream, fileOutputStream);
      //    
      inputStream.close();
      fileOutputStream.close();
     }
    
     private List<TableInfo> getList (){
      List<TableInfo> tableInfoList = new ArrayList<>() ;
      tableInfoList.add(new TableInfo(Constant.desc1, Constant.img01));
      tableInfoList.add(new TableInfo(Constant.desc2,Constant.img02));
      return tableInfoList ;
     }
    
     private List<String> getImgList (){
      List<String> imgList = new ArrayList<>() ;
      imgList.add(Constant.img02) ;
      imgList.add(Constant.img02) ;
      return imgList ;
     }
    }
    생 성 된 HTML 페이지 는 브 라 우 저 로 직접 열 면 됩 니 다.더 이상 데이터 인터페이스 서비스 에 의존 하지 않 아 도 됩 니 다.
    소스 코드 주소
    GitHub/주소https://github.com/cicadasmile/middle-ware-parent
    GitEE/주소    https://gitee.com/cicadasmile/middle-ware-parent
    여기 서 SpringBoot 2 통합 FreeMarker 구현 페이지 정적 화 예제 에 대한 상세 한 설명 을 소개 합 니 다.더 많은 SpringBoot 2 통합 FreeMarker 구현 페이지 정적 화 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 지원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기