1.练习问题
1)Action中利用DAO可以获取出数据库数据,但是JSP获取不到.
原因:1.检查Action属性及getter方法
2.检查struts.xml中
3.检查execute中接收集合的变量是否为局部变量
2) 工程启动出现错误
由于web.xml或struts.xml配置有误.可以根据异常信息寻找.
2.补充问题
1)Action属性及setter和getter方法的问题
Action属性在接收和传出数据时,setter和getter方法是关键.
a.接收时,表单组件name="user" ,action要有setUser方法才可以接收.
b.传出数据时,JSP使用${user},action要有getUser方法对应才可以获取.
public class Action{
private String name;//成员变量name
//有一个属性,名字是user
public String getUser(){
return name;
}
public void setUser(String user){
name = user;
}
}
3.OGNL技术
Object Graphics Navigation Language(对象图导航语言)
OGNL是一种表达式语言技术,封装在ognl.jar开发包中.
可以很方便的对对象的属性进行获取和设置.
1)什么是EL,有什么用
属于表达式语言,可以访pageContext,request,session,application存储范围的数据.可以简化JSP程序.
2)OGNL表达式,有什么用
属于表达式语言,需要ognl.jar提供支持.可以完成以下操作
a.可以访问对象属性(获取和设置)
基本类型属性:"id","name"
数组类型属性:"love[0]","love[1]"
List类型属性:"city[0]","city[1]"
Map类型属性:"books.key","books['key']"
b.可以访问对象的方法
"city.size()","name.toUpperCase()"
c.可以访问静态常量和方法
"@java.lang.Math@PI"
d.可以访问集合中的数据,进行集合过滤等操作
"persons.{?#this.age>20}" : 返回persons集合中,满足age>20的所有元素.
?指的是返回所有满足条件的元素
^指的是返回第一满足条件的元素
$指的是最后一个满足条件的元素
e.支持Java中的运算符和表达式
"\"name\"+name","id+10"
f.定义一个List和Map类型的常量
List常量:"{1,2,3}"
Map常量:"#{'age':20,'name':\"tom\"}"
3)OGNL标准结构
OGNL有3个重要组成部分,一个OGNL引擎,一个是root对象,另一个是context对象.
访问context区域需要使用"#key"格式.
没有"#",例如"name",意思是访问root对象的name属性
4.OGNL技术在Struts2中应用
1)OGNL在xwork中进行了改造
xwork将OGNL中的root对象进行了改造,将其改造成了一个栈结构,类型是CompountRoot继承自ArrayList.在访问root属性时,从栈顶对象向下依次查找,找到属性值返回.
2)ValueStack结构
ValueStack是Struts2中非常重要的数据对象,当客户发送一个请求后,控制器会根据当前请求创建一个ValueStack,并将请求处理相关的数据进行填充.
root栈:存放当前请求对应的Action对象(栈顶)
context(Map):存放request,session,application,parameters等信息
3)JSP获取业务数据,需要使用Struts标签+OGNL表达式技术组合
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 | |
全国职称计算机考试速成过关系列套装:W .. 定价:¥133 优惠价:¥133.0 更多书籍 |