2022年SSH面试题汇总 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年SSH面试题汇总 .pdf》由会员分享,可在线阅读,更多相关《2022年SSH面试题汇总 .pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SSH面试题汇总MVC 1.谈谈你 mvc的理解MVC是 Model ViewControler 的简称。即模型视图控制器。MVC 是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。MVC中的模型、视图、控制器它们分别担负着不同的任务。视图 : 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。模型 : 模型表示业务数据和业务处理。相当于JavaBean 。一个模型能为多个视图提供数据。这提高了应用程序的重用性控制器 : 当用户单击 Web 页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。然后根据处理的结果调用相应的
2、视图来显示处理的结果。MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。Struts 1. struts1.2 和 struts2.0的区别?如何控制两种框架中的单例模式?struts1.2 和 struts2.0 的对比Action 类: ? Struts1 要求 Action 类继承一个抽象基类。Struts1 的一个普遍问题是使用抽象类编程而不是接口。(侵入式编程,不赞同)? Struts 2 Action 类可以实现一个Action 接口,也可实现其他接口,使可选和定制的服务成为可能
3、。Struts2提供一个 ActionSupport 基类去实现常用的接口。 Action 接口不是必须的,任何有execute 标识的 POJO对象都可以用作Struts2 的 Action 对象。线程模式 : ? Struts1 Action 是单例模式并且必须是线程安全的,因为仅有Action 的一个实例来处理所有的请求。单例策略限制了 Struts1 Action 能作的事,并且要在开发时特别小心。Action 资源必须是线程安全的或同步的。(安全性不如STRUTS2) ? Struts2 Action 对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上, servlet 容
4、器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)Servlet 依赖: ? Struts1 Action 依赖于 Servlet API ,因为当一个Action 被调用时 HttpServletRequest 和 HttpServletResponse 被传递给 execute 方法。(依赖性太强,耦合度太高)? Struts 2 Action 不依赖于容器,允许Action 脱离容器单独被测试。如果需要,Struts2 Action 仍然可以访问初 始 的 request和response。 但 是 , 其 他 的 元 素 减 少 或 者 消 除 了 直 接 访 问Htt
5、pServetRequest 和HttpServletResponse 的必要性。可测性 : ? 测试 Struts1 Action 的一个主要问题是execute 方法暴露了 servlet API(这使得测试要依赖于容器)。一个第三方扩展 Struts TestCase 提供了一套Struts1 的模拟对象(来进行测试)。 (对于 TDD 方式编程带来不便)? Struts 2 Action 可以通过初始化、设置属性、调用方法来测试,“ 依赖注入 ” 支持也使测试更容易。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精
6、心整理 - - - - - - - 第 1 页,共 28 页 - - - - - - - - - 捕获输入 : (使编程人员更加专注于自己的业务逻辑)? Struts1 使用 ActionForm 对象捕获输入。所有的ActionForm 必须继承一个基类。因为其他JavaBean不能用作 ActionForm, 开发者经常创建多余的类捕获输入。动态 Bean (DynaBeans) 可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建 )已经存在的JavaBean (仍然会导致有冗余的javabean) 。? Struts 2 直接使用 Action 属性作为输入属
7、性, 消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的 rich 对象类型。 Action 属性能够通过web 页面上的 taglibs 访问。Struts2 也支持 ActionForm 模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib 对 POJO输入对象的引用。表达式语言:(使得前端的VIEW变的更加的灵活多变)? Struts1 整合了 JSTL ,因此使用JSTL EL 。这种 EL有基本对象图遍历,但是对集合和索引属性的支持很弱。? Struts2 可以使用 JSTL ,但是也支持一个更强大和灵活的表达式
8、语言Object Graph Notation Language (OGNL). 绑定值到页面( view): (方便的读取变量的值)? Struts 1 使用标准 JSP机制把对象绑定到页面中来访问。? Struts 2 使用ValueStack技术,使taglib 能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view) 。类型转换:(再次体现OGNL的强大)? Struts 1 ActionForm 属性通常都是String 类型。 Struts1 使用 Commons-Beanutils 进行类型转换。每
9、个类一个转换器,对每一个实例来说是不可配置的。? Struts2 使用 OGNL进行类型转换。提供基本和常用对象的转换器。校验:(又是节省编程工作量的好方法)? Struts 1 支持在 ActionForm 的 validate 方法中手动校验, 或者通过 Commons Validator 的扩展来校验。 同一个类可以有不同的校验内容,但不能校验子对象。? Struts2 支持通过validate 方法和 XWork 校验框架来进行校验。XWork 校验框架使用为属性类类型定义的校验和内容校验,来支持chain 校验子属性Action 执行的控制:(Actions 的彼此关联在STRUTS
10、2 下变的弱了很多了)? Struts1 支持每一个模块有单独的Request Processors (生命周期),但是模块中的所有Action 必须共享相同的生命周期。? Struts2 支持通过拦截器堆栈(Interceptor Stacks)为每一个 Action 创建不同的生命周期。堆栈能够根据需要和不同的 Action 一起使用。2. 项目中为什么使用SSH 1. 使用 Struts 是因为 struts 是基于 MVC 模式的 ,很好的将应非用程序进行了分层,使开发者更关注于业务逻辑的实现;第二,struts 有着丰富的taglib,如能灵活运用,则能大大提高开发效率。2. 使用
11、Hibernate: 因为 hibernate 为 Java应用提供了一个易用的、 高效率的对象关系映射框架。hibernate是个轻量级的持久性框架,功能丰富。3. 使用 Spring:因为 spring 基于 IoC(Inversion of Control,反向控制 )和 AOP构架多层 j2ee 系统的框架,但它不强迫你必须在每一层中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;采用 IoC 使得可以很容易的实现bean 的装配,提供了简洁的AOP 并据此实现事务管理(Transcation Managment),等等名师资料总结 - - -精品
12、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 28 页 - - - - - - - - - 3. struts与 spring是如何继承的不懂题目之意:是否是说的struts 的 action 都继承自 org.apache.struts.action.Action 而 Spring中的继承就不清楚了。4. struts如何实现国际化以下以两国语言 (中文,英文 )为例:1. 在工程中加入Struts 支持2. 编 辑ApplicationResource.properties文 件 , 在 其
13、中 加 入 要 使 用 国 际 化 的 信 息 , 例 如 :lable.welcome.china=Welcome! 3. 创建英文资源文件ApplicationResource_en.properites 4. 创建临时中文资源文件ApplicationResource_temp.properites 例如: lable.welcom.china=中国欢迎您 ! 5. 对临时中文资源文件进行编码转换。可以使用myeclipse 的插件 ,也可以在 dos 下执行 : native2ascii -encoding gb2312 ApplicationResource_temp.propert
14、ies ApplicationResource_zh_CN.properties 6. 在 jsp中加入 struts 的 bean 标记库 显示信息: 可以在 struts-config.xml 文件中定义多个资源包,而每个资源包可使用key属性指定包的名称。5. struts2.0 的常用标签1. 往 action 里传值: 2. 显示标签property 用于输出指定值: 3. 用于从页面往action 中(user)的对象内传值: 4. 判断 用于在页面中判断指定数据 , . , . 5. 迭代用于将 List、Map、ArrayList 等集合进行循环遍历 6. URL地址标签, 用
15、于生成一个URL地址,可以通过URL标签指定的 子元素向 URL地址发送请求参数 7. 超链接一般和 标签一起使用,用于带多个参数。a href= 超链接 8. set 标签,用于将某个值放入指定的范围内。例如application,session 等。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 28 页 - - - - - - - - - 6. struts中怎么配置form-bean、action、tiles 此处配置的是struts1.2 的form-bean
16、配置: (在配置文件struts-config.xml 中): name: 指定 form 的名字 ; type 指定 form 的类型:包名 +类名;action 配置: (在配置文件struts-config.xml 中) path:请求 Action 的名字 ; attribute :form 的名字 ,与 form-bean 中的 name 对应 ; input :输入页的路径 ; name:如果配置了attribute,name 不起作用 ,与 attribute 一样 ; parameter :使用分发Action 时,指定调用分发 Action 中的方法名 ; scope:Act
17、ion 的范围 ; type:Action 的类型:包名 +类名;tites 配置:1. 新建一个tiles-defs.xml 文件 ,并在其中做如下配置: 2. 在 web.xml 和 struts-config.xml 和 web.xml 中做相应配置:在 struts-config.xml 中配置如下:* * 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 28 页 - - - - - - - - - 在 web.xml 中配置如下:* definitions-co
18、nfig /WEB-INF/tiles-defs.xml * 3. 调用 Tiles 组件Tiles 组件是通过Struts Action 来调用的,在struts-config.xml 中做如下 action 配置:* * 7. logic标签有哪几个?此标签库可以分为三种类型:条件、循环、转发/重定向。1. 条件类型(没标注的都比较简单) logic:empty, logic:notEmpty; logic:equal, logic:notEqual, logic:lessThan, logic:greaterThan,logic:lessEqual, logic:greaterEqual
19、; logic:present, logic:notPresent; logic:match, logic:notMatch; 比较两字符串是否相等,可以比较字符串的开始的、结尾的或其中的某个部分。 location 属性:指定从某个位置开始进行比较。2. 循环类型logic:iterate 3. 转发/重定向类型logic:forward 和 logic:redirect logic:forward 标签和 jsp:forward 标签相似,但它可以使用global forward 中的一个ActionForward 例如: - 与上面相关的global forward 中的代码: logi
20、c:redirect 标签和上面的标签类似,但它默认调用的方法是response.sendRedirect(),取代了上面的requestDispatcher.forward() 。最大的不同是它支持所有html:link 标签的属性,所以你能够指定 request 参数: 在 MVC框架下, 不推荐使用这两个标签,你应该是从controller 中选择下一个view,而不是从 view中选择 .在 Jsp页面中不要过多的使用logic 标签。8. action 是单实例还是多实例,为什么?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
21、 - - 名师精心整理 - - - - - - - 第 5 页,共 28 页 - - - - - - - - - action 是单实例的。当多个用户访问一个请求的时候,服务器内存中只有一个与之对应的action 类对象。因为当服务器第一次加载struts 的配置文件的时候,创建了一个Action 后,每发送一个请求,服务器都会先去检索相应的范围内(request,session)是否存在这样一个 action 实例 ,如果存在 ,则使用这个实例 ,如果不存在 ,则创建一个action 实例。9. dispatchAction是用什么技术实现的?DispatchAction是 Aciton 的
22、一个子类 ,主要解决了一个请求处理多个功能的问题普通的 Action 你只能写 execute 方法来处理业务,而想用这一个Action 处理多个任务 ,你必须要请求参数进行解析 ,用 if 语句块来处理举一个小例子 : 有如下一个url: http:/localhost:8080/myApp/addUserAction.do 如果你处理这个url 的是一个普通的Action,那么就只能在execute里面执行插入的相关操作,如果换成一下 url: http:/localhost:8080/myApp/UserAction.do?method=add 你 就 应 该 根 据method对 象
23、的 值 来 执 行相 应 的 操 作 , 如 再 有一 个 路 径http:/localhost:8080/myApp/UserAction.do?method=delete 这个还可以使用那个Action 来处理的 ,只是多判断一下而已. 如果你用 DispatchAction,就简单多了 ,所以 dispatchAction 还是用的 Action 的这么一个技术。10.struts2.0的 mvc模式?与 struts1.0 的区别 ? struts2 的 mvc 模式:当用户在页面提交用户请求时,该请求需要提交给struts2 的控制器处理。struts2 的控制器根据处理结果, 决定
24、将哪个页面呈现给客户端。与 struts1 最大的不同是: struts2 的控制器。 struts2 的控制器不再像struts1 的控制器 ,需要继承一个 Action 父类 ,甚至可以无需实现11.STRUTS 的配置文件是什么? struts-config.xml 12.请写出 Struts的工作原理。13.struts的处理流程。一、 ActionServlet的初始化ActionServlet作为 Struts组件的前端控制器,由于web.xml 的相应配置:0 在应用一加载时即会被实例化并调用其init方法, init方法所做的主要工作有二:1. 加载 struts配置文件,并创
25、建用于封装配置信息的ModuleConfig对象2. 加载资源文件,并创建用于封装资源文件的MessageResources 对象需要注意两点:如果web.xml 有多模块配置,将创建多个ModuleConfig 对象和 MessageResources 对象分别名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 28 页 - - - - - - - - - 用于封装各个模块的struts配置文件和资源文件。针对各个模块所创建的ModuleConfig对象和 MessageR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年SSH面试题汇总 2022 SSH 试题 汇总
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内