Struts,Spring,Hibernate面试题总结(2)

2019-08-20 19:27

操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、

4. 说下Hibernate的缓存机制

1. 一级缓存session缓存属于应用事物级缓存 不同session之间不能共享数据,默认开启

2. 二级缓存:sessionFactory 缓存,输入数据库级别缓存,多个session共享的数据,默认是关闭的 a) 应用及缓存 b) 分布式缓存

条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非关键数据

c) 第三方缓存的实现,可以直接使用 ehcache/jbosscache/oscache/swarmcache hibernate3.3.2之前,ehcache已经集成

5. Hibernate的查询方式

Sql、Criteria,object comptosition

Hql:

1、 属性查询

2、 参数查询、命名参数查询

3、 关联查询

4、 分页查询

5、 统计函数

6、 Hibernate有哪几种查询数据的方式

(1)导航对象图查询 (2)OID查询 (3)HQL (4)QBC

(5)本地SQL

7. 如何优化Hibernate?

1、使用双向一对多关联,不使用单向一对多 2、灵活使用单向一对多关联 3、不用一对一,用多对一取代 4、配置对象缓存,不使用集合缓存

5、一对多集合使用Bag,多对多集合使用set 6、继承类使用显示多态

7、表字段要少,表关联不要怕多,有二级缓存撑腰

三、Struts

Struts框架本身是使用Java Servlet和JSP技术的一种Model-View-Controller(MVC)实现。

JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。 1. Struts工作流程

1.1 struts2 工作流程

(1)客户端提交一个HttpServletRequest请求(.action或JSP页面)

(2)请求被提交到一系列Filter过滤器,如ActionCleanUp和FilterDispatcher等

(3)FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器

(4)请求发到FilterDispatcher后,FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个Request(一般根据URL后缀是否为.action来判断)

(5)如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求交到ActioProxy,由其进行处理.

(6)ActionProxy通过Configuration Manager(它会访问struts.xml)询问框架的配置文件,找到需要调用的Action类.

(7)ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用Action,(在调用之前会根据配置文件加载相关的所有Interceptor拦截器)

(8)Action执行完毕后,返回一个result字符串,此时再按相反的顺序通过Interceptor拦截器. (9) 最后ActionInvocation负责根据struts.xml中配置的result元素,找到与返回值对应的result,决定进行下一步输出.

Struts2 在web应用的位置图示:

负责处理接收用户数据,调用业务处理,以及展示数据的工作

1.2 Struts2 : ActionContext

ActionContext(com.opensymphony.xwork.ActionContext)是Action执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),它存放放的是Action在执行时需要用到的对象,比如:在使用WebWork时,我们的上下文放有请求的参数(Parameter)、会话(Session)、Servlet上下文(ServletContext)、本地化(Locale)信息等。

在每次执行Action之前都会创建新的ActionContext,ActionContext是线程安全的,也就是说在同一个线程里ActionContext里的属性是唯一的,这样我的Action就可以在多线程中使用。

下面我们看看怎么通过ActionContext取得我们的HttpSession: Map session = ActionContext.getContext().getSession();

原来我们取得的session却是Map类型的对象, WebWork框架将与Web相关的很多对象重新进行了包装,比如这里就将HttpSession对象重新包装成了一个

Map对象,供我们的Action使用,而不用直接和底层的HttpSession打交道。也正是框架的包装,让我们的Actoion可以完全的和Web层解藕。

ServletActionContext(com.opensymphony.webwork. ServletActionContext),直接继承了ActionContext,它提供了直接与JavaServlet相关对象访问的功能, 获取的对象有:

1、javax.servlet.http.HttpServletRequest:HTTPservlet请求对象 2、javax.servlet.http.HttpServletResponse;:HTTPservlet响应对象 3、javax.servlet.ServletContext:Servlet 上下文信息 4、javax.servlet.ServletConfig:Servlet配置对象 5、javax.servlet.jsp.PageContext:Http页面上下文

ServletActionContext除了提供了上面这些对象访问,它当然也继承了它父类ActionContex的很多功能,比如:对OgnlValueStack、Action名字等的访问。

1、取得HttpServletRequest对象:

HttpServletRequest request = ServletActionContext. getRequest(); 2、取得HttpSession对象:

HttpSession session = ServletActionContext. getRequest().getSession();

1.3 Struts1.x的工作流程:

对于采用Struts框架的Web应用,在Web应用启动(发布)时就会加载并初始化ActionServlet,ActionContext等内容。ActionServlet从struts- config.xml文件中读取配置信息,把它们存放到各种配置对象中,例如Action的映射信息存放在ActionMapping对象中。

当ActionServlet接受到一个客户请求时(HttpRequest),将执行如下流程。 (1)检查和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。

(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据封装到ActionForm对象中。

(3)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。

(4)如果ActionForm的validate()方法返回null或返回一个不包含


Struts,Spring,Hibernate面试题总结(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:骨科手术同意书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: