Spring Boot应用程序

时间:2017-11-18 17:18:51

标签: spring-boot jasper-reports thymeleaf spring-boot-maven-plugin spring-boot-starter

我试过,在一个项目中都有jasper和thymeleaf,但是不能共存,因为我想用jsp必须注释掉Spring-boot-starter-thymeleaf依赖于包,这样才能运行。寻找解决方案,以便碧玉和百里香可以共存。我得到了stackoverflow的解决方案,如果有人使用servlet-context.xml(Mixing thymeleaf and jsp files in Spring Boot),其中jasper和thymeleaf共存。但我的要求是如果我使用spring-boot-starter-web,如何在pom.xml中包含这些属性。

1 个答案:

答案 0 :(得分:0)

我能够在Spring启动内的嵌入式jar构建中运行HTML和JSP页面。但是如果你想通过在命令提示符下复制Jar来独立运行它,那么你需要复制JSP页面文件夹结构,因为它不会在jar内容中,你需要稍微更改pom文件以便jar可以添加外部内容。

步骤1:添加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步:项目结构和文件创建

在源文件夹src / main / resources下创建文件夹模板,在该文件下创建子文件夹thymeleaf。并创建一个html文件sample.html(比如说)

<!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 / main / webapp / WEB-INF下创建子文件夹视图。在视图下创建一个jsp文件,sample.jsp(比如说)

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

步骤3:在您的application.properties中设置百万富翁视图名称和JSP配置以进行内部视图解析。

#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:创建服务Thymeleaf和JSP页面的控制器:

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:在某些情况下,您可能需要为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的应用程序。

当您在浏览器中点击此网址时:http://localhost:8080/thymeleaf?name=rohit。这将在页面中心打开带有参数名称的sample.html文件,并使用此URL:http://localhost:8080/jasper?name=rohit将打开带有参数名称的sample.jsp页面。