Spring WebJars 教程展示了如何在 Spring Web 应用程序中使用 WebJar。
Spring是一个流行的Java应用程序框架,用于创建企业 应用。
WebJars是打包的客户端Web库(例如jQuery或Semantic UI) 到 JAR(Java 存档)文件中。WebJars 自动化前端工作 库和资源。
在下面的示例中,我们使用 Semantic-UI WebJar。语义UI是一种流行的 CSS 框架。
pom.xml
src
├───main
│ ├───java
│ │ └───com
│ │ └───zetcode
│ │ ├───config
│ │ │ MyWebInitializer.java
│ │ │ WebConfig.java
│ │ └───controller
│ │ MyController.java
│ └───resources
│ │ logback.xml
│ └───templates
│ index.html
└───test└───java
这是项目结构。
pom.xml
4.0.0 com.zetcode WebJarEx 1.0-SNAPSHOT war UTF-8 17 17 5.1.4.RELEASE 3.0.11.RELEASE ch.qos.logback logback-classic 1.4.0 javax.servlet javax.servlet-api 4.0.1 provided org.springframework spring-webmvc ${spring-version} org.webjars Semantic-UI 2.4.1 org.webjars webjars-locator 0.34 org.thymeleaf thymeleaf-spring5 ${thymeleaf-version} org.thymeleaf thymeleaf ${thymeleaf-version} org.apache.maven.plugins maven-war-plugin 3.3.2
在pom.xml我们有项目依赖项。
org.webjars Semantic-UI 2.4.1
我们使用Semantic-UI WebJar。
org.webjars webjars-locator 0.34
webjars-locator允许我们直接不带版本号引用资产,自动检测引用的资产版本。
resources/logback.xml
%d{HH:mm:ss.SSS} %blue(%-5level) %magenta(%logger{36}) - %msg %n
这是配置logback.xml
package com.zetcode.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.FrameworkServlet;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;@Configuration
public class MyWebInitializer extendsAbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class>[] getRootConfigClasses() {return null;}@Overrideprotected Class>[] getServletConfigClasses() {return new Class[]{WebConfig.class};}@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}
}
MyWebInitializer初始化 Spring Web 应用程序。它包含一个 配置类:。WebConfig
package com.zetcode.config;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring5.view.ThymeleafViewResolver;@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.zetcode"})
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate ApplicationContext applicationContext;@Beanpublic SpringResourceTemplateResolver templateResolver() {var templateResolver = new SpringResourceTemplateResolver();templateResolver.setApplicationContext(applicationContext);templateResolver.setPrefix("classpath:templates/");templateResolver.setSuffix(".html");return templateResolver;}@Beanpublic SpringTemplateEngine templateEngine() {var templateEngine = new SpringTemplateEngine();templateEngine.setTemplateResolver(templateResolver());templateEngine.setEnableSpringELCompiler(true);return templateEngine;}@Beanpublic ViewResolver viewResolver() {var resolver = new ThymeleafViewResolver();var registry = new ViewResolverRegistry(null, applicationContext);resolver.setTemplateEngine(templateEngine());registry.viewResolver(resolver);return resolver;}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/").resourceChain(false);}@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}
}
配置百里香叶模板引擎,告诉 Spring 在哪里查找 WebJars 并启用转发到默认 servlet 用于处理静态资源。WebConfig
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/").resourceChain(false);
}
我们将通过路径引用WebJars。 必须为版本无关而调用该方法 网络罐子。/webjars/resourceChain
package com.zetcode.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;import java.util.List;@Controller
public class MyController {@GetMapping(value = "/")public String home(Model model) {var words = List.of("wood", "star", "cloud", "water","river", "spring");model.addAttribute("words", words);return "index";}
}
MyController包含主页的一个路由。我们发送一些 数据到模板。数据将以 HTML 表格的形式呈现,该表格将 使用语义 UI 设置样式。
Home page
English words
Index Word Index A word
这是主页。
我们链接到来自WebJar的文件。semantic.css
CSS 类来自 Semantic-UI 库。
在本教程中,我们创建了一个语义UIWebJar来设置HTML样式。 桌子。
上一篇:一个人脱裤子用尿浇灭大火打一成语
下一篇:描写“纯真”的诗句有哪些
相关内容
热门资讯
金华市修订完善知识产权强市建设...
近期,《金华市人民政府关于深入实施知识产权强市建设的若干意见》(以下简称《意见》)修订完成。12月2...
“地质瑰宝”披上法治“防护衣”...
华声在线12月25日讯(全媒体记者 杨元崇)今天,《湘西世界地质公园保护条例》正式公布。 湘西土家族...
120亿元!安徽真金白银推进学...
记者近日从安徽省财政厅获悉,2025年,省财政共统筹资金120亿元落实各项学生资助政策。财政资金的持...
国家出台首个支持西部陆海新通道...
12月25日,“金融支持加快西部陆海新通道建设有关情况”新闻发布会在北京举行。中国人民银行党委委员、...
广东华企通法律咨询有限公司成立...
天眼查显示,近日,广东华企通法律咨询有限公司成立,法定代表人为彭俊翔,注册资本500万人民币,由盈合...
低空经济持续获政策支持 业绩有...
人民财讯12月26日电,低空经济作为国家战略性新兴产业,持续受到政策支持。 作为万亿级产业,低空经济...
【深圳特区报】从“制度设计图”...
近日,深圳市财政局召开“数据资产全过程管理试点工作培训暨经验交流会”(以下简称“培训交流会”),围绕...
原创 重...
在情感的漩涡中,我们常常看到悲剧的发生。近日,一则令人心痛的消息震动了整个网络——重庆一男子因感情纠...
极氪回应明年车辆质保权益等问题...
【CNMO科技消息】近日,极氪汽车发布《极氪零距离 | 你问我答》公告,就用户关注的车辆质保、免费充...
关于海南育儿补贴制度实施热点问...
户籍刚迁入海南的婴幼儿是否能享受育儿补贴;如何快速了解补贴申领流程……12月25日,海南省新闻办公室...