8 de abril de 2020 SringBoot integra velocidad y gramática común

Dirección del proyecto: github.com/chywx/sprin ...

Antecedentes

Debido a que el negocio de la compañía está orientado al mercado africano, algunos países no han popularizado los teléfonos inteligentes. Por ejemplo, Uganda todavía se enfoca en máquinas funcionales. Para soportar máquinas funcionales, es necesario crear un nuevo wapsitio web para soportar máquinas funcionales (¡Dios mío!)

Selección técnica

Dado que la función no soporta js máquina de prueba, el front-end vue poco realista, sólo se puede utilizar JSP, FreeMarker, thymeleaf y otro motor en forma de plantillas, pero la selección final de velocityplantillas (el jefe utiliza Bale) backendspringboot

# Proyecto de arquitectura simple

# velocidad de arranque integrada

Selección de versión

Seleccione spring-boot-starter-velocity, la versión superior de springboot no es compatible, solo la versión inferior de 1.4.7

pom.xml agregar dependencia

<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 agregar configuración

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
复制代码

Agregar prueba de demostración a la capa del controlador

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

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

nueva home index.vm debajo de la carpeta de plantillas

<html>
<body>
    $!{message}
    $!{time}
</body>
</html>
复制代码

Visita la página de índice

http://localhost:2828/velocity/demo ok, la velocidad de integración de springboot más simple está completa

Procesamiento de fecha y hora

Cómo personalizar el formato de hora de la marca de tiempo

1. Agregar toolbox.xml

El contenido es el siguiente

<?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>
复制代码

Por supuesto, si necesita lidiar con números o algo, también puede presentar una herramienta

2. Especifique la ubicación de toolbox.xml

application.properties添加 spring.velocity.toolbox-config-location = / toolbox.xml

3. Usar en la página vm

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

Manejo de página de excepción unificada

Nuevo VelocityExceptionHander

@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";
    }
}
复制代码

Nueva página de plantilla de 500.vm

<html>
<body>
error
<br>
    $!msg
</body>
</html>
复制代码

Si se produce una excepción después, saltará a la página 500.

Finalmente, resuma las etiquetas gramaticales básicas comúnmente utilizadas

    // 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);
    }
复制代码

página de plantilla de vm

<!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>
复制代码

ok, terminado! Vuelva a calentar los proyectos de front-end y back-end familiares y desconocidos (renderizado del lado del servidor),

Supongo que te gusta

Origin juejin.im/post/5ea0faf4f265da47eb05b489
Recomendado
Clasificación