<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IT公司面试手册 &#187; Struts</title>
	<atom:link href="http://www.mianwww.com/html/category/it-interview/struts-it-interview/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mianwww.com</link>
	<description></description>
	<lastBuildDate>Wed, 08 Feb 2012 11:48:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Struts框架面试题</title>
		<link>http://www.mianwww.com/html/2012/01/12759.html</link>
		<comments>http://www.mianwww.com/html/2012/01/12759.html#comments</comments>
		<pubDate>Wed, 18 Jan 2012 14:12:22 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Struts]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=12759</guid>
		<description><![CDATA[1. 简述Struts框架的初始化流程。 答案： 对于采用Struts框架的Web应用，在Web应用启动时就会加载并初始化控制器ActionServlet ActionServlet从struts-config.xml文件中读取配置信息，把它们存放到ActionMappings对象中。 在Struts framework中， Controller主要是ActionServlet，但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成（也许这几个组件，应该划分到模型中的业务逻辑一块）。 其中，Action扮演了真正的控制逻辑的实现者，而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。 2. 简述Struts框架响应客户请求的工作流程 答案： 1.  检索和用户请求匹配的ActionMapping实例，如果不存在，就返回用户请求路径无效的信息。 2.  如果ActionForm实例不存在，就创建一个ActionForm对象，把客户提交的表单数据保存到ActionForm对象中。 3.  根据配置信息决定是否需要表单验证。如果需要验证，就调用ActionForm的validate()方法。 4.  如果ActionForm的validate()方法返回null或返回一个不包含ActionMessge的ActionErrors对象，就表示表单验证成功。 5.  ActionServlet根据AtionMapping实例包含的映射信息决定将请求转发给哪个Action。如果应的Action实例不存在，就先创建这个实例，然后调用Action的execute()方法。 6.  Action的execute()方法返回一个ActionForward对象，ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。 7.  ActionForward对象指向的JSP组件生成动态页面，返回给客户。 对于以上流程的步骤（4），如果ActionForm的validate()方法返回一个包含一个或多个ActionError的ActionErrors对象，就表示表单验证失败，此时ActionServlet将直接把请求转发给包含客户提交表单的JSP组件。在这种情况下，不会再创建Action对象并调用Action的execute方法。 &#160; 3 Struts框架的数据验证可分为几种类型？ 答案： 表单验证（由ActionForm Bean处理）：如果用户没有在表单中输入姓名，就提交表单，将生成表单验证错误 业务逻辑验证（由Action处理）：如果用户在表单中输入的姓名为“Monster”，按照本应用的业务规则，不允许向“Monster”打招呼，因此将生成业务逻辑错误。 4 简述Form Bean的表单验证流程。 答案： 1、当用户提交了HTML表单，Struts框架自动把表单数据组装到ActionForm Bean中。 2、接下来Struts框架会调用ActionForm Bean的validate()方法进行表单验证。 3、如果validate()方法返回的ActionErrors 对象为null，或者不包含任何ActionMessage对象，就表示没有错误，数据验证通过。 4、如果ActionErrors中包含ActionMessage对象，就表示发生了验证错误，Struts框架会把ActionErrors对象保存到request范围内，然后把请求转发到恰当的视图组件，视图组件通过&#60;html:errors&#62;标签把request范围内的ActionErrors对象中包含的错误消息显示出来，提示用户修改错误。 5在struts配置文件中action元素包含哪些属性和子元素？ 答案： path属性：指定请求访问Action的路径 type属性：指定Action的完整类名 name属性：指定需要传递给Action的ActionForm Bean scope属性：指定ActionForm Bean的存放范围 validate属性：指定是否执行表单验证 input属性：指定当表单验证失败时的转发路径。 &#60;action&#62;元素还包含一个&#60;forward&#62;子元素，它定义了一个请求转发路径。 6. 简单叙述ActionForm Bean的作用 [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2012/01/12759.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java框架面试题</title>
		<link>http://www.mianwww.com/html/2011/11/11764.html</link>
		<comments>http://www.mianwww.com/html/2011/11/11764.html#comments</comments>
		<pubDate>Thu, 10 Nov 2011 11:43:28 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Struts]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=11764</guid>
		<description><![CDATA[1. 请简述STRUTS架构 Struts是采用Java Servlet/JavaServer Pages技术，开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能： 一.包含一个controller servlet，能将用户的请求发送到相应的Action对象。 二.JSP自由tag库，并且在controller servlet中提供关联支持，帮助开发员创建交互式表单应用。 三.提供了一系列实用对象：XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。 2. 在Spring框架中，如何解决Web页面乱码问题？ 可以采用Spring框架自带的过滤器CharacterEncodingFilter，配置方式如下： 在web.xml文件中filter的位置加上如下内容： encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter * 3. 在Struts中，如何实现防止表单的重复提交操作？ Struts的Token（令牌）机制能够很好的解决表单重复提交的问题，基本原理是：服务器端在处理到达的请求之前，会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较，看是否匹配。在处理完该请求后，且在答复发送给客户端之前，将会产生一个新的令牌，该令牌除传给客户端以外，也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话，客户端传过来的令牌就和服务器端的令牌不一致，从而有效地防止了重复提交的发生。 4. Struts的入口类？ 答：ActionServlet是Struts的入口类，所有的struts请求都经由该类转发处理 5. 关于hibernate: 1)在hibernate中，在配置文件呈标题一对多，多对多的标签是什么； 2)Hibernate的二级缓存是什么； 3)Hibernate是如何处理事务的； 答：1）一对多的标签为： ；多对多的标签为：； 2）sessionFactory的缓存为hibernate的二级缓存； 3）Hibernate的事务实际上是底层的JDBC Transaction的封装或者是JTA Transaction的封装；默认情况下使用JDBCTransaction。 6. 写出你熟悉的开源框架以及各自的作用。 答：框架：hibernate,spring,struts. Hibernate主要用于数据持久化； Spring 的控制反转能起到解耦合的作用； Struts 主要用于流程控制； 服务器类：Apache Tomcat Jboss等 7. [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/11/11764.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java SSH面试题集</title>
		<link>http://www.mianwww.com/html/2011/09/10270.html</link>
		<comments>http://www.mianwww.com/html/2011/09/10270.html#comments</comments>
		<pubDate>Thu, 22 Sep 2011 05:23:53 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Struts]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=10270</guid>
		<description><![CDATA[Java&#8212;SSH(MVC) 1. 谈谈你mvc的理解 MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式，它强制性的把应用程序的输入、处理和输出分开。 MVC中的模型、视图、控制器它们分别担负着不同的任务。 视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据，并接受用户的输入。视图不进行任何业务逻辑处理。 模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性 控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。 然后根据处理的结果调用相应的视图来显示处理的结果。 MVC的处理过程：首先控制器接受用户的请求，调用相应的模型来进行业务处理，并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。 Struts 1. struts1.2和struts2.0的区别？如何控制两种框架中的单例模式？ struts1.2和struts2.0的对比 a、Action类： struts1.2要求Action类继承一个基类。struts2.0 Action要求继承ActionSupport基类 b、线程模式 struts1.2 Action是单例模式的并且必须是线程安全的,因为仅有一个Action的实例来处理所有的请求。 单例策略限制了Struts1.2 Action能做的事情,并且开发时特别小心。Action资源必须是线程安全的或同步的。 struts2.0 Action为每一个请求产生一个实例,因此没有线程安全问题。 c、Servlet依赖 struts1.2 Action依赖于Servlet API,因为当一个Action被调用时HttpServletRequest和HttpServletResponse被传递给execut方法。 struts2.0 Action不依赖于容器,允许Action脱离容器单独测试。如果需要,Struts2 Action仍然可以访问初始的Request和Response。 但是,其他的元素减少或者消除了直接访问HttpServletRequest和HttpServletResponse的必要性。 d、可测性 测试struts1.2 Action的一个主要问题是execute方法暴露了Servlet API(这使得测试要依赖于容器)。一个第三方扩展：struts TestCase 提供了一套struts1.2的模拟对象来进行测试。 Struts2.0 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”也使得测试更容易。 2. 项目中为什么使用SSH 1. 使用Struts是因为struts是基于MVC模式的,很好的将应用程序进行了分层，使开发者更关注于业务逻辑的实现；第二，struts有着丰富的taglib,如能灵活运用，则能大大提高开发效率。 2. 使用Hibernate：因为hibernate为Java应用提供了一个易用的、高效率的对象关系映射框架。hibernate是个轻量级的持久性框架，功能丰富。 3. 使用Spring：因为spring基于IoC(Inversion of Control，反向控制)和AOP构架多层j2ee系统的框架，但它不强迫你必须在每一层中必须使用Spring，因为它模块化的很好，允许你根据自己的需要选择使用它的某一个模块； 采用IoC使得可以很容易的实现bean的装配，提供了简洁的AOP并据此实现事务管理(Transcation Managment),等等 [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/09/10270.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH框架面试题</title>
		<link>http://www.mianwww.com/html/2011/06/9770.html</link>
		<comments>http://www.mianwww.com/html/2011/06/9770.html#comments</comments>
		<pubDate>Sun, 19 Jun 2011 05:27:57 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Struts]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=9770</guid>
		<description><![CDATA[Hibernate工作原理及为什么要用？ 原理： 1. 读取并解析配置文件 2. 读取并解析映射信息，创建SessionFactory 3. 打开Sesssion 4. 创建事务Transation 5. 持久化操作 6. 提交事务 7. 关闭Session 8. 关闭SesstionFactory 为什么要用： * 对JDBC访问数据库的代码做了封装，大大简化了数据访问层繁琐的重复性代码。 * Hibernate是一个基于JDBC的主流持久化框架，是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 * hibernate使用Java反射机制，而不是字节码增强程序来实现透明性。 * hibernate的性能非常好，因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库，从一对一到多对多的各种复杂关系。 Hibernate是如何延迟加载? * Hibernate2延迟加载实现：a)实体对象 b)集合（Collection） * Hibernate3 提供了属性的延迟加载功能 当Hibernate在查询数据的时候，数据并没有存在与内存中，当程序真正对数据的操作时，对象才存在与内存中，就实现了延迟加载，他节省了服务器的内存开销，从而提高了服务器的性能。 Hibernate中怎样实现类之间的关系?(如：一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作，它们都市对对象进行操作，我们程序中把所有的表与类都映射在一起，它们通过配置文件中的many-to-one、one-to-many、many-to-many、 说下Hibernate的缓存机制 * 内部缓存存在Hibernate中又叫一级缓存，属于应用事物级缓存 * 二级缓存： a)应用及缓存 b)分布式缓存 条件：数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据 c) 第三方缓存的实现 Hibernate的查询方式 Sql、Criteria,object comptosition Hql： * 属性查询 * [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/06/9770.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Struts面试题库</title>
		<link>http://www.mianwww.com/html/2011/06/9762.html</link>
		<comments>http://www.mianwww.com/html/2011/06/9762.html#comments</comments>
		<pubDate>Sat, 18 Jun 2011 05:17:48 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Struts]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=9762</guid>
		<description><![CDATA[1) 在Struts实现的MVC框架中，充当中央控制器的是（）。 A. Action B. EJB C. ActionServlet D. JSP 2) 在基于Struts框架的Web应用中，下面关于Action类的说法正确的是（）。 A. Action类属于模型组件 B. Action类主要用来完成实际的业务逻辑 C. Action类负责调用模型的方法，更新模型的状态，并帮助控制应用程序的流程 D. 在Web应用启动时会自动加载所有的Action实例 3) 在基于Struts框架的Web应用中，下面关于ActionForm Bean的说法正确的是（）。 A. ActionForm Bean用来完成一些实际的业务逻辑 B. Struts框架利用ActionForm Bean来进行视图和控制器之间表单数据的传递 C. ActionForm负责调用模型的方法，更新模型的状态 D. ActionForm Bean包含一些特殊的方法，用于验证表单数据以及将其属性重新设置为默认值 4) 下面对于Struts控制器组件的说法正确的是（）。 A. 对于多应用模块的Struts应用，每个子应用都有各自的ActionServlet实例 B. 在Struts应用的生命周期中，仅创建ActionServlet的一个实例 C. Action组件是用户请求和业务逻辑之间的桥梁 D. Struts框架中只允许在一个应用中配置一个Action类 5) 在Struts配置文件中，（）元素的processorClass属性用于配置RequestProcessor类。 A. B. C. D. 6) Action类的execute方法返回的ActionForward对象name属性必须与struts-config.xml中元素的（）属性匹配 A. forward B. [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/06/9762.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JSP面试题</title>
		<link>http://www.mianwww.com/html/2011/06/9732.html</link>
		<comments>http://www.mianwww.com/html/2011/06/9732.html#comments</comments>
		<pubDate>Sat, 18 Jun 2011 04:14:47 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Struts]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=9732</guid>
		<description><![CDATA[选择题（8题） 1) 下列（）标签是JSF的核心标签。 A. inputText B. view C. form D. inputSecret 2) JSF的（）标签显示一个组件的相关消息。 A. h:error B. f:messages C. h:messages D. h:message 3) JSF的Managed Bean的范围不能为（）。 A. request B. page C. session D. application 4) 下列（）是正确的JSF页面代码片断。 A. B. C. D. 5) 在JSF中，h:dataTable的value属性代表的数据类型不能为（）。 A. 数组 B. int C. java.util.List D. java.sql.ResultSet 6) 设计一个JSF页面时，需要添加一个控件用于选择产品，从4中产品中唯一的选择一种，下列（）标签可以用以显示产品组件。 A. h:selectBooleanCheckbox B. h:selectManyCheckbox C. [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/06/9732.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH面试题</title>
		<link>http://www.mianwww.com/html/2011/06/9596.html</link>
		<comments>http://www.mianwww.com/html/2011/06/9596.html#comments</comments>
		<pubDate>Wed, 08 Jun 2011 14:54:07 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Struts]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=9596</guid>
		<description><![CDATA[Struts，Hibernate，Spring经典面试题收藏 关键字: struts, hibernate, spring Hibernate工作原理及为什么要用？ 原理： 1.读取并解析配置文件 2.读取并解析映射信息，创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用： 1. 对JDBC访问数据库的代码做了封装，大大简化了数据访问层繁琐的重复性代码。 2. Hibernate是一个基于JDBC的主流持久化框架，是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制，而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好，因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库，从一对一到多对多的各种复杂关系。 2． Hibernate是如何延迟加载? 1. Hibernate2延迟加载实现：a)实体对象 b)集合（Collection） 2. Hibernate3 提供了属性的延迟加载功能 当Hibernate在查询数据的时候，数据并没有存在与内存中，当程序真正对数据的操作时，对象才存在与内存中，就实现了延迟加载，他节省了服务器的内存开销，从而提高了服务器的性能。 3．Hibernate中怎样实现类之间的关系?(如：一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作，它们都市对对象进行操作，我们程序中把所有的表与类都映射在一起，它们通过配置文件中的many-to-one、one-to-many、many-to-many、 4． 说下Hibernate的缓存机制 1. 内部缓存存在Hibernate中又叫一级缓存，属于应用事物级缓存 2. 二级缓存： a) 应用及缓存 b) 分布式缓存 条件：数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据 c) 第三方缓存的实现 5． Hibernate的查询方式 Sql、Criteria,object comptosition Hql： 1、 [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/06/9596.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>笔试题之框架与新技术部分</title>
		<link>http://www.mianwww.com/html/2011/05/9365.html</link>
		<comments>http://www.mianwww.com/html/2011/05/9365.html#comments</comments>
		<pubDate>Mon, 30 May 2011 13:51:26 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Struts]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=9365</guid>
		<description><![CDATA[流行的框架与新技术 谈谈你对Struts的理解。 答: 1. struts是一个按MVC模式设计的Web层框架，其实它就是一个大大的servlet，这个Servlet名为ActionServlet，或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理，这个Servlet再参照一个配置文件（通常为/WEB-INF/struts-config.xml）将各个请求分别分配给不同的action去处理。 一个扩展知识点：struts的配置文件可以有多个，可以按模块配置各自的配置文件，这样可以防止配置文件的过度膨胀； 2. ActionServlet把请求交给action去处理之前，会将请求参数封装成一个formbean对象（就是一个java类，这个类中的每个属性对应一个请求参数），封装成一个什么样的formbean对象呢？看配置文件。 3.要说明的是， ActionServlet把formbean对象传递给action的execute方法之前，可能会调用formbean的validate方法进行校验，只有校验通过后才将这个formbean对象传递给action的execute方法，否则，它将返回一个错误页面，这个错误页面由input属性指定，（看配置文件）作者为什么将这里命名为input属性，而不是error属性，我们后面结合实际的运行效果进行分析。 4.action执行完后要返回显示的结果视图，这个结果视图是用一个ActionForward对象来表示的，actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面，因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的逻辑名，这样可以实现action程序代码与返回的jsp页面名称的解耦。 你对struts可能还有自己的应用方面的经验，那也要一并说出来。 谈谈你对Hibernate的理解。 答: 1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系，调用对象的方法来改变各个对象的状态和对象消亡的过程，不管程序运行的过程和操作怎么样，本质上都是要得到一个结果，程序上一个时刻和下一个时刻的运行结果的差异就表现在内存中的对象状态发生了变化。 2.为了在关机和内存空间不够的状况下，保持程序的运行状态，需要将内存中的对象状态保存到持久化设备和从持久化设备中恢复出对象的状态，通常都是保存到关系数据库来保存大量对象信息。从Java程序的运行功能上来讲，保存对象状态的功能相比系统运行的其他功能来说，应该是一个很不起眼的附属功能，java采用jdbc来实现这个功能，这个不起眼的功能却要编写大量的代码，而做的事情仅仅是保存对象和恢复对象，并且那些大量的jdbc代码并没有什么技术含量，基本上是采用一套例行公事的标准代码模板来编写，是一种苦活和重复性的工作。 3.通过数据库保存java程序运行时产生的对象和恢复对象，其实就是实现了java对象与关系数据库记录的映射关系，称为ORM（即Object Relation Mapping），人们可以通过封装JDBC代码来实现了这种功能，封装出来的产品称之为ORM框架，Hibernate就是其中的一种流行ORM框架。使用Hibernate框架，不用写JDBC代码，仅仅是调用一个save方法，就可以将对象保存到关系数据库中，仅仅是调用一个get方法，就可以从数据库中加载出一个对象。 4.使用Hibernate的基本流程是：配置Configuration对象、产生SessionFactory、创建session对象，启动事务，完成CRUD操作，提交事务，关闭session。 5.使用Hibernate时，先要配置hibernate.cfg.xml文件，其中配置数据库连接信息和方言等，还要为每个实体配置相应的hbm.xml文件，hibernate.cfg.xml文件中需要登记每个hbm.xml文件。 6.在应用Hibernate时，重点要了解Session的缓存原理，级联，延迟加载和hql查询。 AOP的作用。 你对Spring的理解。 1.Spring实现了工厂模式的工厂类（在这里有必要解释清楚什么是工厂模式），这个类名为BeanFactory（实际上是一个接口），在程序中通常BeanFactory的子类ApplicationContext。Spring相当于一个大的工厂类，在其配置文件中通过元素配置用于创建实例对象的类名和实例对象的属性。 2. Spring提供了对IOC良好支持，IOC是一种编程思想，是一种架构艺术，利用这种思想可以很好地实现模块之间的解耦。IOC也称为DI（Depency Injection），什么叫依赖注入呢？ 譬如，Class Programmer { Computer computer = null; public void code() { //Computer computer = new IBMComputer(); //Computer computer = beanfacotry.getComputer(); computer.write(); } public void setComputer(Computer computer) [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/05/9365.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Struts&amp;Spring&amp;Hibernate面试总结</title>
		<link>http://www.mianwww.com/html/2011/05/9324.html</link>
		<comments>http://www.mianwww.com/html/2011/05/9324.html#comments</comments>
		<pubDate>Mon, 30 May 2011 05:18:50 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Struts]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=9324</guid>
		<description><![CDATA[1、 介绍一下Struts的Action类 Struts框架采用ActionServlet和RequestProcessor组件进行集中控制,并采用Action组件来处理单项业务。ActionServlet把全部提交的请求委托到RequestProcessor对象,RequestProcessor使用struts-config.xml文件检查请求URI找到响应的Action。 Action类是用户请求和业务逻辑之间的桥梁,每个Action充当客户的一项业务代理,这样使得客户请求和Action类之间可以有多个点对点的映射。Action类还提供了其它的辅助功能,比如:日志(logging)和数据验证(validation)。 当控制器收到客户请求的时候,在将请求转移到一个Action实例时,如果这个实例不存在,控制器会首先创建,然后会调用这个Action实例的execute()方法。在RequestProcessor类预处理请求时,在创建了Action的实例后,就调用自身的processActionperform()方法,该方法再调用Action类的execute()方法, execute()方法再调用模型组件的业务方法,完成用户请求的业务逻辑处理,然后根据执行结果把请求转发给合适的Web组件。Struts Framework为应用系统中的每一个Action类只创建一个实例。因为所有的用户都使用这一个实例,所以必须确定你的Action 类运行在一个多线程的环境中。 2、 ActionForward类 Action类的execute()方法返回一ActionForwad对象.ActionForward对象代表了Web资源的逻辑抽象。这里的资源可以是JSP页\Java Servlet或Action.从execute()方法中返回ActionForward对象有两种方法: 第一:在execute()方法中,动态创建一个ActionForward实例, return new ActionForward(&#8220;Failure&#8221;,&#8221;/security/error.jsp&#8221;,&#8221;true&#8221;); 以上ActionForward构造方法的第一个参数代表ActionForward实例的逻辑名,第二个参数指定转发路径,第三个参数指定是否进行重定向.(true:重定向;false:请求转发) 第二:在Struts配置文件中配置元素. 配置了元素后,在Struts框架初始化时就会创建存放元素配置信息的ActionForward对象。在Action的execute方法中只需调用Actionmapping实例的findForward()方法,来获得特定的ActionForward实例: return mapping.findForward(&#8220;Failure&#8221;); 3、 介绍一下Struts的ActionServlet类 ActionServlet继承自javax.servlet.http.HttpServlet类,其在Struts framework中扮演的角色是中心控制器。它提供一个中心位置来处理全部的终端请求。按照Servelt的标准,所有得Servlet必须在web配置文件(web.xml)声明。同样,ActoinServlet必须在Web Application配置文件(web.xml)中描述,有关配置信息如下。 action org.apache.struts.action.ActionServlet 全部的请求URI以*.do的模式存在并映射到这个servlet,其配置如下: action *.do 中心控制器为所有的表示层请求提供了一个集中的访问点。当用户向服务器端提交请求的时候,实际上信息是首先发送到控制器ActionServlet,一旦控制器获得了请求,其就会将请求信息传交给一些辅助类(help classes)处理。 4、 Struts对MVC的体现 M: 在Struts中,模型由JavaBean和EJB组件组成,用来实现程序的业务逻辑部分. C: ActionServlet,RequestProcessor和Struts辅助类来实现控制器。ActionServlet是Struts中的核心控制器ActionServlet会根据在Struts配置文件中的配置将控制权转交给相应的Action类。Action 类是业务的代理,在Action类中可以调用模型组件或者编写其他业务逻辑代码来完成一项具体的业务。 V: Struts框架中的视图主要由JSP文件构成,在JSP文件中可应用Struts标签和自定义标签来表现模型组件中的数据进行简单的处理。ActionForm Bean实际上是一个遵循了特殊约定的JavaBean,在Struts中ActionForm Bean可看作为一个中间存储器在视图与控制器之间进行数据传递。 5、 Struts框架工作流程 当启动一个采用Struts框架开发的Web应用程序时,ActionServlet就会被加载并被初始化。然后ActionServlet读取Struts配置文件中的信息,并根据文件中的各模块配置来初始化相应的配置对象。 当用户的请求属于ActionServlet所处理请求的模式时,ActionServlet被调用,Struts的处理工作开始: 1.中央控制器根据用户的请求,在Struts配置文件中的元素中查找匹配该请求的子元素,如果不存在,则返回异常; 2.在匹配的元素中查找有Scope属性指定的范围中是否存在由name属性指定的ActionForm Bean.如果不存在,就创建一个新的ActionForm对象,然后将用户提交的表单中的数据保存在给ActionFrom对象中,并将ActionForm对象放入Scope属性指定的范围内; 3.如果元素中Validate属性值为true,则调用ActionFrom中的Validate()方法进行表单验证; 4.ActionForm的Validate()方法返回NULL或返回的ActionErrors对象中不包含任何ActionMessage对象,则表单验证成功。否则表单验证失败,ActionServlet将请求转发给Input属性指定的页面; 5.中央控制器将控制权转交给元素Type属性指定的Action类,如果相应的Action类对象不存在,则创建该类对象。接下来Action类的Execute()方法被调用; 6.在Action类的Execute()方法中进行业务逻辑处理,并返回一个ActionForward对象。控制权被交回ActionServlet,ActionServlet将返回的ActionForward对象与元素中的子元素进行匹配,并将请求转发给指定的JSP组件; [...]]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/05/9324.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>介绍一下Struts的异常自动处理机制</title>
		<link>http://www.mianwww.com/html/2011/05/8858.html</link>
		<comments>http://www.mianwww.com/html/2011/05/8858.html#comments</comments>
		<pubDate>Thu, 26 May 2011 08:15:00 +0000</pubDate>
		<dc:creator>jim.jin</dc:creator>
				<category><![CDATA[Struts]]></category>

		<guid isPermaLink="false">http://www.mianwww.com/?p=8858</guid>
		<description><![CDATA[编程式异常处理 即我们在Action中调用业务逻辑层对象的方法时，用try{ }catch的方式来截获异常之后，手工对异常进行处理 我们以前的开发过程中，都是使用编程式的异常处理 在编程式异常处理的时候，我们可以使用struts的消息处理机制（前面所讲的内容）来对这些异常信息进行处理 自动异常处理机制 即在Action中不捕捉异常，而是将异常抛出给struts框架处理 我们需要在配置文件中指示struts如何处理这些被抛出的异常 使用元素来定义自动异常处理 元素的配置，指示了struts如何处理异常的方式 在通常的情况下，我们得到异常以后，需要将页面导航到一个错误提示的页面，提示错误信息 元素配置的关键属性是： key – 即这个异常所对应的错误提示消息文本的key，这个key的值，需要在资源属性文件中进行定义 type – 即定义需要处理哪种类型的Exception path – 定义一旦出现异常，需要转向哪个页面来进行提示，如果不定义path属性，默认情况下，将使用Action配置中的input属性的值来作为转向的页面 如何显示错误消息？ 在JSP页面中，使用标签，即可将其异常对应的错误消息文本进行显示（测试login.jsp页面）]]></description>
		<wfw:commentRss>http://www.mianwww.com/html/2011/05/8858.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

