1.问:Struts中有ActionFrom还需要有实体类吗?如果有,它们有什么区别?
答:需要,form是专门对jsp页面的标签订制的,它是对你还可以在form 中对标签的值验证。
javabean功能简单,不能取消javabean。
想想如果在数据连接层把值放到form中,
再从action中取form值放到form里传给jsp页面,
这不是乱套了吗。应该说这是一种规范
Actionform是专门针对你页面的表单元素而制定的
Entity 是专门针对你数据库而制定的。
理解好这两点
2.问:struts2.0框架中的action类实现ModelDriven的作用是什么?
答:实现了ModelDriven就必须实现getModel这个方法,该方法返回的是你的ModelDrivern泛型中设定的实体类。其实是为了实现代码的重用,不要再定义一次你在数据访问层定义的属性了,直接用那个类就行了。不过有时候也不是很需要这个东西,比如只有一两个表单域的时候
3.问:struts ActionForm是单例吗? 什么时候被创建,什么时候被销毁?
答:不是单例,只有两种request,session,默认为session
1,tomcat 启动 ActionServlet被创建 ,初始化信息,配置
入内存
2,用户登录.jsp 提交 action,ActionServlet(实质内部ActionServlet借助一个好像名字叫做RequestProcesser的类)根据驻留内存的映射信息,创建ActionForm对象,并且把来自jsp的字段值填充ActionForm对象,然后把此ActionForm作为参数传递给对应Action的excute方法
3,excute方法处理,从ActionForm中提取表单值,业务逻辑处理
所以,如果默认session范围,ActionForm一直伴随着此访问者(和session一样的特点:伴随,且和访问者1vs1)
如果request范围 ,到第三步 excute处理完毕后,ActionForm就被干掉了
总之 我觉得 从两个角度来理解:
一:主动 ActionServlet,主动的去把数据填充到ActionForm,主动的把ActionForm交给Action
二:被动:ActionForm等人来填充 ,Action等人来调用