Struts2 OGNL表达式之二

Struts 2的OGNL用法

OGNL是通常要结合Struts 2的标志一起使用,如<s:property value=”xxx”>。大家经常遇到的问题是#、%和$这三个符号的使用。下面会分别举例子给大家介绍。

先举一个简单例子,让大家想熟悉OGNL中最简单的应用。首先创建一个OgnlAction.java文件和Person.java文件,其代码如下:

OgnlAction.java代码
package com.gxa.edu.struts2.action.ch7;

public class OgnlAction {
	private Person person;

	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}
	
	public String execute() {
		person = new Person();
		person.setUsername("张三");
		person.setPassword("123");
		return "success";
	}
}


Person.java代码:
package com.gxa.edu.struts2.action.ch7;

public class Person {
	private String username;
	private String password;
	
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
}


接着创建struts-ch7.xml文件,在struts-ch7.xml文件中添加如下代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="ch7" extends="struts-default" namespace="/ch7">
		<action name="ognlAction"
class="com.gxa.edu.struts2.action.ch7.OgnlAction">
			<result name="success">/ch7/ognl.jsp</result>
		</action>
	</package>
</struts>


最后,创建ognl.jsp文件,其代码如下:
<%@ page language="java" pageEncoding="gb2312"%>
<%@ taglib prefix = "s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
  <title>My JSP 'ognl.jsp' starting page</title>
  </head>
  
  <body>
    用户名:<s:property value="person.username"/>
    密码:<s:property value="person.password"/>
  </body>
</html>


测试效果如下图:

Struts2 OGNL表达式之二

通过上面的代码和测试结果,可以看出如果要想在页面上显示用户名和密码,就只需利用ognl表达式和搭配Struts 2标签“<s:property.../>”就可以完成。而无需使用以前的JSP脚本来实现在页面上显示用户名和密码。

注意:请大家观察ognl.jsp文件的<s:property value="person.username"/>代码,其"person.username"就是一个简单的ognl表达式,它相当于代码person.getUsername()。同理,"person.password"它相当于代码person.getPassword()。

通过上面的代码和叙述,肯定有人还是会问到底Struts2 OGNL到底有什么作用?
值得注意的是,Struts2 OGNL主要是利用OGNL表达式进行求值。可以使用的场合大致如下:
(1)在JSP和其他表现层技术中,利用OGNL表达式和Struts 2标签库显示动态的数据。
(2)在与Struts 2有关的xml文件中可以使用OGNL表达式。例如:Struts 2的文件上传功能;struts.xml文件中的动态Action的配置等等。
(3)在Struts 2类型转换时候,通过利用OGNL表达式,将JSP页面上的数据提交给Action处理器。
(4)OGNL表达式与Struts 2标签库联用。

你可能感兴趣的:(java,apache,jsp,xml,struts)