📜  Struts 2 OGNL教程(1)

📅  最后修改于: 2023-12-03 15:20:22.029000             🧑  作者: Mango

Struts 2 OGNL教程

什么是OGNL

OGNL(Object-Graph Navigation Language)是一种表达式语言,可用于方便地访问和操作Java对象的属性。在Struts2中,OGNL被广泛用于获取和设置Action对象中的属性,以及在JSP页面中呈现Action属性。

OGNL语法

OGNL的语法类似于Java语言,但更加简洁。以下是一些常用的OGNL语法:

  • 取属性值:${对象.属性}。例如${person.name}将返回对象person的名字属性。
  • 设置属性值:${对象.属性=值}。例如${person.age=18}将设置对象person的年龄属性为18。
  • 调用方法:${对象.方法(参数)}。例如${person.sayHello("World")}将调用对象person的sayHello方法,并传入字符串参数"World"。
  • 获得数组元素:${数组[索引]}。例如${array[0]}将返回数组array的第一个元素。
  • 获得Map值:${map['键']}。例如${map['name']}将返回键为"name"的map值。
Struts 2中使用OGNL

在Struts 2中,OGNL不需要单独安装,已经默认包含在Struts 2中。以下是在Struts 2中使用OGNL的例子:

1. 在Action中使用OGNL获取参数

public class LoginAction extends ActionSupport {
    private String username;
    private String password;
    
    // getters and setters
    
    @Override
    public String execute() throws Exception {
        if (username.equals("admin") && password.equals("123456")) {
            return SUCCESS;
        } else {
            return ERROR;
        }
    }
}

在JSP页面中,可以通过OGNL获得Action中的属性值:

<s:form action="login">
    <s:textfield name="username" label="Username" />
    <s:password name="password" label="Password" />
    <s:submit value="Login" />
</s:form>

以上代码中,<s:textfield><s:password> 标签将创建用于输入用户名和密码的文本框,而 <s:submit> 标签将提交表单并调用Action的execute方法。由于Action已经通过getter和setter方法定义了属性username和password,即可通过OGNL将这些参数传递给Action。

2. 在JSP页面中使用OGNL显示Action属性值

public class PersonAction extends ActionSupport {
    private String name;
    private int age;
    
    // getters and setters
    
    @Override
    public String execute() throws Exception {
        return SUCCESS;
    }
}

在JSP页面中,可以通过OGNL获得Action中的属性值并显示出来:

<s:property value="name" />
<s:property value="age" />

以上代码中,<s:property> 标签将显示Action中的属性,例如name和age。

结论

OGNL是一个非常方便的表达式语言,可用于访问和操作Java对象的属性。在Struts 2中,OGNL被广泛使用,既可以在Action中获取和设置属性,也可以在JSP页面中显示Action属性。熟练掌握OGNL语法和应用,将帮助程序员更加快速地开发出高效的Web应用程序。