java-ssh面试题
Struts 1. 谈谈你对 mvc 的理解MVC 是 Model—View—Controler 的简称。即模型—视图—控制器。MVC 是一种设计模式,它强制性 的把应用程序的输入、处理和输出分开。MVC 中的模型、视图、控制器它们分别担负着不同的任务。 模型: 模型表示业务数据和业务处理。相当于 JavaBean 。一个模型能为多个视图提供数据。这提高了 应用程序的重用性视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不 进行任何业务逻辑处理。相当于 jsp控制器: 当用户单击 Web 页面中的提交按钮时, 控制器接受请求并调用相应的模型去处理请求。 然后根据处理的结果调用相应的视图来显示处理的结果。MVC 的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控 制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。 2. 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 被传递给 cut 方法。struts2.0 Action 不依赖于容器,允许 Action 脱离容器单独测试。如果需要,Struts2 Action 仍然可以访 问初始的 Request 和 Response。但是,其他的元素减少或者消除了直接访问 HttpServletRequest 和 HttpServletResponse 的必要性。d、可测性测试 struts1.2 Action 的一个主要问题是 cute 方法暴露了 Servlet API(这使得测试要依赖于容器)。 一个第三方扩展:struts TestCase提供了一套 struts1.2 的模拟对象来进行测试。Struts2.0 Action 可以通过初始化、设置属性、调用方法来测试,“依赖注入”也使得测试更容易。 3. 项目中为什么使用 SSH1. 使用 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),等等。 4. struts 如何实现国际化 以下以两国语言( 中文,英文) 为例:1. 在工程中加入 Struts 支持2. 编辑 ApplicationResource.properties 文件, 在其中加入要使用国际化的信息, 例如: lable.welcome.china=Welcome!!!3. 创建英文资源文件 ApplicationResource_en.properites4. 创建临时中文资源文件 ApplicationResource_temp.properites 例如:lable.welcom.china=中国欢迎您!5. 对临时中文资源文件进行编码转换。可以使用 myeclipse 的插件,也可以在 dos 下执行: native2ascii -encoding gb2312 ApplicationResource_temp.properties ApplicationResource_zh_CN.properties6. 在 jsp 中加入 struts 的 bean 标记库 显示信息: 可以在 struts-config.xml 文件中定义多个资源包,而每个资源包可使用 key 属性指定包的名称。 5. struts2.0 的常用标签1. 往 action 里传值: 2. 显示标签 property 用于输出指定值:3. 用于从页面往 action 中(user)的对象内传值: 4. 判断 用于在页面中判断指定数据 …. …. 5. 迭代用于将 List、Map、ArrayList 等集合进行循环遍历 6. URL 地址标签,用于生成一个 URL 地址,可以通过 URL 标签指定的 子元素向 URL 地址发送请求参数 7. 超链接 一般和标签一起使用,用于带多个参数。 “>超链接8. set 标签,用于将某个值放入指定的范围内。例如 application,session 等。 6. action 是单实例还是多实例,为什么?action 是单实例的。当多个用户访问一个请求的时候,服务器内存中只有一个与之对应的 action 类对 象。因为当服务器第一次加载 struts 的配置文件的时候,创建了一个 Action 后,每发送一个请求,服务器都会 先去检索相应的范围内(request,session)是否存在这样一个 action 实例,如果存在, 则使用这个实例,如果不存在,则创建一个 action 实例。 7. struts2.0 的 mvc 模式?与 struts1.0 的区别? struts2 的 mvc 模式:当用户在页面提交用户请求时, 该请求需要提交给 struts2 的控制器处理。struts2