《2022年JAVA三大框架有关面试复习题目 .pdf》由会员分享,可在线阅读,更多相关《2022年JAVA三大框架有关面试复习题目 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、常见面试题三请简述Struts的运行流程回答:Struts是一个基于 MVC 模式的框架,所以它的运行流程是从控制器开始:第一、客户端发送请求到到ActionServlet,ActionServlet根据客户请求的地址(通常都是XXX.do),在 struts-congfig.xml文件当中找到与这个地址匹配的 Action ,并找到与这个 Action 匹配的 ActionForm 。第二、接受客户端发送请求当中所携带的数据,生成ActionForm 对象,并调用该对象的 setter方法,将这些数据设置给ActionForm 对象的成员变量;第三、如果在 Action 的配置当中, val
2、idate属性的值为 true ,则会调用ActionForm 的 validate方法对客户端提交的数据进行验证。如果验证的过程当中产生了错误, ActionServlet会将请求转发到 input 属性所指定的页面,显示错误信息。如果 validate属性的值为 false ,则不进行验证工作;第四、如果验证的过程当中没有产生错误,则会生成Action 的对象,并调用其 execute 方法;第五、 ActionServlet根据 Action 对象的 execute 方法所返回的ActionForward 对象, 将请求转发给下一个Action , 或者是其他的服务器端资源;第六、产生视
3、图,并发送给客户端;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 5 问题:你常用的 Struts类有哪些?哪个是Controller?回答:最常用的 Strurts类有 ActionServlet,Action,ActionFrom,ActionMapping,ActionForward 以及 ActionErrors 和 ActionError 等等。1.ActionServlet 主要是用来接收客户提交的请求,将请求当中
4、所携带的数据封装到 ActionForm 当中,然后调用 Action 的 execute函数,并将 ActionForm 对象作为参数传递到该方法当中。最后根据这个方法所返回的ActionForward 对象来决定将请求转发到下一个Action 或者是 jsp 等资源;2.ActionForm 的作用分为两个部分, 第一这个对象封装了客户从表单当中所提交的数据, 第二是 ActionForm 当中有一个 validate 方法,这个方法的作用是验证客户提交数据的有效性;2.Action 的主要作用是处理请求。通常的做法是在Action 的 execute方法当中调用业务层对象,进行业务处理,
5、并根据业务处理的结果,返回不同的ActionForward 对象;3.ActionMapping 对象代表了 struts-congfig.xml 文件当中的 标签的配置信息,我通常会使用这个对象得到ActionForward 对象,常用的方法有findForward 和 getInputForward; 4.ActionForwad 对象通常代表了一个Web资源,可以是 JSP,Servlet 或者是另外一个 Action。这个对象对应的是struts-config.xml 文件当中的 元素;5.ActionError 代表了一个错误信息,这个错误信息是一个键值对,配置在struts 的资源
6、文件当中。通常是在ActionFrom 的 validate 方法当中验证客户从表单当中所提交的信息,如果不符合验证规则,就生成一个ActionError 对象,将这个对象添加到 ActionErrors 对象当中。然后跳转到页面上使用标签进行显示;在 Struts框架当中, ActionServlet 和 Action 各自承担了一部分控制器的责任,总的来说还是 ActionServlet 更加侧重于控制器的功能。6 问题:你是否经常用连接池?请说明其含义、作用和工作过程?回答:连接池的核心思想是连接的复用。通过建立一个连接池, 可以避免数据库连接对象频繁简历和销毁所带来的性能开销。连接池在
7、刚创建时, 会一次性的生成多个连接, 放置在连接池当中, 当应用程序需要访问数据库时,就会从连接池当中取得连接对象, 而不是新生成连接对象, 应用程序对数据库的访问结束时,再将连接对象返还到连接池当中,而不是将连接对象销毁。 如果应用程序的并发量大, 需要使用的链接对象超过了连接池刚创建时的对象个数,这时就会创建新的连接对象。 但是连接池通常都会配置最大连接数,当创建的连接总数超过了达到最大连接数时, 就不会再创建新的连接对象了。如果连接池当中的数量大于初始创建的连接数, 并且有空闲的连接, 那么这些空闲连接在闲置一段时间之后就会被销毁。 初始创建的连接数量, 最大连接数和连接空闲的时间都可以
8、通过配置文件来指定。在hibernate和 Spring 当中都可以配置连接池,我最常用的连接池是 DBCP 和 C3P0。常见面试题七 -Statement和 PreparedStatement 有什么区别?哪个效率高?回答 Statement和 PreparedStatement 都是用于执行 SQL 语句的句柄,但名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 是 PreparedStatement代表的是一个预编译的SQ
9、L。这两种对象的区别主要体现在以下的三个方面:第一是使用方面的区别,statement 执行的 SQL 语句必须是一个完整的SQL,而对于 PreparedStatement来说,可以使用“?”作为SQL 语句当中的占位符,然后使用 PreparedStatement 的 setXXX 方法来给占位符赋值, 最后在执行;第二个区别是使用 Statement时,如果 SQL 当中出现了“”或者“ -”等符号时, 需要使用转义字符来进行转义,而在 PreparedStatement 当中,如果占位符的值当中有这些符号,PreparedStatement 会自动的进行转义;最后一个区别是 Prepa
10、redStatement 会讲 SQL 语句进行预编译, 每次执行的时候只需要将参数设置给相应的占位符就可以运行。而使用Statement时,SQL 语句时每次都要进行编译,所以PreparedStatement 的效率相对较高。常见面试题九 -请简述你对 MVC 模式的理解回答:MVC 模式是表示层开发最常用的设计模式,使用这个设计模式的目的是为了解除控制逻辑, 业务逻辑和视图之间的耦合, 提升系统的可扩展性和可维护性。MVC 模式主要由模型,控制器和视图三个部分组成。其中控制器的主要责任是接受客户所提交的请求, 并将请求转发给适当的模型对象进行处理,再将处理的结果发给视图,进行显示。在J2
11、EE项目当中,通常会使用Servlet 来担任这个角色,因为在Servlet当中可以直接使用HttpServletRequest,HttpServletResponse 等 API。模型的主要作用是根据客户的请求来进行相应的业务运算, 这个部分的功能在 J2EE 当中主要使用 JavaBean来完成,这部分的代码不能依赖于Servlet API,从而可以保证业务逻辑的可移植性。控制器将模型运算的结果发送到视图,视图负责将这部分数据显示给客户。这个部分的功能在 J2EE 当中主要是使用 JSP来完成。因为 JSP可以在允许在 HTML当中插入 Java代码。常见面试题十二请简述Hibernate
12、的有缺点Hibernate是一种 ORM 框架, 可以帮助程序员方便的实现透明的持久化操作,它的优点主要有以下的几个方面:1. Hibernate实现了基于 POJO 的持久化操作,框架对于POJO完全没有侵入,因此程序员完全不需要关机对象持久化的细节,从而提升了开发效率;2. Hibernte 提供了 HQL 和 QBC 作为查询工具,而不是使用传统的SQL,这两种查询方法都提供了丰富的面向对象机制,缓解了系统的阻抗不匹配问题3. 操作数据据的 SQL 由 Hibernate根据 hibernate.cfg.xml我呢件当中所指定的数据库方言生成,方便应用程序在不同的数据库之间移植;4. H
13、ibernate当中内置了一级和二级缓存,提升了操作数据库的性能;Hibernate在拥有以上优点的同时, 也避免不了 ORM 框架的通病。如 N1 问题,也就是使用类似于select * from User u 这样的 HQL 语句查询时,如果数据库当中有 N 条数据, Hibernate就需要运行 N1 条 SQL 语句,这大大影响了系统的姓能。另外 Hiberante的映射文件的编写也显得比较繁琐,容易出错名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -