使用正则替换jsp等前端引擎模板的动态数据

前言

以前在开发web项目时使用的是前后端不分离项目,那时候使用的是jsp,然后是后端返回ModelAndView,并且会绑定一些动态数据,类似于一个map数据,然后返回某个jsp的名称即可显示出渲染过的html内容。
那么如何用简单高效的方法来替换jsp模板中的动态数据呢,我们需要渲染的数据往往是采用这样的写法${name}

使用正则即可替换jsp中的内容,代码如下:

public class PatternDemo {

    public static void main(String[] args) {
        String html = "name:${name},age:${age}";
        // 正则匹配${xxx}的数据
        Pattern pattern = Pattern.compile("\\$\\{[^\\}]+\\}", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(html);
        Map<String,Object> map = new HashMap<String, Object>(){{
            put("name","jack");
            put("age",18);
        }};
        while(matcher.find()) {
            // 循环每个搜索到的数据
            String group = matcher.group();
            System.out.println(group);
            String group2 = group.replaceAll("\\$\\{|\\}","");
            if(map.containsKey(group2)) {
                html = html.replaceAll("\\$\\{"+group2+"\\}",String.valueOf(map.get(group2)));
            }
        }
        System.out.println(html);//输出name:jack,age:18
    }

}

由此引发的思考后得出结论,mvc使用模板引擎正是使用这样的方式,mvc拿到返回的页面名称,然后加载模板引擎内容拿到html代码,再使用后端绑定的Map数据,进行替换后再使用输出流输到到浏览器上即可渲染。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值