1.如果该web项目使用jsp来呈现页面,或者项目(包括使用jsp或者html+thymeleaf)需要打包后在外部tomcat服务器上运行时,需要有webapp文件夹。如果使用idea创建springboot项目,是没有webapp文件夹的,因为springboot项目默认使用html+thymeleaf,且内置了tomcat,此时如果此项目需要在外部tomcat容器中运行需手动配置webapp文件夹,具体方法可百度。
jsp yml 配置:
server:
port: 8090
servlet:
context-path: / #项目根目录发布
spring:
mvc: #引入mvn配置
view:
prefix: /WEB-INF/ # /默认代表根目录 src/main/webapp
suffix: .jsp
2.如果该web项目使用html和thymeleaf来呈现页面,则不需要再手动添加webapp文件夹,而是将 .html 文件存放到 src/main/resources文件夹下,
最好是放在 /templates 下,重点:如果使用thymeleaf模板引擎,不可将 .html 文件放在 webapp 文件夹下,否则会报异常:找不到模板。如图:
thymeleaf yml配置:
3.webapp文件夹下一般有 static、WEB-INF两个文件夹,该文件夹在项目发布后,static文件夹中的文件是可以直接在浏览器端获取的(如:localhost:8080/static/xxxx.js),WEB-INF文件夹下的文件是不可以直接在浏览器获取的(通常配合controller使用,或是提供给项目中的其它文件使用)
4.项目搭建使用html+thymeleaf
package com.login.dlz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/helloweb")
@ResponseBody//向浏览器返回json对象
public String helloWeb(){
return "helloWeb";
}
@RequestMapping("/hello/{id}")//restful风格
public String hello(@PathVariable int id){
System.out.println("hello:"+id);
//转发
return "forward:helloweb";
}
@RequestMapping("/hello2")
public String hello2(){
System.out.println("hello2");
//重定向
return "redirect:helloweb";
}
@RequestMapping("index")
public String index(){
//请求页面的两种情况:
// 1.返回值最前面的字符串想不带“/”斜杆,
// 如:return "helloword";
// 那么application.yml的thymeleaf配置为:
// thymeleaf.prefix= classpath:/templates/
// 2.如果application.yml的thymeleaf配置为:
// thymeleaf.prefix= classpath:/templates
// 即路径最后少配置了一根斜杆,那么表示页面的路径字符串最前面必须加一根斜杆,
// 如:return "/helloword";
return "helloword";
}
}
5.pom.xml配置(html+thymeleaf)
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
6.thymeleaf模板路径配置注意事项
@RequestMapping("index")
public String index(){
//请求页面的两种情况:
// 1.返回值最前面的字符串想不带“/”斜杆,
// 如:return "helloword";
// 那么application.yml的thymeleaf配置为:
// thymeleaf.prefix= classpath:/templates/
// 2.如果application.yml的thymeleaf配置为:
// thymeleaf.prefix= classpath:/templates
// 即路径最后少配置了一根斜杆,那么表示页面的路径字符串最前面必须加一根斜杆,
// 如:return "/helloword";
return "helloword";
}