-1

jasper와 thymeleaf 프로젝트에서 시도했지만, 공존 할 수는 없습니다. JSP를 사용하고 싶습니다. Spring-boot-starter-thymeleaf는 패키지를 실행하여 실행할 수 있습니다. 재스퍼와 타임 라이트가 모두 존재할 수 있도록 솔루션을 찾고 있습니다. jasper와 thymeleaf가 공존하는 servlet-context.xml (Mixing thymeleaf and jsp files in Spring Boot)을 사용하는 경우 stackoverflow에 대한 해결책이 있습니다. 하지만 spring-boot-starter-web을 사용하고 있다면 pom.xml에 이러한 속성을 포함시키는 방법이 필요합니다.스프링 부트 응용 프로그램에서 thymeleaf와 jasper 파일이 함께 존재합니다.

답변

0

스프링 부트 내부에 내장 된 jar 빌드에서 HTML 및 JSP 페이지를 실행할 수있었습니다. 그러나 명령 프롬프트에서 Jar 파일을 복사하여 독립적으로 실행하려면 Jar 내용에 없으므로 JSP 페이지 폴더 구조를 복사해야합니다. 그러면 jar 파일을 추가 할 수 있도록 pom 파일을 약간 변경해야합니다 그것에 대한 외부 콘텐츠.

1 단계 : 생성 소스 폴더 SRC/메인/자원에서 프로젝트 구조 및 파일 생성

: 추가 Thymeleaf 및 JSP 종속 은 pom.xml 파일

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-thymeleaf</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-jasper</artifactId> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-tomcat</artifactId> 
    <scope>provided</scope> 
</dependency> 

2 단계에 종속 아래에있는 추가 폴더 템플릿, 그 하위 폴더 thymeleaf 만듭니다. 그리고

<!DOCTYPE html> 
<html lang="en" xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <title>Hello</title> 
</head> 
<body> 
    THYMELEAF PAGE: <p th:text="${name}"></p> 
</body> 
</html> 

하위 폴더보기를 만들 SRC/메인/웹 애플리케이션/WEB-INF에서 HTML 파일의 sample.html (말을) 만들 수 있습니다. 내부 뷰 해결을위한 thymeleaf 뷰 이름과 JSP의 구성을 설정하여 application.properties에서 :보기는 JSP 파일, sample.jsp (말)

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Hello</title> 
</head> 
<body> 
    JSP PAGE: Hello ${name} 
</body> 
</html> 

만들기 3 단계에서.

#tomcat-connection settings 
spring.datasource.tomcat.initialSize=20 
spring.datasource.tomcat.max-active=25 
#Jasper and thymeleaf configaration 
spring.view.prefix= /WEB-INF/ 
spring.view.suffix= .jsp 
spring.view.view-names= views 
spring.thymeleaf.view-names= thymeleaf 
#Embedded Tomcat server 
server.port = 8080 
#Enable Debug 
debug=true 
management.security.enabled=false 

4 단계 :

package com.example.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.GetMapping; 
import org.springframework.web.bind.annotation.RequestParam; 

@Controller 
public class TestController { 

    @RequestMapping(value="/jasper", method=RequestMethod.GET) 
    public String newjasper(Map<String, Object> m, String name){ 
     //System.out.print("-- INSIDE JSP CONTROLER ------"); 
     m.put("name", name); 
     return "views/sample"; 
    } 

    @RequestMapping(value="/thymeleaf", method=RequestMethod.GET) 
    public String newthymeleaf(Map<String, Object> m, String name){ 
     //System.out.print("-- INSIDE HTML CONTROLER ------"); 
     m.put("name", name); 
     return "thymeleaf/sample"; 
    } 

} 

5 단계 : Thymeleaf 및 JSP 페이지를 제공하기위한 컨트롤러를 만들기 당신이 JSP에 대한 뷰 해결을위한 구성 클래스 SpringConfig.class (말)을 만드는 데 필요한 어떤 경우를 페이지. 그러나 선택적으로, 나는 그것을 나의 설정 파일에서 사용하지 않는다.

import org.springframework.web.servlet.view.JstlView; 

@Configuration 
public class SpringConfig { 
@Value("${spring.view.prefix}") 
private String prefix; 

@Value("${spring.view.suffix}") 
private String suffix; 

@Value("${spring.view.view-names}") 
private String viewNames; 

@Bean 
InternalResourceViewResolver jspViewResolver() { 
    final InternalResourceViewResolver viewResolver = new 
    InternalResourceViewResolver(); 
    viewResolver.setPrefix(prefix); 
    viewResolver.setSuffix(suffix); 
    viewResolver.setViewClass(JstlView.class); 
    viewResolver.setViewNames(viewNames); 
    return viewResolver; 
} 
} 

6 단계 : jsp와 html 모두에 대한 테스트 응용 프로그램입니다.

브라우저에서이 URL을 누르십시오 : http://localhost:8080/thymeleaf?name=rohit. 이렇게하면 매개 변수 이름이 페이지 중앙에 있고이 URL이있는 sample.html 파일이 열립니다. http://localhost:8080/jasper?name=rohit은 매개 변수 이름이 가운데에있는 sample.jsp 페이지를 엽니 다.

0

viewresover javadoc.

는 제어기에 의해 반환 된 뷰 이름이 리졸버 여부에 의해 해결 될 인가 여부를 결정한다 이름 패턴의 세트를 지정한다. 예를 -for 여러 뷰 리졸버를 구성하는 응용 프로그램에서

, Thymeleaf 및 JSP + JSTL 레거시 페이지 - 또 다른 하나 하나 이 속성이 이 뷰 리졸버 때 스프링에 의해 뷰가 해결 된 것으로 간주 될 때 설정 그 대신 다음 결정자에게 주문서에 따라 을 요청해야합니다.

지정된 뷰 이름 패턴이 완료 뷰 이름이 될 수 있지만, 또한 * 와일드 카드를 사용할 수 있습니다. "인덱스를 ", " USER_", "관리자/*", 등 또한

있습니다 이러한보기 이름 패턴은 접두사 또는 접미사를보기 이름에 적용하기 전에 확인되므로 개를 포함해서는 안됩니다. 따라서 보통 /WEB-INF/templates/orders/*.html 대신/* 주문을 지정합니다.

실제로 뷰의 이름을 지정하십시오.이 패턴 해석기는 으로 처리 할 수 ​​없습니다.

이러한 패턴은 setViewNames (String [])의 형식과 같은 형식으로 지정할 수 있지만 제외 목록으로 사용할 수 있습니다. viewResolver.setViewNames (viewNames);