简述struts2的执行流程
1)客户端初始化一个指向Servlet容器请求;
2)这个请求经过一系列的过滤器(Filter)
3)接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否调用Action
4)如果AcctonMapper决定需要调用某个Action,FilterDispacher把请求交给ActionProxy
5)Action通过Cofiguration Manager询问框架的配置文件,找到action类
6)ActionProxy创建一个ActionInvocation的实例。
7)ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关的拦截器(Intercepter)的调用。
8)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到相应的返回结果。
9)相应的返回是通常我们在web.xml中配置的过滤器
10)如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocal ActionContext;
如果ActionContextClearUp不使用,将不会去清理sreadlocals。
2.struts2中默认包struts-default的作用
struts-default包是由struts内置的,它定义了struts2内部的众多的拦截器和Result类型,而Struts2很多核心的功能都是通过这些内置的拦截器实现,当包继承了struts-default包才能使用struts2为我们提供的这些功能。
3.在struts2中如何解决中文乱码的问题
struts.i18n.encoding=UTF-8 属性值只能解析POST提交下的乱码问题
4.请写出常用的result的type属性中有哪几种结果类型
dispacher:struts中默认的结果类型,把控制权转发给应用程序里的某个资源不能把控制权转发给一个外部资源,
redirect:把响应重定向到另一个资源(包括一个外部资源)
redirectAction:把响应重定向到另一个action
freemarker,chain,velocity,httpheader,xslt,stream,plainText
5.简单介绍Hibernate的三种检索策略
1)立即检索
优点:对应用程序完全透明,不管对象处于持久化状态,还是游离态,应用程序都可以方便的从一个对象导航到它关联的对象;
缺点:select语句太多;可能会加载应用程序不需要访问的对象白白浪费许多内存空间
2)延迟检索
优点:由应用程序决定需要加载哪些对象,可以避免可执行多余的select语句,以及加载应用程序不需要访问的对象。因此能提高检索性能,并且节省内存空间;
缺点:应用程序如果希望访问游离状态代理实例,必须保证它在持久化状态时已被初始化;
3)迫切左外连接检索
优点:对应用程序完全透明,不管对象处于持久化状态,还是游离态,应用程序都可以方便的从一个对象导航到它关联的对象;使用了外连接,select语句数目少;
缺点:可能会加载应用程序不需要访问的对象,白白浪费了许多内存空间;复杂的数据库表连接也会影响检索性能
6.在hibernate中进行多表查询,每表各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题?
1)按照Object[]数据取出数据,然后自己组bean
2)对每个表的bean写构造函数,比如表一查出f1,f2两个字段,那么有一个构造函数就是Bean(type f1,type2 f2),然后在hql里面就可以直接生成这个bean了。