(3)SpringBoot 2.0 통합 Freemarker,jsp 및 전역 캡 처 이상
25059 단어 SpringBoot2.0SpringBoot2.x 학습
정적 자원 방문
렌 더 링 웹 페이지
Freemarker 템 플 릿 엔진 을 사용 하여 웹 보 기 를 렌 더 링 합 니 다3.1 pom 파일 도입3.2 배경 코드
프론트 코드
3.4 application.yml 설정 Freemarker
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