java的ognl写文件_java struts2入门学习--OGNL语言基本用法

一.知识点学习

1.struts2中包含以下6种对象,requestMap,sessionMap,applicationMap,paramtersMap,attr,valueStack;

daab9cfb54a7828d768d61fe0edb0a08.png

1)requestMap用来存放包含当前HttpServletRequest的属性(attribute)的Map,简单来说就是request域中的值;

2)sessionMap用来存放包含当前HttpSession的属性(attribute)的Map

3)applicationMap用来存放包含当前应用的ServletContext的属性(attribute)的Map

4)paramtersMap包含当前HTTP请求参数的Map

5)attr,只是用来取值,用于按request>session>application顺序访问其属性(attribute)

6)valueStack值栈是Action的数据中心,关于Action中的所有Value都是存放在valueStack中.

2.OGNL几种常见的符号用法

会在以下几个域对象中依次查询

[pageContext对象]===>requestMap对象===>valueStack对象===>sessionMap对象===>applicationMap对象===>空白字符串

注意:pageContext对象不是Struts2的数据中心之一.

3.#用法:

1) 作用于struts2的域对象,而不是普通域对象

2)作用于JavaBean对象

3)<===>作用于普通字符串

二.实例

1.源码

OgnlAction.java

packageognl;importorg.apache.struts2.ServletActionContext;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionSupport;public class OgnlAction extendsActionSupport {private static final long serialVersionUID = -842453764814706964L;public String execute() throwsException {//放置在requestMap对象中 1

ServletActionContext.getRequest().setAttribute("username", "request_username");//放置在SessionMap对象中3

ActionContext.getContext().getSession().put("username", "session_username");//放置在ApplicationMap对象中

ServletActionContext.getServletContext().setAttribute("username", "application_username");//放置在ValueStack对象中2

ActionContext.getContext().getValueStack().set("username", "valuestack_username");;returnSUCCESS;

}

}

User.java

packageognl;/*** @ClassName: User

* @Description: 用户

*@author: amosli

* @email:amosli@infomorrow.com

* @date Feb 17, 2014 11:00:11 PM*/

//JavaBean对象

public classUser {private Integer id;//编号

private String name;//姓名

private Integer age;//年龄

publicUser() {

}publicUser(Integer id, String name, Integer age) {super();this.id =id;this.name =name;this.age =age;

}publicInteger getId() {returnid;

}public voidsetId(Integer id) {this.id =id;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}publicInteger getAge() {returnage;

}public voidsetAge(Integer age) {this.age =age;

}

}

struts.xml

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

ognl_struts.xml

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

/WEB-INF/ognl_success.jsp

ognl_2.jsp

Insert title here

userList = new ArrayList();

userList.add(new User(1,"张三",20));

userList.add(new User(2,"李四",25));

userList.add(new User(3,"amos",30));

pageContext.setAttribute("userList", userList);%>


编号姓名年龄

编号姓名年龄

ognl_success.jsp

Insert title here
sessionMap对象:
applicationMap对象:
valueStack对象:
parametersMap对象:
attr对象:

2.效果图

1).验证上面所说的6个对象

f73e62cdf7323594a620731cb0dc0006.png

2)#的用法

bd438b1bc6e08f1b91a6a9cf2286fac9.png

3.源码分析

1)struts.xml在程序运行时就被加载到内存中,struts.xml加载了config/ognl_struts.xml.

2)config/ognl_struts.xml中配置了ognl.OgnlAction,如果成功那么页面转发到/WEB-INF/ognl_success.jsp

3)OgnlAction.java中为除了attr外的5种对象赋值.

4)WEB-INF/ognl_success.jsp中取出OgnlAction中的赋值.

其中取值的方式,主要用到#的第一种用法.

,主要可以用来测试attr取值的顺序.

5)User.java定义了一个JavaBean对象,包含三个字段id,name,age;

6)ognl_2.jsp,新建list,将定义的JavaBean对象的值赋给userList,并将值传递到当前页面pageContext中.

其中使用#attr来获取pageContext中的内容.然后使用标签进行遍历,并将值存放到user中.

然后再通过#user.id来取出变量user中id的值,这里也表现了JavaBean对象中非值栈中的value,一定要记得加上#

取单个值的格式如下,#attr.userList.{name}只取userList中的name这一列.

针对不JavaBean对象,加不加#效果是一样的.

4.本文源码链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值