1、一般情况下,如果数据要进行回显,则把数据放入对象栈中,页面上可以根据name属性的值进行回显
如果把数据放入到map栈中,则页面根据value的值进行回显,而且value=“%{ognl表达式}”
2、strtus2的模型驱动一般不会把其中的数据直接放入数据库,而是会赋值给一个相应的对象,
3、一个参数在连续的几个压面中用到,怎样传值
*在页面中设置隐藏域
*利用cookie
4、chain与rediection的区别
5、泛型:
*泛型是java中的类型
*java.lang.Type可以代表java中所有类型
*泛型是被参数化的类型
*类型----Class
*被参数化-Class类型可以传递参数
*泛型存在的意义
*多态的不足
实际的类型和需要的类型有可能不匹配,则会报类型转换异常
*泛型可以再编译的时候告诉Class类型,传递的参数是什么类型,
如果类型错误,则会在编译的时候报错
*泛型所表现的形式
*ArrayLisy<T>
*ArrayList是Class类型
*T是一个形式参数,在传实参的时候确定其的具体值
*在创建ArrayList对象的时候就确定实参
*表现:ArrayList <Person> a = new ArrayList<Person>();
*public Interface PersonDao<T>{}
*public class PersonDaoImpl implements PersonDao<Person>{}
*谁上面加的T谁给T传值
*public class Person<? extends Cooleaction>传递的参数只能是结合的子类
*泛型的用法
*T传过来是要用的
*public class Person<T>{}
那么这个T可以用在字段和方法(参数和返回值)上面
*getClassGenericSuperclass()代表子类获取父类的泛型类
6、页面显示多表的时候,该怎么去做更方便
*现在有一个用户表一个订单表,要求把用户和用户的订单全部显示出来?
*get(from user) ----- user.getOrders()效率低
*框架排错技巧 整合s-h s-s2
思路一定要清晰,逐步排错
*当你觉得一件事很不好做的时候吗,你坚持个30天,习惯了就不是难事了
*一个泛型的类不能实例化,所以不需要加注解
用户查询
*单表的查询
*页面显示的字段和数据库中字段的比太少
投影:select new Person_Select(pid,pname) from Person
当select语句仅仅选择查询持久化类的部分属性时,Hibernate返回的查询结果为关系数据,
而非持久化类对象。持久化对象会一直位于session的缓存中,而应用程序若不再引用关系数据,
就会释放所占的内存,可以利用这个原理提高查询的性能。
如:只需显示一个对象中的几个属性,则可考虑定义一个新的BEAN,保存查询数据,且操作上是面向对象的方式。
*页面显示的额字段和数据库中字段差不多
from Person查询
*多表查询(根据页面来决定)
*客户订单表
*在一个页面中显示客户信息,在客户信息中有一个超级链接,点击,在另外一个页面中显示该客户的订单信息
*后台:from Customer
*一对多集合默认的加载模式是懒加载,所以在执行上述hql语句的时候并没有加载订单信息,
*点击超级链接的时候
*后台:from Order o from o.customer.cid = ?
利用这样的hql语句就能够加载订单信息
*在一个页面中既显示客户信息又显示订单信息
*使用迫切左外连接:让结构变好一点,只发出一条sql语句
*要显示的数据来自于多张表怎么办?
*三张表(一对多,多对多)采用三张表迫切左外连接的方式来做
*若果页面上字段比数据库中少的多怎么办?
后台from User:字段太多
user.getDeparts();--部门
user.getPosts()--岗位
在不影响性能的情况下,新建一个javaBean
显示username,dname
select new UserView(u.username,d.dname) from User u inner join u.depart d
显示username,dname,pname
select new UserView (u.username,u.posts,d.dname)这里hibernate是不支持的,因为post是个集合
如果有很多用户,一个用户有多个岗位,既不是要查询很多次?
三张表关联:这样发出sql语句就减少(方案:抓取策略)
from User u left join fetch u.depart d left join fetch u.posts p
这里会有重复的查询出来:把查询的集合放在set里面
*页面提交问题:
一个页面提交的数据属于使用单个表:使用模型驱动
属于多张表的字段
注册员工
*利用模型驱动和属性驱动的模式
属性驱动的数据类型是怎么获取转换的呢?
V-String -> A->Long这个过程是怎么样获取转换的呢?
multiSelectIntercept拦截器
*vo-bo 如果工作繁琐的话
7、在session环境下进行对象的更新操作,需不需要进行update操作?
*增删改,无论你处不处于session环境中,你首先必须处于事务中,没有事务哪来的增删改
session是否关闭,update需要事务,反正我service调用完毕,事务关闭了,所以说需要进行
update操作,只有session环境是执行不了增删改查的
转载于:https://blog.51cto.com/andywuchuanlong/1311259