首先,来看下MAVENx项目标准的目录结构:html
通常状况下,咱们用到的资源文件(各类xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,maven能把这些资源文件打包到相应的jar或者war里。java
有时候,好比mybatis的mapper.xml文件,咱们习惯把它和Mapper.java放一块儿,都在src/main/java下面,这样利用maven打包时,就须要修改pom.xml文件,来把mapper.xml文件一块儿打包进jar或者war里了,不然,这些文件不会被打包的。(maven认为src/main/java只是java的源代码路径)。网络上有不少方法,我大概试了下,几种方法均可以,能够任选一种便可。web
方法1,其中**/*这样的写法,是为了保证各级子目录下的资源文件被打包。spring
Xml代码 apache
<build> <finalName>test</finalName> <!-- 这样也能够把全部的xml文件,打包到相应位置。 <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.tld</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.tld</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
方法2,利用build-helper-maven-plugin插件api
Xml代码 tomcat
<build> ... </plugins> ... <!-- 此plugin能够用 利用此plugin,把源代码中的xml文件, 打包到相应位置,这里主要是为了打包Mybatis的mapper.xml文件 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.8</version> <executions> <execution> <id>add-resource</id> <phase>generate-resources</phase> <goals> <goal>add-resource</goal> </goals> <configuration> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin> ... </plugins> ... </build>
方法3,利用maven-resources-plugin插件springboot
Xml代码 网络
<build> ... </plugins> ... <!-- 此plugin能够用 利用此plugin,把源代码中的xml文件,打包到相应位置, 这里主要是为了打包Mybatis的mapper.xml文件 --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>copy-xmls</id> <phase>process-sources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/classes</outputDirectory> <resources> <resource> <directory>${basedir}/src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin> ... </plugins> ... </build>
例如:使用IDEA前台使用JSP页面展示视图,须要进行以下配置,不然会提示404,找不到页面mybatis
POM文件:
<!-- 引入springboot 内嵌的Tomcat对JSP的解析包 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <!-- servlet依赖的jar包start --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </dependency> <!-- servlet依赖的jar包end --> <!-- jsp依赖的jar包start --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> </dependency> <!-- jsp依赖的jar包end --> <!-- jstl标签依赖的jar包start --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!-- jstl标签依赖的jar包end -->
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> <!-- 使用IDEA开发JSP,为了防止找不到页面,出现404错误,必须加入下面配置 --> <!-- maven打包配置resources: --> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> </resource> <!-- 这个表示把src/main/webapp下面全部文件(**/*.*)都编译到 META-INF/resources目录下--> <resource> <directory>src/main/webapp</directory> <targetPath>META-INF/resources</targetPath> <includes> <include>**/*.*</include> </includes> </resource> </resources> </build>
application.properties:
#前段视图采用JSP,配置jsp先后缀 spring.mvc.view.prefix=/ spring.mvc.view.suffix=.jsp
Controller:
@Controller public class JspController { @RequestMapping("/boot/index") public String index(Model model){ model.addAttribute("msg","spring boot 集成 JSP"); return "index"; } }
JSP页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>INDEX</title> </head> <body> <div> ${msg} </div> </body> </html>
效果: