struts2.3.4 Action传递参数

Struts2中Action接收参数的方法主要有以下三种:

1.使用Action的属性接收参数 :
    a.定义:在Action类中定义属性,创建get和set方法; 
    b.接收:通过属性接收参数,如:userName(可以定义多个属性); 
    c.发送:使用属性名传递参数,如:user1!add?userName=jim;

2.使用DomainModel接收参数:
    a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法;
    b.接收:通过对象的属性接收参数,如:user.getUserName();
    c.发送:使用对象的属性传递参数,如:user2!add?user.userName=mike;
3.使用ModelDriven接收参数(现在用的比较多的方式):
    a.定义:Action实现ModelDriven泛型接口,定义Model类的对象(必须new),通过getModel方法返回该对象;
    b.接收:通过对象的属性接收参数,如:user.getUserName();
    c.发送:直接使用属性名传递参数,如:user2!add?userName=tom

今天在写东西时候发现在使用第一种方法的时候发送的是html中表单的数据信息,在action中只需要定义属性和相应的get,set方法就行了。这让我感到很诧异。查了post,和get的机理以后才发现。原来是这样的。
1:get是从服务器上获取数据,post是向服务器传送数据。

2:get是把参数数据队列加到提交表单action属性所指的url种,值和表单内各个字段一一对应,在url中可以看到,post是通过http post机制,将表单内各个字段与其内容放在html header里面传送到action属性所指的url地址中。用户看不到和这个过程。

而参数传递的实质是什么呢?为什么能够传递过去呢,发现原来是使用了ognl表达式了。找了一点资料和大家分享一下:

因为Struts2完成参数传递处理工作的基础是OGNL和ValueStack。而在这个过程中,我也把Struts2所要做的工作大致归纳为两个方面:

1. 对OGNL操作进行封装,完成OGNL表达式所表示的值到Java对象的值传递机制

2. 在参数传递的过程中,做恰当的类型转化,保证页面上的字符串能够转化成各式各样的Java对象

具体ognl的详细传递过程,我会在明天给大家分享!

发布了18 篇原创文章 · 获赞 2 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章