栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

五、视图解析与模板引擎

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

五、视图解析与模板引擎

文章目录
  • 1、模板引擎-Thymeleaf
    • 1)thymeleaf简介
    • 2)基本语法
    • 3)字面量
    • 4)文本操作
    • 5)数学运算
    • 6)布尔运算
    • 7)比较运算
    • 8)条件运算
    • 9)thymeleaf使用
  • 2、构建后台管理系统
    • 1)项目创建
    • 2)静态资源处理
    • 3)路径构建
    • 4)模板抽取
    • 5)页面跳转
    • 6)遍历数据
  • 3、拦截器
    • 1)HandlerInterceptor 接口
    • 2)配置拦截器
    • 3)拦截器原理
  • 4、文件上传
    • 1)页面表单
    • 2)文件上传代码
    • 3)文件上传大小设置
  • 5、异常处理

1、模板引擎-Thymeleaf 1)thymeleaf简介

现代化、服务端Java模板引擎

2)基本语法

3)字面量

文本值: ‘one text’ , ‘Another one!’
数字: 0 , 34 , 3.0 , 12.3
布尔值: true , false
空值: null
变量: one,two,变量不能有空格

4)文本操作

字符串拼接: +

变量替换: |The name is ${name}|

5)数学运算

运算符: + , - , * , / , %

6)布尔运算

运算符: and , or

一元运算: ! , not

7)比较运算

比较: > , < , >= , <= ( gt , lt , ge , le )等式: == , != ( eq , ne )

8)条件运算

If-then: (if) ? (then)

If-then-else: (if) ? (then) : (else)

Default: (value) ?: (defaultvalue)

9)thymeleaf使用

引入依赖

        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        

页面开发




    
    Title



哈哈

去百度

2、构建后台管理系统 1)项目创建

thymeleaf、web-starter、devtools、lombok

2)静态资源处理

自动配置好,我们只需要把所有静态资源放到 static 文件夹下

3)路径构建

th:action=“@{/login}”

4)模板抽取

th:insert/replace/include

So an HTML fragment like this:

© 2011 The Good Thymes Virtual Grocery
…included three times in host 
tags, like this:
…will result in:


  
© 2011 The Good Thymes Virtual Grocery
© 2011 The Good Thymes Virtual Grocery
© 2011 The Good Thymes Virtual Grocery
5)页面跳转
    @PostMapping("/login")
    public String main(User user, HttpSession session, Model model){
 
        if(StringUtils.hasLength(user.getUserName()) && "123456".equals(user.getPassword())){
            //把登录成功的用户保存起来
            session.setAttribute("loginUser",user);
            //登录成功重定向到main.html;  重定向防止表单重复提交
            return "redirect:/main";
        }else {
            model.addAttribute("msg","账号密码错误");
            //回到登录页面
            return "login";
        }
 
    }
6)遍历数据
        
# 用户名 密码
Trident Internet [[${user.password}]]
3、拦截器 1)HandlerInterceptor 接口
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
 
    
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
 
        String requestURI = request.getRequestURI();
        log.info("preHandle拦截的请求路径是{}",requestURI);
 
        //登录检查逻辑
        HttpSession session = request.getSession();
 
        Object loginUser = session.getAttribute("loginUser");
 
        if(loginUser != null){
            //放行
            return true;
        }
 
        //拦截住,未登录,跳转到登录页
        request.setAttribute("msg","请先登录");
//        re.sendRedirect("/");
        request.getRequestDispatcher("/").forward(request,response);
        return false;
    }
 
    
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.info("postHandle执行{}",modelAndView);
    }
 
    
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        log.info("afterCompletion执行异常{}",ex);
    }
}
2)配置拦截器
@Configuration
public class AdminWebConfig implements WebMvcConfigurer {
 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("
    @PostMapping("/upload")
    public String upload(
                         @RequestParam("username") String username,
                         @RequestPart("headerImg") MultipartFile headerImg,
                         @RequestPart("photos") MultipartFile[] photos) throws IOException {
 
        log.info("上传的信息:username={},headerImg={},photos={}",
                username,headerImg.getSize(),photos.length);
 
        if(!headerImg.isEmpty()){
            //保存到文件服务器,OSS服务器
            String originalFilename = headerImg.getOriginalFilename();
            headerImg.transferTo(new File("D:\Study\"+originalFilename));
        }
 
        if(photos.length > 0){
            for (MultipartFile photo : photos) {
                if(!photo.isEmpty()){
                    String originalFilename = photo.getOriginalFilename();
                    photo.transferTo(new File("D:\Study\"+originalFilename));
                }
            }
        }
        return "main";
    }
3)文件上传大小设置
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-request-size=100MB
5、异常处理

错误处理
1、默认规则

默认情况下,Spring Boot提供/error处理所有错误的映射
对于机器客户端,它将生成JSON响应,其中包含错误,HTTP状态和异常消息的详细信息。对于浏览器客户端,响应一个“ whitelabel”错误视图,以HTML格式呈现相同的数据

2、error/下的4xx,5xx页面会被自动解析

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031472.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号