8 апреля 2020 г. SringBoot объединяет скорость и общий синтаксис

Java

адрес проекта:GitHub.com/Entrepreneurship Network Small/Судный день, который вы…

задний план

Так как бизнес компании ориентирован на африканский рынок Смартфоны не популярны в некоторых странах, например в Уганде, где по-прежнему преобладают мобильные телефоны. Для поддержки кнопочного телефона необходимо создать новыйwapВеб-сайт для поддержки обычных телефонов (Боже мой!)

Технический отбор

Так как тест функциональной машины не поддерживает js, использовать vue на фронтенде нереально, и можно использовать только в виде шаблонов Вы можете использовать jsp, freemarker, Thymeleaf и другие движки, но окончательный выборvelocityШаблон (шеф использовал его) использование серверной частиspringboot

#Проект Простая Архитектура

#скорость интеграции springboot

Выбор версии

Выберите spring-boot-starter-velocity, более высокая версия springboot не поддерживается, можно использовать только более низкую версию 1.4.7.

pom.xml добавить зависимости

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-velocity</artifactId>
    </dependency>

application.properties добавить конфигурацию

server.port=2828
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.check-template-location=true
spring.velocity.content-type=text/html
spring.velocity.enabled=true
spring.velocity.prefix=/templates/
spring.velocity.suffix=.vm

Добавьте демонстрационный тест на слой контроллера

@Controller
@RequestMapping("/velocity")
public class TestController {

    // demo测试
    @RequestMapping("/demo")
    public String demo1(Map map) {
        map.put("message", "这是测试的内容。。。");
        map.put("time", System.currentTimeMillis());
        return "index";
    }
}

Новый домашний index.vm в папке шаблонов

<html>
<body>
    $!{message}
    $!{time}
</body>
</html>

посетите главную страницу

http://localhost:2828/velocity/demoхорошо, простейшая скорость интеграции с Springboot завершена

обработка даты и времени

Как настроить формат времени временной метки

1. Добавьте toolbox.xml

Содержание выглядит следующим образом

<?xml version="1.0" encoding="UTF-8"?>
<toolbox>
  <tool>
    <key>DateTool</key>
    <scope>application</scope>
    <class>org.apache.velocity.tools.generic.DateTool</class>
  </tool>
</toolbox>

Конечно, если вам нужно обрабатывать числа или что-то в этом роде, вы также можете ввести инструмент.

2. Укажите расположение toolbox.xml

application.propertiesДобавьте spring.velocity.toolbox-config-location=/toolbox.xml

3. Использование на странице vm

<h1>日期处理</h1>
处理前:$time
<br>
处理后:$!DateTool.format($!time)

Единая обработка страниц исключений

Новый обработчик исключений скорости

@ControllerAdvice
public class VelocityExceptionHander {

    @ExceptionHandler(value = Exception.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public String exceptionHandler(Exception e, HttpServletRequest request) {
        System.out.println("未知异常!原因是:" + e);
        request.setAttribute("msg", e);
        return "500";
    }
}

Создайте новую страницу шаблона 500.vm

<html>
<body>
error
<br>
    $!msg
</body>
</html>

После этого, если произойдет исключение, он перейдет на страницу 500.

Наконец, суммируйте часто используемые базовые грамматические теги.

    // velocity常用语法汇总
    @RequestMapping("/allDemo")
    public String demo3(Map map) {
        map.put("amount", 100);
        map.put("msg", "dahai");
        map.put("sex", "man");
        putString(map);
        putSportList(map);
        map.put("time", System.currentTimeMillis());
        return "allDemo";
    }

    private void putSportList(Map map) {
        List<Sport> sportList = new ArrayList<Sport>() {{
            add(new Sport(1, "Football"));
            add(new Sport(2, "Basketball"));
            add(new Sport(3, "tennis"));
            add(new Sport(4, "rugby"));
            add(new Sport(5, "cricket"));
        }};
        map.put("sportList", sportList);
        Map<Integer, Sport> sportMap = sportList.stream().collect(Collectors.toMap(Sport::getId, s -> s));
        map.put("sportMap", sportMap);
    }

    private void putString(Map map) {
        List<String> strings = new ArrayList<>();
        strings.add("a");
        strings.add("b");
        strings.add("c");
        map.put("strings", strings);
    }

страница шаблона виртуальной машины

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>velocity test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>

<h1>字符串类型</h1>
    $!msg

<h1>if标签</h1>
    #if($!sex == 'man')
    男
    #else
    女
    #end

<h1>set操作(定义变量)</h1>
    #set($hw = 'ok')
    $hw

<h1>普通for循环</h1>
    #foreach($!s in $!strings)
        $s &nbsp;
    #end

<h1>对象for循环</h1>
    #foreach($!sport in $!sportList)
        $!sport.name &nbsp;
    #end

<h1>map for循环</h1>
    #foreach($!sp in $!sportMap.keySet())
        $sp &nbsp; $!sportMap.get($sp).name &nbsp;<br>
    #end

<h1>日期处理</h1>

处理前:$time
<br>
处理后:$!DateTool.format($!time)

<h1>计算加减乘除</h1>

    #set($jia = $amount + 10)
+10= $jia   <br>
    #set($jian = $amount - 10)
-10= $jian  <br>
    #set($cheng = $amount * 10)
×10= $cheng <br>
    #set($chu = $amount / 10)
÷10= $chu   <br>


</body>
</html>

Окей, сделано! Разогрейте знакомые и незнакомые интерфейсные и внутренние (рендеринг на стороне сервера) проекты, ؏؏☝ᖗ乛◡乛ᖘ☝؏؏