软件开发架构平台技术-OGNL访问web容器对象中值
软件开发架构平台技术----OGNL访问web容器对象中值
OGNL访问web容器对象中值
虽然将我们要在向前台传送数据的时候将数据作为Action的属性利用Struts2提供的值栈访问虽然很方面,但是这样的话整个Action类的代码会非常臃肿,所以 有时候我们并不想把我们所有的值作为Action的属性来访问,我们有时候还是比较习惯将值在session中request中,当然把这些值放在这些对象中使用EL表达式确实很方便读取,但是毕竟整个表示层使用的是struts2表示层框架,所以还是使用OGNL比较好。
现在我们介绍怎么用这种方式来获取web容器对象中的值,首先这是一个User类
public class User { private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
然后编写Action代码,将相应的值存入到session中
public class LoginAction extends ActionSupport { public String execute() { User user = new User(); user.setName("zdx"); user.setPassword("123"); //得到session对象 ActionContext context = ActionContext.getContext(); Map session = context.getSession(); //放入user对象 session.put("accountBean", user); //放入String字符串 session.put("testString", "this is a String!!"); return SUCCESS; } }
然后编写jsp页面使用OGNL表达式获取session中的值
<!-- 获得session中的字符串 --> <s:label>字符串:</s:label> <s:property value="#session.testString" /> <br> <!-- 获得session中的对象中的值 --> <s:label>user对象</s:label> <br> 使用s:property标签输出name: <s:property value="%{#session.accountBean.getName()}" /> <br> 使用s:property标签输出password: <s:property value="#session.accountBean.password" /> <br> <s:textfield value="%{#session.accountBean.password}"></s:textfield> <s:textfield value="%{#session.accountBean.getPassword()}"></s:textfield>
然后在浏览器中访问