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
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
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
com/zetcode/config/MyWebInitializer.java
- 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 extends
- AbstractAnnotationConfigDispatcherServletInitializer {
-
- @Override
- protected Class>[] getRootConfigClasses() {
- return null;
- }
-
- @Override
- protected Class>[] getServletConfigClasses() {
-
- return new Class[]{WebConfig.class};
- }
-
- @Override
- protected String[] getServletMappings() {
-
- return new String[]{"/"};
- }
- }
MyWebInitializer
初始化 Spring Web 应用程序。它包含一个 配置类:。WebConfig
com/zetcode/config/WebConfig.java
- 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 {
-
- @Autowired
- private ApplicationContext applicationContext;
-
- @Bean
- public SpringResourceTemplateResolver templateResolver() {
-
- var templateResolver = new SpringResourceTemplateResolver();
-
- templateResolver.setApplicationContext(applicationContext);
- templateResolver.setPrefix("classpath:templates/");
- templateResolver.setSuffix(".html");
-
- return templateResolver;
- }
-
- @Bean
- public SpringTemplateEngine templateEngine() {
-
- var templateEngine = new SpringTemplateEngine();
- templateEngine.setTemplateResolver(templateResolver());
- templateEngine.setEnableSpringELCompiler(true);
-
- return templateEngine;
- }
-
- @Bean
- public ViewResolver viewResolver() {
-
- var resolver = new ThymeleafViewResolver();
- var registry = new ViewResolverRegistry(null, applicationContext);
-
- resolver.setTemplateEngine(templateEngine());
- registry.viewResolver(resolver);
-
- return resolver;
- }
-
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry
- .addResourceHandler("/webjars/**")
- .addResourceLocations("/webjars/").resourceChain(false);
- }
-
- @Override
- public 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
com/zetcode/controller/MyController.java
- 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 设置样式。
resources/templates/index.html
-
-
Home page -
-
-
-
English words
-
-
-
-
-
Index -
Word -
-
-
-
-
Index -
A word -
-
-
-
-
这是主页。
我们链接到来自WebJar的文件。semantic.css
CSS 类来自 Semantic-UI 库。
在本教程中,我们创建了一个语义UIWebJar来设置HTML样式。 桌子。
-
相关阅读:
如何将自己的电脑变成WiFi热点
061:mapboxGL利用fitBounds同时将多个点放在可视范围内
解决网络编程中的EOF违反协议问题:requests库与SSL错误案例分析
【系统】VMware虚拟机安装黑苹果系统macOS 12.5详细步骤
06、GO异常处理
Maven高级-分模块开发和设计及依赖管理
Linux网络套接字之TCP网络程序
【Linux】如何在Linux下提交代码到gittee
代码臃肿已成常态:99% 计算机资源都被浪费掉了
Android基础第一天 | 字节跳动第四届青训营笔记
-
原文地址:https://blog.csdn.net/allway2/article/details/128072956