struts2的第二天

又是忙碌的一天~对struts2有了一定了解,今天有点头疼...于是看了些简单的东西,总结了一下struts1与struts2的区别(主要是struts2的一些优势):

1、struts2的pojo类,不必像struts1一样要继承Action

2、对servlet的依赖性:struts1的依赖性较强;struts2与servlet则彻底分开,不依赖

3、封装请求参数:struts2合并了action和actionform,方便了一些

4、测试性:struts1的测试非常痛苦,必须用到jsp;而struts2则方便了许多,可以单独进行测试而不必用到jsp

其他一些比较:

类型转化问题:struts1的属性类型基本都是String等简单类型;struts2支持复杂类型,如集合,自定义的类型等。

表达式语言:struts1用的是EL;struts2为OGNL,明显强于简单的EL

线程模式:struts1为单线程;struts2则是一个request分配一个action。

生命周期:(不懂,就不解释了)

struts2有拦截器,多视图等

struts2是基于webwork2的,其实与struts1并无多大关系,个人认为两者除了都是基于MVC和名字相同,其他的都不一样...


 

今天的第二个收获OGNL(对象图导航语言)ognl.Ognl类

getvalue(X,Y)X为ognl表达式;Y为root对象(Object类型)

getvalue(X,Y,Z)X为ognl表达式;Y为Context(Map);Z为root对象(Object类型)

例子:

#username :用getvalue(X,Y)检索是否有username属性;

                     

#user.name:用getvalue(X,Y)首先查找是否包含user,在检索user中是否有name属性

                      用getvalue(X,Y,Z)则在Map(key,value)中检索“key=user,value=name”

 

重要接口:ValueStack,实现类:OgnlValueStack

标签:iterator value="book" id="book"

property value="#book.name"

date name="#book.date" format="yyyy-MM-dd"

(其中name对应struts.xml中的name)

book.{?#this.price>100}<!--显示price>100的book--!>

 

写了个显示图书信息的练习,关键代码如下:

 

(list.jsp)

<%page import="com.opensymphony.xwork2.util.*"%>

<%@taglib uri="/struts-tags" prefix="s"%>

ValueStack vs=(ValueStack)request.getAttribute("struts","value Stack");

List list=(List)vs.findvalue("book");

"book!delete.action?id=<%=book.getId()%>"

 

 

struts2代码调试的时候建议每次重新启动tomcat服务器,并重新加载项目到tomcat,否则容易出异常。

 

头疼啊~睡了。。。

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值