SpringBoot 는 어떻게 페이지 의 실현 방법 을 되 돌려 줍 니까?
4894 단어 SpringBoot페이지 되 돌리 기
SpringBoot 에서 Thymeleaf 에 대한 통합 은 기본적으로 완선 되 었 으 나 특수 한 상황 에서 Thymeleaf 를 필요 로 하지 않 거나 사용 할 수 없 기 때문에 두 가지 상황 으로 나 누 어 페이지 의 귀환 에 대해 논술 한다.
우선 이 두 가지 상황 에서 발생 할 수 있 는 오류 이자 초보 자 들 에 게 자주 발생 하 는 오류 입 니 다.
직접 코드 올 리 기:
@RestController
public class TestController {
@RequestMapping("/")
public String index() {
return "index";
}
}
이 코드 의 취 지 는 index.html 페이지 로 돌아 가 는 것 이지 만 실행 결 과 는 페이지 에서 index 를 출력 하 는 것 입 니 다.원인 분석:@RestController 주 해 는@ResponseBody 와@Controller 가 합 쳐 진 역할 에 해당 합 니 다.@RestController 주석 Controller 를 사용 할 때 Controller 의 방법 은 jsp 페이지 나 html 로 돌아 갈 수 없습니다.설 정 된 보기 해상도 기 Internal ResourceView Resolver 는 작 동 하지 않 습 니 다.돌아 오 는 내용 은 Return 의 내용 입 니 다.
Mapping 주해 와 함께@Response Body 를 사용 할 때 도 같은 문제 가 발생 할 수 있 습 니 다.
해결 방법:①@ResponseBody 를 제거 하거나 Rest 가 함 유 된 주 해 를 해당 하 는 원시 주해 로 바 꿉 니 다.
② String 을 통 해 되 돌아 오지 않 고 Model AndView 대상 을 통 해 되 돌아 갑 니 다.상기 예 는 return 문 구 를 다음 문장 으로 바 꿀 수 있 습 니 다.
return new ModelAndView("index");
Model AndView 대상 을 사용 하여 되 돌 릴 때@Response Body 와 유사 한 주석 이 있 는 지 고려 할 필요 가 없습니다.또 하나의 주의해 야 할 점 이 있 습 니 다:@RequestMapping 의 경 로 는 돌아 오 는 페이지 이름과 똑 같 지 않 아야 합 니 다.그러면 500 의 오 류 를 보고 할 수 있 습 니 다!!!
아래 와 같이 이렇게 하면 안 된다.
@Controller
public class TestController {
@RequestMapping("/index")
public String idx() {
return "index";
}
}
1.템 플 릿 엔진 을 사용 하지 않 은 상태 에서:템 플 릿 엔진 을 사용 하지 않 은 상태 에서 페이지 를 방문 하 는 방법 은 두 가지 가 있 습 니 다.
1)방문 할 페이지 를 resources/static/폴 더 에 두 면 이 페이지 에 직접 접근 할 수 있 습 니 다.예:
아무것도 설정 되 지 않 은 상태 에서 직접 접근 할 수 있 습 니 다:
같은 resources 에 있 지만 templates 폴 더 에 있 는 login.html 에 접근 할 수 없습니다.
2)redirect 를 사용 하여 페이지 의 도약 을 실현 한다.
예제 코드(페이지 경로 가 위 와 일치 하 는 경우):
@Controller
public class TestController {
@RequestMapping("/map1")
public String index() {
return "redirect:index.html";
}
@RequestMapping("/map2")
public String map2() {
return "redirect:login.html";
}
}
실행 결과:이 방법 은 html 파일 을 static 디 렉 터 리 에 두 어야 페이지 의 도약 을 실현 할 수 있다 는 것 을 의미한다.
물론 이 저장 경로 문 제 를 해결 하 는 최종 해결 방안 이 있 습 니 다.그것 은 바로 springmvc 의 설정 을 사용 하 는 것 입 니 다.
spring:
mvc:
view:
suffix: .html
static-path-pattern: /**
resources:
static-locations: classpath:/templates/,classpath:/static/
이렇게 설정 하면 맵 1 과 맵 2 가 페이지 에 접근 할 수 있 습 니 다.2,Thymeleaf 템 플 릿 엔진 사용:
필요 한 의존 도 를 pom.xml 에 추가 합 니 다.
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.1.6.RELEASE</version>
</dependency>
같은 페이지 경로 에서 controller 코드 를 다음 코드 로 변경 합 니 다:
@Controller
public class TestController {
@RequestMapping("/map1")
public String index() {
return "index";
}
/** */
/*public ModelAndView index() {
return new ModelAndView("index");
}*/
@RequestMapping("map2")
public String map2() {
return "login";
}
}
실행 결과:이것 은 또 하나의 문 제 를 설명 합 니 다.필요 한 페이지 는 templates 폴 더 아래 에 두 어야 합 니 다.물론 설정 파일 을 변경 할 수도 있 습 니 다.
spring:
thymeleaf:
prefix: classpath:/static/
suffix: .html
cache: false #
prefix 에 대응 하 는 값 을 변경 하면 Thymeleaf 가 방문 한 디 렉 터 리 를 변경 할 수 있 습 니 다.목록 이 하나 밖 에 없 는 것 같 습 니 다.종합:템 플 릿 엔진 의 사용 여 부 는 페이지 접근 을 실현 할 수 있 습 니 다.페이지 에 저 장 된 위치 와 방문 하거나 돌아 올 때 접미사 이름 을 추가 하지 않 는 문제 가 있 습 니 다.
여기 서 SpringBoot 가 어떻게 페이지 로 돌아 가 는 지 에 대한 실현 방법 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 가 페이지 로 돌아 가 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.