共计 3542 个字符,预计需要花费 9 分钟才能阅读完成。
1 应用开发基础
1.1 静态文件
1:Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 来配置各种属性,建议使用默认配置方式,提供的静态资源映射,按照优先级顺序如下:
classpath:/META-INF/resources
classpath:/resources
classpath:/static
classpath:/public
2:可以通过修改 spring.mvc.static-path-pattern 来修改默认的映射路径
3:注意:如果应用将被打包成 jar,就不要使用 src/main/webapp 文件夹。尽管该文件夹是一个共同的标准,但它仅在打包成 war 的情况下起作用
4:SpringMVC 使用 ResourceHttpRequestHandler 来进行资源映射,所以可以通过添加自己的 WebMvcConfigurerAdapter 并覆写 addResourceHandlers 方法,来改变这个行为,也就是自定义加载静态文件
1.2 自定义加载静态文件示例
@Configuration
public class MyWebMvcConfig extends WebMvcConfigurerAdapter {public void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static2/**")
.addResourceLocations("classpath:/static2/");
super.addResourceHandlers(registry);
}
}
1:也可以指定外部的路径,直接 addResourceLocations 指定即可,示例如下:
把.addResourceLocations(“classpath:/static/”) 变换成
.addResourceLocations(“file:D:/my/”)
1.3 添加拦截器配置
1:先按照 SpringMVC 的自定义拦截器的写法,写好拦截器类
2:然后在重写 WebMvcConfigurerAdapter 中的 addInterceptors 方法,示例如下:
public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/toLogin","/login");
super.addInterceptors(registry);
}
1.4 国际化
1:定义国际化资源文件,放到 resource 下面,默认名字是 messages.properties
2:在前面的 MyWebMvcConfig 中添加读取消息文件的 bean
@Bean
public MessageSource messageSource() {ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
3:程序里面就可以直接注入 MessageSource 并使用 @Autowired
private MessageSource messageSource;
4:一样可以向消息文件中传入参数
1.5 支持的模板引擎
Spring Boot 支持多种模版引擎包括:FreeMarker、Groovy、Thymeleaf(官方推荐)
1:JSP 技术,Spring Boot 官方是不推荐的,原因可能有:
(1)Tomcat 只支持 war 的打包方式,不支持可执行的 jar
(2)Jetty 嵌套的容器不支持 jsp
2:默认的模板配置路径为:src/main/resources/templates
2 Thymeleaf
2.1 概述
Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 JSP,Velocity,FreeMaker 等,它也可以轻易的与 Spring MVC 等 Web 框架进行集成作为 Web 应用的模板引擎。
与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。它的功能特性如下:
1:Spring MVC 中 @Controller 中的方法可以直接返回模板名称,接下来 Thymeleaf 模板引擎会自动进行渲染
2:模板中的表达式支持 Spring 表达式语言(Spring EL)
3:表单支持,并兼容 Spring MVC 的数据绑定与验证机制
4:国际化支持
2.2 基本语法和使用
具体的请参见官网:http://www.thymeleaf.org/
升级到使用 thymeleaf 3.x:
<thymeleaf.version>3.0.8.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
3 Springboot 集成 Jsp
3.1 配置依赖
<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>
注意把前面 thymeleaf 的配置去掉
3.2 配置 application.properties
spring.mvc.view.prefix=/WEB-INF/pages/
spring.mvc.view.suffix=.jsp
然后就可以进行 jsp 开发了,跟以前一样
3.3 部署运行
1:打成 jar 运行,会报错,因为 jsp 没有包含进来
2:打成 war 运行,可以用 java –jar 的方式来运行
3:如果要部署到外部服务器中:
(1)添加一个类来继承 SpringBootServletInitializer,类似于 web.xml 文件配置的方式来启动 Spring 应用上下文,形如:
@Component
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(Application.class);
}
}
(2)修改 web.xml 的头,设置为 servlert3 以上,否则默认的 jsp 用 1.2 的,默认没有开启 el,要 jsp2.0 以上才可以,形如:
<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app xmlns=”http://xmlns.jcp.org/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/j…d”
version=”3.1″ metadata-complete=”true”>
(3)用 maven 打完包过后,拷贝后缀为.war.original 的这个 war,当然要修改一下名字,这个是 springboot 没有包装内嵌服务器的 war 包
(4)然后就可以去启动外部的 tomcat 了
继续学习吧~~ 哈哈,我给大家来了硬广,cc 老师创立的私塾在线现在推出 2020 年高级架构师课程培训课程现在折扣才 6800 元,包含 300+ 录,60+ 直播,面试技巧等课程内容,惊喜多多!详情都在私塾的官网,感兴趣的小伙伴,可以一起去【 私塾在线 】学习