(3)SpringBoot 2.0 통합 Freemarker,jsp 및 전역 캡 처 이상

SpringBoot 2.0 통합 Freemarker,jsp 및 전역 캡 처 이상
정적 자원 방문
렌 더 링 웹 페이지
Freemarker 템 플 릿 엔진 을 사용 하여 웹 보 기 를 렌 더 링 합 니 다3.1 pom 파일 도입3.2 배경 코드
프론트 코드
3.4 application.yml 설정 Freemarker
  • 4.JSP 렌 더 링 웹 보 기 를 사용 합 니 다
  • 4.1 pom 의존4.2 application.yml 설정 jsp4.3 백 스테이지 코드
    4.4 프론트 코드
    전체 포획 이상
    정적 자원 접근
    우리 가 웹 응용 프로그램 을 개발 할 때,대량의 js,css,이미지 등 정적 자원 을 인용 해 야 한다.
    기본 설정 Spring Boot 는 기본적으로 정적 자원 디 렉 터 리 위 치 를 classpath 에 두 어야 합 니 다.디 렉 터 리 이름 은 다음 과 같은 규칙 에 부합 해 야 합 니 다./static/public/resources/META-INF/resources 예 를 들 어 src/main/resources/디 렉 터 리 에 static 를 만 들 고 이 위치 에 그림 파일 을 설치 할 수 있 습 니 다.프로그램 시작 후 접근 시도http://localhost:8080/test.jpg。그림 을 표시 할 수 있다 면 설정 이 성공 하 였 습 니 다.
    2.렌 더 링 웹 페이지
    렌 더 링 웹 페이지 는 이전 예제 에서 우 리 는 모두@RestController 를 통 해 요청 을 처리 하기 때문에 돌아 오 는 내용 은 json 대상 입 니 다.그렇다면 html 페이지 를 렌 더 링 해 야 할 때 어떻게 실현 해 야 합 니까?
    템 플 릿 엔진 은 동적 HTML 에서 Spring Boot 를 완벽 하 게 수행 할 수 있 고 다양한 템 플 릿 엔진 의 기본 설정 지원 을 제공 하기 때문에 추천 하 는 템 플 릿 엔진 에서 우 리 는 동적 사 이 트 를 빠르게 개발 할 수 있 습 니 다.Spring Boot 는 기본 설정 의 템 플 릿 엔진 을 제공 합 니 다.주로 다음 과 같은 몇 가지 가 있 습 니 다.•Thymeleaf•FreeMarker•Velocity•Groovy•Mustache Spring Boot 는 이 템 플 릿 엔진 을 사용 하여 JSP 를 사용 하지 않도록 권장 합 니 다.JSP 를 사용 하려 면 Spring Boot 의 다양한 특성 을 실현 할 수 없습니다.구체 적 으로 보 이 는 뒷글:JSP 설정 을 지원 합 니 다.상기 템 플 릿 엔진 중 하 나 를 사용 할 때 기본 템 플 릿 설정 경 로 는 src/main/resources/templates 입 니 다.물론 이 경 로 를 수정 할 수 있 습 니 다.구체 적 으로 어떻게 수정 하 는 지 는 후속 템 플 릿 엔진 의 설정 속성 에서 조회 하고 수정 할 수 있 습 니 다.
    3.Freemarker 템 플 릿 엔진 을 사용 하여 웹 보 기 를 렌 더 링 합 니 다.
    3.1 pom 파일 도입
    		<!--   freeMarker    . -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-freemarker</artifactId>
    		</dependency>
    

    3.2 배경 코드
    메모:페이지 로 돌아 가 야 하기 때문에@RestController 를 사용 할 수 없습니다.@Controller 를 사용 하 십시오.
    @Controller
    @Slf4j
    public class IndexController {
    
        /**
         * Freemarker    
         * @param map
         * @return
         */
        @RequestMapping("/ftlIndex")
        public String fltIndex(Map<String, Object> map) {
            map.put("userName", "   ");
            map.put("sex", "1");
            List<String> listResult = Lists.newArrayList();
            listResult.add("  ");
            listResult.add("  ");
            listResult.add("   ");
            map.put("listResult", listResult);
    
            return "ftlIndex";
        }
    }
    

    3.3 프론트 코드
    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8"/>
        <title>  </title>
    </head>
    <body>
      ,${userName},       Freemarker  <br>
    <#if sex=="1">
     
    <#elseif sex=="2">
     
    <#else>
      
    </#if>
    <br><br>
    <#list listResult as user>
    <span>${user}</span>
    </#list>
    </body>
    </html>
    
    
    

    3.4 application.yml 설정 Freemarker
    # Freemarker    
    spring:
      freemarker:
        allow-request-override: false
        cache: true
        check-template-location: true
        charset: UTF-8
        content-type: text/html
        expose-request-attributes: false
        expose-session-attributes: false
        expose-spring-macro-helpers: false
        suffix: .ftl
        template-loader-path: classpath:/templates/
    

    4.JSP 렌 더 링 웹 보기 사용
    4.1 pom 의존
    jsp 페이지 이기 때문에 웹 의존 도 를 도입 해 야 합 니 다.
    <!-- SpringBoot web      -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-tomcat</artifactId>
    		</dependency>
    	<!-- SpringBoot   tomcat   -->	
    	<dependency>
    			<groupId>org.apache.tomcat.embed</groupId>
    			<artifactId>tomcat-embed-jasper</artifactId>
    		</dependency>
    
    

    4.2 application.yml 설정 jsp
    # Jsp    
    spring:
      mvc:
        view:
          prefix: /WEB-INF/jsp/
          suffix: .jsp
    

    4.3 배경 코드
    메모:SpringBoot 2.0 이전:SpringBoot 통합 JSP 를 만 들 려 면 war 형식 이 어야 합 니 다.그렇지 않 으 면 페이지 를 찾 을 수 없습니다.JSP 페이지 를 resources/jsp 에 저장 하지 마 십시오.SpringBoot 2.0 에 접근 할 수 없습니다.jar 로 설정 하 는 것 도 OK 이지 만 서버 에 포장 하면 war 로 설정 해 야 합 니 다.
        /**
         * Jsp    
         * @param map
         * @return
         */
        @RequestMapping("/jspIndex")
        public String jspIndex(Map<String, Object> map) {
            map.put("currentUserName", "   ");
            List<UserEntity> listResult = Lists.newArrayList(
                    new UserEntity("111", "   "),
                    new UserEntity("222", "  "),
                    new UserEntity("333", "   ")
            );
            map.put("userList", listResult);
            return "jspIndex";
        }
    

    4.4 프론트 코드
    <%@ page language="java" contentType="text/html; charset=UTF-8"
             pageEncoding="UTF-8" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0"/>
        <title>JSP  </title>
    </head>
    <body>
        :${currentUserName}<br><br>
    <c:forEach items="${userList}" var="item">
        <div class="plateItem">${item.userName}</div>
    </c:forEach>
    </body>
    </html>
    
    

    5.전역 포획 이상
    @ExceptionHandler 는 차단 이상 1 을 표시 합 니 다.@Controller Advice 는 contrller 의 보조 클래스 입 니 다.가장 많이 사용 되 는 것 은 전역 이상 처리 의 절단면 류 2 입 니 다.@Controller Advice 는 스 캔 범 위 를 지정 할 수 있 습 니 다.3.@Controller Advice 는 몇 가지 실행 가능 한 반환 값 을 약 속 했 습 니 다.model 류 로 직접 연결 하려 면 사용 해 야 합 니 다.
    @ResponseBody 에서 json 변환 o 를 String 으로 되 돌려 줍 니 다.특정한 view o 로 건 너 가서 modelAndView o 를 model+@ResponseBody 로 되 돌려 줍 니 다.
    @ControllerAdvice
    public class GlobalExceptionHandler {
    	@ExceptionHandler(RuntimeException.class)
    	@ResponseBody
    	public Map<String, Object> exceptionHandler() {
    		Map<String, Object> map = new HashMap<String, Object>();
    		map.put("errorCode", "101");
    		map.put("errorMsg", "    !");
    		return map;
    	}
    }
    
    

    SpringBoot 2.0-Access denied for user'@'localhost'to database

    좋은 웹페이지 즐겨찾기