1.解决用户直接访问jsp的问题:
将jsp页面放入WEB-INF下,应为WEB-INF目录中的内容不能直接访问。只能通过转发获得。
2.javabean中的属性和成员变量。
属性对应于javabean中getter/setter中的去掉get和set的单词的首字母小写的形式。成员变量是javabean中声明的私有变量。通常属性和成员变量同名。
3.EL表达式解析为java代码
${page.pageInfo} ===>out.println(page.getPageInfo());
EL表达式装换为java代码的时候使用的是getPageInfo方法。即使用的是javabean的属性,而不是成员变量.
4.EL表达式的作用
EL表达式将数据从四个范围(pageContext,request,session,application)中取出来显示或计算
EL表达式解决了html代码和java代码混杂的问题,让jsp页面不再有java代码。
5.Ognl的优点
可以方便的操作对象的属性,是页面更简洁。
支持运算符,比普通标记具有更强的功能
支持对象方法调用。
支持类静态方法的调用。
支持赋值操作和表达式串联。
访问OGNL上下文和ActionContext
可以操纵结合对象
6.OGNL表达式
访问OGNL上下文和ActionContext,#相当于ActionContext.getContext();
'%':在标记的属性为字符串时,计算OGNL表达式的值
'$':有两个主要用途,用于国际化和应用OGNL表达式。
7.OGNL使用
访问基本数据类型:id
访问字符串类型:name
访问数组和List:city[0]
访问map:map.key map["key"]
调用静态方法:@报名.类名@静态方法名();
调用普通方法:对象.方法名();
创建map,list:{1,2,3,4,5,6} map #{key1:value1,key2:value2}
关联属性
emps[1].name
投影:投影就是在已有的集合上创建新集合的过程
emps.{name} 获取emps集合中的所有对象的name属性
过滤:
emps.{?#this.salary>2000}获取emps集合中的对象中薪水大于2000的所有emp
在result中使用OGNL表达式
<result>
/WEB-INF/jsp/test.jsp?id=${user.userId}
</result>
8.OGNL引擎的基本结构
OGNL涉及的三个对象:OGNL引擎,root对象,context对象
9.ValueStack
xwork将ognl进行了扩展,struts2将这些扩展封装成一个新的对象:ValueStack。
10.valuestack核心概念
在struts2请求到来时,首先会创建一个ValueStack,然后将当前的action放入栈顶。
struts2会把ValueStack对象放入request中,属性为struts.valueStack,实例化的对象为(OgnlValueStack)
所以标记库会访问到ValueStack。
11.从ValueStack取值
<s:properties />默认从ValueStack栈顶取值,我们可以指定Value属性
12.struts如何支持EL表达式
struts通过StrutsRequestWrapper重写了getAttribute方法
13.我们使用struts的jsp页面中的request和response的类型(注意:request和response不是我们的HttpServletRequest和response)
org.apache.struts2.dispatcher.StrutsRequestWrapper,此类实现了HttpSevletRequest接口,并且有一个HttpServletRequest对象
org.apache.catalina.connector.ResponseFacade
14.struts2核心
每次请求都会创建一个action,因为每次请求都会创建一个action,所以不用担心线程安全问题。
Action对象将置于ValueStack的栈顶
15.在action中访问session和application
a.使用ActionContext访问session
ActionContext context=ActionContext.getContext();
Map session =context.getSession();
Map application=context.getApplication();
b.通过实现SessionAware接口
类似的还有ServletRequestAware
ServletResponseAware
ServletContextAware
将jsp页面放入WEB-INF下,应为WEB-INF目录中的内容不能直接访问。只能通过转发获得。
2.javabean中的属性和成员变量。
属性对应于javabean中getter/setter中的去掉get和set的单词的首字母小写的形式。成员变量是javabean中声明的私有变量。通常属性和成员变量同名。
3.EL表达式解析为java代码
${page.pageInfo} ===>out.println(page.getPageInfo());
EL表达式装换为java代码的时候使用的是getPageInfo方法。即使用的是javabean的属性,而不是成员变量.
4.EL表达式的作用
EL表达式将数据从四个范围(pageContext,request,session,application)中取出来显示或计算
EL表达式解决了html代码和java代码混杂的问题,让jsp页面不再有java代码。
5.Ognl的优点
可以方便的操作对象的属性,是页面更简洁。
支持运算符,比普通标记具有更强的功能
支持对象方法调用。
支持类静态方法的调用。
支持赋值操作和表达式串联。
访问OGNL上下文和ActionContext
可以操纵结合对象
6.OGNL表达式
访问OGNL上下文和ActionContext,#相当于ActionContext.getContext();
'%':在标记的属性为字符串时,计算OGNL表达式的值
'$':有两个主要用途,用于国际化和应用OGNL表达式。
7.OGNL使用
访问基本数据类型:id
访问字符串类型:name
访问数组和List:city[0]
访问map:map.key map["key"]
调用静态方法:@报名.类名@静态方法名();
调用普通方法:对象.方法名();
创建map,list:{1,2,3,4,5,6} map #{key1:value1,key2:value2}
关联属性
emps[1].name
投影:投影就是在已有的集合上创建新集合的过程
emps.{name} 获取emps集合中的所有对象的name属性
过滤:
emps.{?#this.salary>2000}获取emps集合中的对象中薪水大于2000的所有emp
在result中使用OGNL表达式
<result>
/WEB-INF/jsp/test.jsp?id=${user.userId}
</result>
8.OGNL引擎的基本结构
OGNL涉及的三个对象:OGNL引擎,root对象,context对象
9.ValueStack
xwork将ognl进行了扩展,struts2将这些扩展封装成一个新的对象:ValueStack。
10.valuestack核心概念
在struts2请求到来时,首先会创建一个ValueStack,然后将当前的action放入栈顶。
struts2会把ValueStack对象放入request中,属性为struts.valueStack,实例化的对象为(OgnlValueStack)
所以标记库会访问到ValueStack。
11.从ValueStack取值
<s:properties />默认从ValueStack栈顶取值,我们可以指定Value属性
12.struts如何支持EL表达式
struts通过StrutsRequestWrapper重写了getAttribute方法
13.我们使用struts的jsp页面中的request和response的类型(注意:request和response不是我们的HttpServletRequest和response)
org.apache.struts2.dispatcher.StrutsRequestWrapper,此类实现了HttpSevletRequest接口,并且有一个HttpServletRequest对象
org.apache.catalina.connector.ResponseFacade
14.struts2核心
每次请求都会创建一个action,因为每次请求都会创建一个action,所以不用担心线程安全问题。
Action对象将置于ValueStack的栈顶
15.在action中访问session和application
a.使用ActionContext访问session
ActionContext context=ActionContext.getContext();
Map session =context.getSession();
Map application=context.getApplication();
b.通过实现SessionAware接口
类似的还有ServletRequestAware
ServletResponseAware
ServletContextAware