使用IDEA创建SpringMvc并整合Thymeleaf(Java配置版)

时间:2022-07-25
本文章向大家介绍使用IDEA创建SpringMvc并整合Thymeleaf(Java配置版),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、新建Maven项目

  使用idea:File–>New–>Project–>Maven,然后勾选"Create from archetype",继续选中"maven-archetype-webapp"。最后填好GroupId和ArtifactId.

  • groupId :the unique identifier of the organization or group that created the project. <======>GroupID 是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
  • artifactId :unique base name of the primary artifact being generated by this project <======>ArtifactID是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

二、导入相关maven的依赖包

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <spring.version>4.3.18.RELEASE</spring.version>
    <thymeleaf.version>2.1.4.RELEASE</thymeleaf.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!--J2EE-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>

    <!--SpringMvc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!--Thymeleaf-->
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring4</artifactId>
      <version>${thymeleaf.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf</artifactId>
      <version>${thymeleaf.version}</version>
    </dependency>

  </dependencies>

三、创建目录结构

  1. 右击项目名称---->Add Framework Support…---->选择SpringMvc(如果没有这个选项,需要把Project Structure—>Modules—>Spring移除掉)
  2. 在main文件夹下添加java目录,然后右击Make Directory as—>Sources Root
  3. 在src目录下新建test目录,然后右击Make Directory as—>Test Sources Root

四、编写配置文件

  1. SpittrWebAppInitializer
/**
 * 配置DispatcherServlet,相当于Web.xml的作用
 *
 * getServletConfigClasses()方法返回的带有@Configuration注解的类将会用来定义DispatcherServlet应用上下文中的Bean
 * getRootConfigClasses()方法返回的带有@Configuration注解的类将会用来配置ContextLoaderListener创建的应用上下文中的Bean
 *
 *
 * @Author: xjf
 * @Date: 2019/6/28 17:37
 */
public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{RootConfig.class};
    }

    /**
     * 指定配置类
     * @return
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }

    /**
     * 将DispatcherServlet映射到"/"。会将一个或多个路径映射到DispatcherServlet上
     * @return
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}
  1. RootConfig
@Configuration
@ComponentScan(basePackages = "com.spittr",
        excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class)})
public class RootConfig {
}
  1. WebConfig
/**
 * WebConfig配置类(自定义的配置)
 *
 * @Author: xjf
 * @Date: 2019/6/30 9:41
 */
@Configuration
@EnableWebMvc
@ComponentScan("com.spittr.config")
public class WebConfig extends WebMvcConfigurerAdapter {

    /**
     * Thymeleaf视图解析器
     * @param templateEngine
     * @return
     */
    @Bean
    public ViewResolver viewResolver(SpringTemplateEngine templateEngine){
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine);

        return viewResolver;
    }

    /**
     * 模板引擎
     * @param templateResolver
     * @return
     */
    @Bean
    public SpringTemplateEngine templateEngine(TemplateResolver templateResolver){
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);

        return templateEngine;
    }

    /**
     * 模板解析器
     * @return
     */
    @Bean
    public TemplateResolver templateResolver(){
        TemplateResolver templateResolver = new ServletContextTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");

        return templateResolver;
    }
}

五、编写一个控制类HelloController

@Controller
public class HelloController {

    @RequestMapping(value = "/hello",method = RequestMethod.GET)
    public String hello(){
        System.out.println("hello");
        return "hello";
    }
}

六、编写一个hello.html

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
            xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <title>Spitter</title>
</head>
<body>

<h1>Welcome to Spittr</h1>

<a th:href="@{/spittles}">Spittles</a>

</body>
</html>

七、最后配置好tomcat就可以运行起来了