JSTL的后台使用总结

1.首先定义标签函数集合:

Map<String, Method> fns = new HashMap<String, Method>();   (1)

将表达式中的方法 放在定义的fns 中,定义的方法确定是静态的,格式如下:

public static String functionName(boolean success, String input0, String input1) {
    return success == true ? input0 : input1;
}

2.实现VariableResolver接口,该接口是jstl 定义的,供解析EL表达式使用。demo

private class MapVariableResolver implements VariableResolver {
    private Map<String, Object> map;

public MapVariableResolver(MethodInvocation mi, Object result, HttpServletRequest request) {
        Object[] args = mi.getArguments();
        map = new LinkedHashMap<String, Object>(args.length + 2);
        for (int i = 0; i < args.length; i++) {
            map.put("username", args[i]);
            if ((!map.containsKey("ctx"))) {
                map.put("ctx", new LogContextImpl(request));
            }
        }
        Map<String, Boolean> resultMap = new HashMap<>();
        if (result != null && result instanceof UserDetails) {
            resultMap.put("success", true);
        } else {
            resultMap.put("success", false);
        }
        map.put("ret", resultMap);
    }

@Override
    public Object resolveVariable(String arg0, Object arg1) throws ELException {
        if (map.containsKey(arg0)) {
            return map.get(arg0);
        }
        return "[no named(" + arg0 + ") value]";
    }
}

3.配置ELEvaluator ,进行解析。

使用如下:

MapVariableResolver vr = new MapVariableResolver(mi, result, request);
        // ELEvaluator 用来 evaluate
        ELEvaluator eval = new ELEvaluator(vr);
        // 允许包含函数

System.setProperty("javax.servlet.jsp.functions.allowed", "true");

注意:msg 要转义

msg = msg.replaceAll("‘", "\"");
                // 执行evaluate,String.class表示eval返回的类型,fns是函数映射map,fn是函数前缀
                Object obj = eval.evaluate(msg, null, String.class, fns, "fn");

到处jstl后台使用介绍完毕。

效果如下:表达式: 输入:${username}从${ctx.ip}登录, 登录${if(ret.success,‘成功‘,‘失败‘)}

Map={username =xxx,ctx={ip=127.0.0.1},ret={success=true}};

输出:xxx从127.0.0.1登录,登录成功

时间: 2024-10-07 03:57:30

JSTL的后台使用总结的相关文章

JSTL根据后台传输list大小动态创建表格

最近,项目中需要写一个根据后台传入List类型对象的大小来动态创建表格,并在JSP页面中将信息显示出来,并且对于一些特殊信息颜色飘红表示. 首先看一下List对象存储的内容,这个项目需要检测系统中一些服务器的连接情况,每个应用可能关联多个服务器,服务器的数量不同,所以使用List来存储信息,List中的对象是一个长度为2的String数组.这个String数组的第一个位置存放需要检测服务器的ip:port,第二个位置存放是检测结果,结果又两种,连接成功!和连接失败! 例如下面一个String数组

Java SSH 项目总结——Ajax+Json 级联菜单

前言 前台JSP页面需要实现下拉菜单的级联效果,实现方式如题,采用Ajax+Json,分享下实现过程. 正题 先看下效果图: 前台 <tr> <td> 注册地址 <!-- registeredAddressSection --> </td> <td> <select class="combox" id="zhuceid" name="zhuceid" onchange="

Web开发中前台与后台技术小结--关于EL表达式,JSTL,eval()函数

在我们日常Web开发中,常常用到EL表达式,JSTL标签,还有可能用到JavaScript中的eval().下面就这样技术和函数小小说明一下. EL(Expression Language),全称表达式语言,既然是开发语言,那么就像Java等语言一样是用来写语句的,通常是用在JSP页面中,我们为了获取JSP提供的内置对象的属性值, 我们通常会使用到EL表达式,比如开发中常见的一个需求就是获取项目的根目录,如果项目的名值变化了,我们在指定路径时,如果把项目的根目录用一个变量来表示的话,那么就不 需

Spring 使用JSTL标签显示后台数据

1. 先上项目结构图,其中config包下的代码文件参见前一篇博客   http://www.cnblogs.com/njust-ycc/p/6123505.html 引包: 2. 主要代码 (1)User类 package web.entity; /** *@author 作者 Yu chenchen *@version 创建时间:2016年12月2日 下午4:53:00 *类说明: */ /** * @author YU * */ public class User { public Str

jsp页面中JSTL/EL标签引用java后台静态static字段的方法总结

为什么使用该功能? 项目中的每个页面都包含产品名称.Logo.版本等信息,我希望修改一处,其它所有的全部跟着变. 有同学会说那就都引用一个页面""就Ok了:但是我希望这些信息都是可以通过后台代码修改的,修改后保存到数据库和一个静态类中:其实后台直接读写这个引用 的页面或者保存到属性文件(properties)中也是可以的,我觉得还是存到数据库中好一些. 还有同学会说直接使用"<%=com.xunge.base.constant.PlatInfo.title%>&q

java 企业网站源码 后台 springmvc SSM 前台 静态化 代码生成器

java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 点击:获取地址 QQ 313596790 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的html,所以访问速度快,轻便,对服务器负担小 3.网站前端采用主流的相应式布局,支持PC.平板.手机浏览器访问 4.springmvc +spring4.2.5+ mybaits3.3  SSM 普通java web(非maven) 

jstl foreach标签格式化date,string类型数据

本文要说jsp中date类型格式化和string类型分割处理 首先说date数据格式化 1.jsp中给date类型数据格式化首先需要引入 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 如果后台带过来的数据是date类型,那就好办了,只要像下面这样用fmt标签就可以了,pattern定义时间的格式 <c:forEach items="${list}&quo

Hibernate学习-在线书城后台管理系统的设计

写在前面:小编经历了昨天一晚上加今天一整天的“不吃不喝(夸张点…总之就是把时间全分享给TA了)”终于把程序的问题全部解决了,小编现在的心情十分的开森,开森,开森,Happy,话不多说,直接进入正题: ------------------------------------------------------------我是一条帅气的分割线--------------------------------------------------- 在线书城后台管理设计: ----------------

JSP中利用JSTL标签对日期格式化

数据库:Mysql 开发语言:JAVA 页面类型:JSP 对Mysql中的日期类型格式化,在JSP中,如何办呢,很多人说在JAVA后台去日期格式化,无奈了,于是找到了比较靠谱的答案 需要先引入JSTL库 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> 其次对JSP输出的日期进行格式化 <span>发布时间:<fmt:formatDate value=&qu