- 一、静态资源访问
- 二、全局捕获异常
- 三、渲染Web页面
- 1.Freemarker渲染web视图
- 2.JSP渲染Web视图
- 四、打包方式
- 1.Jar
- 2.War
Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:
/static /public /resources /meta-INF/resources
示例:
在src/main/resources/目录下创建static,并在static目录下存放一张图片1.jpg。 访问http://localhost:8080/1.jpg路径即可访问。二、全局捕获异常
@ExceptionHandler表示拦截的具体异常
@ControllerAdvice是controller的一个辅助类,常作为全局异常处理的切面类。约定了几种可行的返回值:
1.返回String,表示跳到某个view 2.返回modelAndView 3.返回model,需使用@ResponseBody进行json转换
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public Map exceptionHandler() {
Map map = new HashMap();
map.put("code", "101");
map.put("msg", "系統错误");
return map;
}
}
三、渲染Web页面
通过@RestController来处理请求,返回的内容为json对象,如果需要渲染html页面,则Spring Boot提供了多种模板引擎的默认配置支持动态HTML
默认配置的模板引擎主要有以下几种:
Thymeleaf FreeMarker Velocity Groovy Mustache
1.Freemarker渲染web视图当使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates。如果要修改这个路径,具体如何修改,可在各模板引擎的配置属性中查询并修改。
引入依赖
org.springframework.boot spring-boot-starter-freemarker
添加配置application.properties
#启用模板缓存 spring.freemarker.cache=true #检查模板位置是否存在 spring.freemarker.check-template-location=true #设置编码格式 spring.freemarker.charset=UTF-8 #内容类型值 spring.freemarker.content-type=text/html #后缀,该后缀用于在构建URL时查看名称。 spring.freemarker.suffix=.ftl #以逗号分隔的模板路径列表 spring.freemarker.template-loader-path=classpath:/templates/
添加web层访问逻辑
@Controller
public class IndexControler {
@RequestMapping("/index")
public String index(ModelMap map) {
map.addAttribute("name", "小白");
return "index";
}
}
在src/main/resources/创建一个templates文件夹,新增后缀为*.ftl的文件。
freemarker
${name}
2.JSP渲染Web视图
SpringBoot应用默认支持的动态网页技术是Thymeleaf,并不支持JSP;因此在SpringBoot应用想要使用JSP需要通过手动整合来实现
引入依赖
org.springframework.boot spring-boot-starter-tomcat org.apache.tomcat.embed tomcat-embed-jasper
修改pom.xml打包方式
war
配置application.properties
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp
Controller访问逻辑
@Controller
public class IndexControler {
@RequestMapping("/index")
public String index() {
return "index";
}
}
在main目录下,添加webapp目录与resources目录同级,在main/webapp/WEB-INF/jsp/添加index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
jsp
hello jsp
四、打包方式
1.Jar
SpringBoot项目默认打包方式就是打Jar包,所以无需任何配置。2.War
指定打包方式
在pom.xml中指定打包方式:War
war
移除自带的内置Tomcat
org.springframework.boot spring-boot-starter-web spring-boot-starter-tomcat org.springframework.boot
添加servlet-api依赖
javax.servlet javax.servlet-api provided
添加War的启动类
public class WarStarterApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 指向springboot项目的启动类
return builder.sources(Application.class);
}
}
最后将生成War包丢进Tomcat运行即可。



