博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2学习笔记--OGNL表达式1
阅读量:6454 次
发布时间:2019-06-23

本文共 2412 字,大约阅读时间需要 8 分钟。

  struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点:

    1. 能够访问对象的方法,如list.size();
    2. 能够访问静态属性和静态方法,只需要在类名前,方法前加上@,如@Math@PI;
    3. 支持赋值操作.如赋值#value=5;
    4. 能够访问OGNL上下文和ActionContext;
    5. 能操作集合类对象.
  • 使用OGNL:
    public class Test {    public static void main(String[] args) throws OgnlException {        //原则:数据分为两类--常用的和不常用的--常用的数据直接取,不常用的数据加#获取        Map
    map=new HashMap
    (); map.put("name", "zhangsan"); map.put("age", 22); User user=new User(); user.setName("lisi"); Object object = Ognl.getValue("name", map, user); System.out.println(object);//输出结果为lisi Object object1 = Ognl.getValue("#name", map, user); System.out.println(object1);//输出结果为zhangSan }}

    在jsp页面中使用struts2标签库:

    1:导入标签库    <%@ taglib prefix="s" uri="/struts-tags" %>

    注意:要使用struts2标签,那么要通过struts2过滤器来启用.如果过滤器的配置为<url-pattern>为*.action时,是不能直接通过url访问jsp页面的,需要通过action跳转.如果配置为<url-pattern>为/*时,是可以直接访问jsp页面的.struts2不推荐直接访问jsp页面,为了安全,推荐使用action来控制.

  下面是一个简单登录案例的LoginAction的代码(实体类user有两个属性name,pwd,代码省略,login.jsp代码也省略):

package com.wang.action;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.wang.entity.User;public class LoginAction extends ActionSupport{    private User user;    public String login(){        System.out.println(user.getName()+":::"+user.getPwd());        if("wang".equals(user.getName())&&"123".equals(user.getPwd())){            ActionContext.getContext().getSession().put("user", user.getName());            return SUCCESS;        }else{            return LOGIN;        }            }        public String exit(){        ActionContext.getContext().getSession().remove("user");        System.out.println("tuichu");        return SUCCESS;    }    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    }

  当登录成功时会跳转到succ.jsp页面,假设我们要在该页面获取到登录的用户名,并在浏览器显示出来,succ.jsp代码应该这样写(只保留body部分核心代码):

    

欢迎用户${sessionScope.user }---------------退出

欢迎用户
---------------

欢迎用户

这三种方式都能把用户名wang给显示出来,第一种使用的el表达式,这里不再多说,第二种取得是user对象里的一个属性,而User本身是LoginAction的一个属性,用ognl表达式取值时可以直接取到,但我们希望取得是我们存入session里的user,当在session,request,application域中取数据时,应当在在前面加上#,如上.上述第三种方式相当于:session.getAttribute("user");

 

结论:使用ognl表达式访问action的属性时,可以直接访问.访问actionContext中的数据时需要加#;

转载地址:http://lhyzo.baihongyu.com/

你可能感兴趣的文章
再次更新
查看>>
微服务学习笔记二:Eureka服务注册发现
查看>>
C# 获取编码
查看>>
mysql的数据类型int、bigint、smallint 和 tinyint取值范围
查看>>
利用网易获取所有股票数据
查看>>
移动铁通宽带上网设置教程
查看>>
Python算法(含源代码下载)
查看>>
利用Windows自带的Certutil查看文件MD5
查看>>
通过原生js添加div和css
查看>>
简单的导出表格和将表格下载到桌面上。
查看>>
《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立
查看>>
JAVA - 大数类详解
查看>>
查询指定名称的文件
查看>>
Python 嵌套列表解析
查看>>
[GXOI/GZOI2019]旧词——树链剖分+线段树
查看>>
anroid 广播
查看>>
AJAX POST&跨域 解决方案 - CORS
查看>>
关于最小生成树中的kruskal算法中判断两个点是否在同一个连通分量的方法总结...
查看>>
开篇,博客的申请理由
查看>>
Servlet 技术全总结 (已完成,不定期增加内容)
查看>>