struts2基础知识整理

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值