UndertowServer+SpringMVC+Thymeleaf模板引擎构建轻量级的web项目
这两周需要写一个页面来请求另一个服务中的接口,服务器采用了超轻量级的undertow,模板引擎采用的是Thymeleaf,在寻找页面资源位置这个地方难住了我。下面分享一下,这方面的代码。
SpringWebConfig方面:
public class SpringWebConfig extends WebMvcConfigurerAdapter {
private static boolean initialized = false; @Bean
public static PropertySourcesPlaceholderConfigurer config() {
return SpringConfigHelper.createPlaceholderConfigBean("classpath:prime.cfg");
} /**
* Spring容器初始化完成后回调该函数
* 通过该机制可以动态扩展bean实例配置
* 用于工作服务框架加载工作服务实现相关bean
*
* @param basePackage 扩展bean扫描路径
* @return ApplicationListener实例
*/
@Bean
public ApplicationListener<ContextRefreshedEvent> initializedEvent(
@Value("${Optimus.Prime.ServiceBasePackage:}") String basePackage) {
return new ApplicationListener<ContextRefreshedEvent>() {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
if (!initialized) {
initialized = true;
SpringConfigHelper.appendBeanFromPackage(
(AnnotationConfigWebApplicationContext) event.getApplicationContext(),
basePackage);
}
}
};
} /**
* 模板解析器
* @return 解析器
*/
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setPrefix("classpath:/template/");
resolver.setSuffix(".html");
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setCacheable(false);
resolver.setCharacterEncoding("UTF-8");
return resolver;
} /**
* 解析器
* @param templateResolver 解析器
* @return
*/
@Bean
public SpringTemplateEngine templateEngine(SpringResourceTemplateResolver templateResolver) {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(templateResolver); return engine;
}
/**
* 视图解析器
* @param templateEngine 解析器
* @return 视图解析
*/
@Bean
public ThymeleafViewResolver viewResolver(SpringTemplateEngine templateEngine) {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine);
resolver.setCharacterEncoding("UTF-8"); return resolver;
}
} UndertowServer 的启动方法:
public int start() {
DeploymentInfo servletBuilder = Servlets.deployment()
.setClassLoader(UndertowServer.class.getClassLoader())
.setContextPath("/TAE/rest/v1")
.setDeploymentName("test.war")
.addServletContextAttribute(
SpringContextListener.PARENT_CONTEXT, context)
.addListeners(
Servlets.listener(SpringContextListener.class))
.addServlets(
Servlets.servlet("resource", DispatcherServlet.class)
.addInitParam("contextClass",
"org.springframework.web.context.support"
+ ".AnnotationConfigWebApplicationContext")
.addInitParam("contextConfigLocation",
configClass)
.addMapping("/*")
.setLoadOnStartup(1)
)
.addServletContextAttribute(WebSocketDeploymentInfo.ATTRIBUTE_NAME,
new WebSocketDeploymentInfo()
.setBuffers(new DefaultByteBufferPool(true, 100))
); DeploymentManager manager = Servlets.defaultContainer()
.addDeployment(servletBuilder);
manager.deploy(); try {
PathHandler path = Handlers.path(Handlers.redirect("/"))
.addPrefixPath("/", manager.start()); server = Undertow.builder()
.addHttpListener(port, host)
.setHandler(path)
.build(); server.start();
} catch (Exception e) {
log.fatal("cannot start web server", e);
return CommonError.FATAL_FAIL;
}
return CommonError.SUCCESS;
}
UndertowServer+SpringMVC+Thymeleaf模板引擎构建轻量级的web项目的更多相关文章
- 三、thymeleaf模板引擎构建前台html, 后台使用 ModelAndView 和 Model 模型
项目源码:https://github.com/y369q369/springBoot.git -> thymeleaf 私聊QQ: 1486866853 1.pom.xml中 ...
- 【Springboot】Springboot整合Thymeleaf模板引擎
Thymeleaf Thymeleaf是跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP,相较与其他的模板引擎,它主要有以下几个特点: 1. Thymeleaf在有网络和无 ...
- Thymeleaf模板引擎的初步使用
在springboot中,推荐使用的模板引擎是Thymeleaf模板引擎,它提供了完美的Spring MVC的支持.下面就简单的介绍一下Thymeleaf模板引擎的使用. 在controller层中, ...
- spring boot: thymeleaf模板引擎使用
spring boot: thymeleaf模板引擎使用 在pom.xml加入thymeleaf模板依赖 <!-- 添加thymeleaf的依赖 --> <dependency> ...
- SpringBoot:2.SpringBoot整合Thymeleaf模板引擎渲染web视图
在Web开发过程中,Spring Boot可以通过@RestController来返回json数据,那如何渲染Web页面?Spring Boot提供了多种默认渲染html的模板引擎,主要有以下几种: ...
- (二)SpringBoot基础篇- 静态资源的访问及Thymeleaf模板引擎的使用
一.描述 在应用系统开发的过程中,不可避免的需要使用静态资源(浏览器看的懂,他可以有变量,例:HTML页面,css样式文件,文本,属性文件,图片等): 并且SpringBoot内置了Thymeleaf ...
- SpringBoot使用thymeleaf模板引擎
(1).添加pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- Spring Boot 2.0 整合Thymeleaf 模板引擎
本节将和大家一起实战Spring Boot 2.0 和thymeleaf 模板引擎 1. 创建项目 2. 使用Spring Initlizr 快速创建Spring Boot 应用程序 3. 填写项目配 ...
- SpringBoot入门篇--使用Thymeleaf模板引擎进行页面的渲染
在做WEB开发的时候,我们不可避免的就是在前端页面之间进行跳转,中间进行数据的查询等等操作.我们在使用SpringBoot之前包括我在内其实大部分都是用的是JSP页面,可以说使用的已经很熟悉.但是我们 ...
随机推荐
- 团队开发NABCD
团队成员介绍: 李青:绝对的技术控,团队中扮演“猪”的角色,勤干肯干,是整个团队的主心骨,课上紧跟老师的步伐,下课谨遵老师的指令,课堂效率高,他的编程格言“没有编不出来的程序,只有解决不了的bug”. ...
- 机器学习笔记(4)Logistic回归
模型介绍 对于分类问题,其得到的结果值是离散的,所以通常情况下,不适合使用线性回归方法进行模拟. 所以提出Logistic回归模型. 其假设函数如下: \[ h_θ(x)=g(θ^Tx) \] 函数g ...
- HDU 5656 CA Loves GCD 01背包+gcd
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5656 bc:http://bestcoder.hdu.edu.cn/contests/con ...
- web压力测试_(收集)
作者:ZeldaZzz链接:http://www.zhihu.com/question/19867883/answer/89775858来源:知乎著作权归作者所有,转载请联系作者获得授权. 一个完整的 ...
- Visual C++ 8.0对象布局
哈哈,从M$ Visual C++ Team的Andy Rich那里又偷学到一招:VC8的隐含编译项/d1reportSingleClassLayout和/d1reportAllClassLayout ...
- p2 关节
P2中使用Constraint及其子类表示关节,也就是将两个刚体按照指定的规则约束在一起,形成有规律的.相互限制的运动模拟.P2关节模拟中,两个刚体没有通过任何刚体连接,只是通过算法模拟出关节运动轨迹 ...
- java 类型转型
- P2764 最小路径覆盖问题(网络流24题之一)
题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开 ...
- Day22-1-知识回顾
1. 知识点概要 --Session --CSRF --Model操作 --Form验证(ModelForm) --中间件 --缓存 2.知识回顾 2.1客户端请求及服务器端返回,都包含请求头和bod ...
- python基础----内置函数----匿名函数(lambda)
Python3版本所有的内置函数: 1. abs() 获取绝对值 >>> abs(-) >>> abs() >>> abs() >>& ...