struts2面试题
struts2 的工作原理图:
一个请求在Struts2框架中的处理分为以下几个步骤:
1.客户端发出一个指向servlet容器的请求(tomcat);
2.这个请求会经过图中的几个过滤器,最后会到达FilterDispatcher过滤器。
3.过滤器FilterDispatcher是struts2框架的心脏,在处理用户请求时,它和请求一起相互配合访问struts2的底层框架结构。
在web容器启动时,struts2框架会自动加载配置文件里相关参数,并转换成相应的类。
如:ConfigurationManager、ActionMapper和ObjectFactory。
ConfigurationManager 存有配置文件的一些基本信息,ActionMapper存有action的配置信息。
在请求过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。
过滤器会通过询问ActionMapper类来查找请求中需要用到的Action。
4.如果找到需要调用的Action,过滤器会把请求的处理交给ActionProxy。
ActionProxy为Action 的代理对象。
ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类。
5.ActionProxy创建一个ActionInvocation的实例。
ActionInvocation在ActionProxy层之下,它表示了Action的执行状态,或者说它控制的Action的执行步骤。
它持有Action实例和所有的Interceptor。
6.ActionInvocation实例使用命名模式来调用,1. ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。
2. 通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。
在调用Action的过程前后,涉及到相关拦截器(intercepetor)的调用。
7. 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。
在表示的过程中可以使用Struts2 框架中继承的标签。
为什么要用struts2?
JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。
但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。
struts的设计模式,struts的对象及作用?
MVC模式(Model-View-Controller 模型-视图-控制器)
Struts主要担当了控制器的作用
Struts2的对象:Actionform,ActionMapping:ActionError,Validatorform
ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。
因此应保证ActionForm的参数,与表单域的名字相同。
struts2文件上传实现原理?
Struts 2是通过Commons FileUpload文件上传。
Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器将文件绑定到Action的实例中。
从而我们就能够以本地文件方式的操作浏览器上传的文件。
什么是Struts2拦截器?
1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.
2. 拦截器栈(Interceptor Stack)。
Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。
在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。
实现Struts2拦截器原理是什么?
Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。
Struts2的核心技术?
FilterDispatcher核心控制器执行以下操作:
(1)读取静态数据信息
(2)决定需要转发或者导航的Action配置
(3)创建Action的Context
(4)创建Action代理
(5)内存清理和性能优化拦截器:
Interceptor拦截器本身是一个普通的Java对象,它能动态拦截Action调用,在Action 执行前后执行拦截器本身提供的
各种个样的Web项目需求。
也可以阻止Action的执行,同时也可以提取Action中可以复用的部分。
(1)在Action调用之前提供系统处理流程逻辑控制
(2)和Action交互时,提供Ation执行时的一些初始信息
(3)在Action结束后,一些事后的处理流程逻辑
(4)修改Action中返回的Result信息
(5)捕获异常
值栈是用ognl表达式存值的最初地方,即一个存值的栈.所有核心组件都以某种方式与之进行交互,它提供对上下文信息和执行环境中元素的访问机制。
国外的一些struts面试题(4)
国外的一些struts面试题(4)问题:国外的一些struts面试题(4)回答:Question: Can I setup Apache Struts to use multiple configuration filesAnswer: Yes Struts can use multiple configuration files. Here is the configuration example:bankingorg.apache.struts.action.ActionServletconfig/WEB-INF/struts-config.xml,/WEB-INF/struts-authentication.xml,/WEB-INF/struts-help.xml1Question: What are the disadvantages of StrutsAnswer: Struts is very robust framework and is being used extensively in the industry. But there are some disadvantages of the Struts:a) High Learning CurveStruts requires lot of efforts to learn and master it. For any small project less experience developers could spend moretime on learning the Struts.b) Harder to learnStruts are harder to learn, benchmark and optimize.Question: What is Struts FlowAnswer: Struts Flow is a port of Cocoon s Control Flow to Struts to allow complex workflow, like multi-form wizards, to be easily implemented using continuations-capable JavaScript. It provides the ability to describe the order of Web pages that have to be sent to the client, at any given point in time in an application. The code is based on a proof-of-concept Dave Johnson put together to show how the Control Flow could be extracted from Cocoon. (Ref: /struts-flow/index.html ) Question: What are the difference between andAnswer: : This tag is used to output locale-specific text (from the properties files) from a MessageResources bundle.: This tag is used to output property values from a bean. is a commonly used tag which enables the programmers to easily present the data.Question: What is LookupDispatchActionAnswer: An abstract Action that dispatches to the subclass mapped execute method. This is useful in cases where anHTML form has multiple submit buttons with the same name. The button name is specified by the parameter property of the corresponding ActionMapping. (Ref. /1.2.7/api/org/apache/struts/actions/L ookupDispatchAction.html).Question: What are the components of StrutsAnswer: Struts is based on the MVC design pattern. Struts components can be categories into Model, View and Controller.Model: Components like business logic / business processes and data are the part of Model.View: JSP, HTML etc. are part of ViewController: Action Servlet of Struts is part of Controller components which works as front controller to handle all the requests.Question: What are Tag Libraries provided with StrutsAnswer: Struts provides a number of tag libraries that helps to create view components easily. These tag libraries are:a) Bean Tags: Bean Tags are used to access the beans and their properties.b) HTML T ags: HTML Tags provides tags for creating the view components like forms, buttons, etc..c) Logic Tags: Logic Tags provides presentation logics that eliminate the need for scriptlets.d) Nested Tags: Nested Tags helps to work with the nested context.Question: What are the core classes of the Struts FrameworkAnswer: Core classes of Struts Framework are ActionForm, Action, ActionMapping, ActionForward, ActionServlet etc.Question: What are difference between ActionErrors and ActionMessageAnswer: ActionMessage: A class that encapsulates messages. Messages can be either global or they are specific to a particular bean property.Each individual message is described by an ActionMessage object, which contains a message key (to be looked up in an appropriate message resources database), and up to four placeholder arguments used for parametric substitution in the resulting message.ActionErrors: A class that encapsulates the error messages being reported by the validate() method of an ActionForm. Validation errors are either global to the entire ActionForm bean they are associated with, or they are specific to aparticular bean property (and, therefore, a particular input field on the corresponding form).Question: How you will handle exceptions in StrutsAnswer: In Struts you can handle the exceptions in two ways:a) Declarative Exception Handling: You can either define global exception handling tags in your struts-config.xml or define the exception handling tags within .. tag.Example:key= database.error.duplicatepath= /UserExists.jsptype= mybank.account.DuplicateUserException />b) Programmatic Exception Handling: Here you can use try catch block to handle the exception.。
JAVAWEB面试题(含答案)
1、jsp和servlet的区别、共同点、各自应用的范围??JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。
JSP编译后是“类servlet”。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑。
在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.2、cookie和session的作用、区别、应用范围,session的工作原理Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。
存储的数据量大,安全性高。
占用服务端的内存资源。
3、jstl是什么?优点有哪些??JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml和sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。
优点有:最大程序地提高了WEB应用在各应用服务器在应用程序服务器之间提供了一致的接口,最大程序地提高了1、在应用程序服务器之间提供了一致的接口,之间的移植。
2、简化了JSP和WEB应用程序的开发。
3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet 代码的程序。
在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。
4、允许JSP设计工具与WEB应用程序开发的进一步集成。
相信不久就会有支持JSTL的IDE 开发工具出现。
4、j2ee的优越性主要表现在哪些方面?MVC模式a、J2EE基于JAVA技术,与平台无关b、J2EE拥有开放标准,许多大型公司实现了对该规范支持的应用服务器。
卓望团队JAVA招聘面试题090708(金蝶外包专用)
1 基础知识:请将答案写在答题卡上1、熟悉Struts 中的一些关键类吗?写出Struts 1 , Struts 2 的工作流程。
2、写一个函数如下要求:有一个整型参数,有一个整型返回类型,给一个数字6789(整型),返回9876(整型)?(注意整数为0,和负数的情况,反转后超过整数最大值的情况)3、Java 类中的变量访问修饰符有哪几种?它们有什么区别?4、JA V A中的排序,系统内置的哪个类提供了排序的方法,排序可以实现哪个接口?5、不用new关键词创建类的实例,你有那些方式可实现。
6、简单描述AJAX技术原理;7、请描述HashMap如何实现;8、String 和StringBuilder 有什么区别?为什么StringBuilder 的性能更高一些?请从两者存储数据的方式上回答。
;2 数据库:1、Oracle中有什么建表方式,及在建表过程中要注意一些什么问题?2、表结构是(姓名,年级,课程,分数),如何查询(姓名,年级,课程,最大分数)3、使用嵌套语句查询和外连接查询,哪个速度更快?请自定义表结构并写出这两种SQL语句。
4、怎样建索引及索引的分类,索引有什么好处,要注意一些什么问题,如会不会影响其他表?5、SQL 语句中有哪几种连接方式?这几种连接方式有什么区别?给出两张表,写出这几种连接后数据的行数是多少?6、请尽自己能力写几条能代表你自己SQL水平的复杂SQL语句。
7、在开发过程中遇到过数据库锁吗?怎样解锁?8、将老数据库中的数据移植到新的数据库中,应该考虑哪些问题?9、delete from table 与truncate table的区别?10某表中有千万条数据记录,此表在软件开发过程中,有哪些重要的注意事项。
3 其他:1、请画出自己做过的一个项目的系统架构,并作必要的说明。
2、请简要描述你对面向对象编程的理解。
3、项目质量保证有哪些措施。
1.简述逻辑操作与条件操作的区别.区别主要答两点: a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型b.逻辑操作不会产生短路2.java中实现多态的机制是什么?方法的重写和重载3.作用域public,private,protected以及不写时的区别?4.extends与implements有什么不同?5.简述struts的工作流程6. 抽象类和接口的区别7.说一下servlet的生命周期8.HttpServletResponse.sendRedirect 方法和RequestDispatcher.forward方法有什么区别Class.forName作用是?有什么作用?Socket如何获得本地的IP地址Scoket中有哪几种连接方式,区别是??编写一种排序11.文件和目录(I/O)操作,如何列出某个目录下的所有文件。
江苏省电信子公司鸿信公司笔试 面试题
2013年江苏鸿信面试题1.Android中Handler基本概念和使用:在Android中进行与UI通信的开发时,经常会使用Handler对象来控制UI程序的界面,它的作用可以理解为与其他线程协同工作,接收其他线程的消息并通过接收到的消息更新UI界面。
当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉。
Handler就是把这些功能放到一个单独的线程里执行,与Activity互不影响。
Handler在android里负责发送和处理消息。
它的主要用途有:1)按计划发送消息或执行某个Runnanble(使用POST方法);2)把其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程)需要注意的是,在UI线程中启动Handler对象时,Handler与调用者Activity处于同一线程,也就是通常所说的UI线程。
每个Handler实例都会绑定到创建它的线程中(一般是位于主线程)。
2.实现多线程时,有两种方法,实现Thread类和Runnable接口,但是他们的区别在哪呢? 答案:抽象类和接口的区别如下:①在类来继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法。
②在接口中无成员变量,而抽象类中可有成员变量。
在Java中引进接口主要是为了解决多继承的问题。
3.struts2的工作流程?请求在Struts2框架中的处理大概分为以下几个步骤:1 客户端发送一个请求;2 这个请求经过一系列的过滤器(Filter),询问ActionMapper来决定这个请求是否需要调用某个Action3 如果ActionMapper决定需要调用某个Action,过滤器把请求的处理交给代理(ActionProxy)4 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action 类5.一旦Action执行完毕,在struts.xml中的配置找到对应的返回结果。
java技术综合面试题目(含参考答案)
目录1 Struts框架 (2)2 Spring框架 (8)3 AJAX技术 (14)4 Hibernate框架 (17)5 框架综合运用 (24)6 J2EE初级题目 (27)7 J2SE初级题目 (34)1Struts框架1.Struts框架的整体运行流程在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象,例如:Action的映射信息存放在ActionMapping对象中.当ActionServlet接收到一个客户请求时,将执行如下流程.A.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;B.如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;C.根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm 的validate()方法;D.如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象,就表示表单验证成功;E. ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;F. Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件;G. ActionForward对象指向JSP组件生成动态网页,返回给客户2.ActionServlet在Struts框架中的总体作用功能是什么A.在web应用启动时ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象,例如:Action的映射信息存放在ActionMapping对象中。
Struts2面试题分析_尚硅谷_佟刚_
Struts2 面试题分析1. 简述 Struts2 的工作流程:①. 请求发送给 StrutsPrepareAndExecuteFilter②. StrutsPrepareAndExecuteFilter 判定该请求是否是一个 Struts2 请求③. 若该请求是一个 Struts2 请求,则 StrutsPrepareAndExecuteFilter 把请求的处理交给 ActionProxy④. ActionProxy 创建一个 ActionInvocation 的实例,并进行初始化⑤. ActionInvocation 实例在调用 Action 的过程前后,涉及到相关拦截器(Intercepter)的调用。
⑥. Action 执行完毕,ActionInvocation 负责根据 struts.xml 中的配置找到对应的返回结果。
调用结果的 execute 方法,渲染结果。
⑦. 执行各个拦截器 invocation.invoke() 之后的代码⑧. 把结果发送到客户端2. Struts2 拦截器 和 过滤器 的区别:①、过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器。
②、Struts2 拦截器只能对 Action 请求起作用,而过滤器则可以对几乎所有请求起作用。
③、拦截器可以访问 Action 上下文(ActionContext)、值栈里的对象(ValueStack),而过滤器不能.④、在 Action 的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。
3. 为什么要使用 Struts2 & Struts2 的优点:①. 基于 MVC 架构,框架结构清晰。
②. 使用 OGNL: OGNL 可以快捷的访问值栈中的数据、调用值栈中对象的方法③. 拦截器: Struts2 的拦截器是一个 Action 级别的 AOP, Struts2 中的许多特性都是通过拦截器来实现的, 例如异常处理,文件上传,验证等。
struts2常见面试题
struts2常见面试题Introduction:Struts2是一种用于开发Java Web应用程序的开源Web应用框架。
在软件工程领域,Struts2常常是面试中的热门话题。
本文将介绍一些常见的Struts2面试题,并提供详细解答和示例。
Question 1: 什么是Struts2框架?它的主要特点是什么?Struts2是一个基于MVC设计模式的Web应用框架。
它通过集成多个核心组件(如拦截器、过滤器、表单验证等)提供了一套丰富的功能,用于简化开发和管理Java Web应用程序。
Struts2的主要特点包括:1. 松耦合:Struts2使用基于配置的方式来管理组件之间的依赖关系,降低了模块之间的耦合。
2. 灵活性:开发人员可以根据自己的需求进行扩展和定制,以适应不同的项目需求。
3. 可测试性:Struts2的组件松耦合特点使得单元测试变得容易,并且可以方便地模拟用户请求进行测试。
Question 2: Struts2的核心组件有哪些?Struts2的核心组件包括:1. Action:处理用户请求的核心组件,负责接收请求并执行相应的业务逻辑。
2. Interceptor:用于对请求进行预处理和后处理的拦截器组件。
3. Result:负责生成响应结果,可以是页面视图或其他格式的数据(如JSON、XML等)。
4. FilterDispatcher:负责将请求分发给合适的Action处理。
5. ValueStack:用于存储Action处理的结果数据,支持OGNL表达式以便于数据的访问和操作。
Question 3: 如何定义一个Struts2的Action?在Struts2中,可以通过以下几种方式来定义一个Action:1. 实现Action接口:通过实现Action接口,并提供相应的业务方法来处理请求。
2. 继承ActionSupport类:ActionSupport是一个提供了一些方便方法的抽象类,可以直接继承并实现自己的业务逻辑。
struts2面试题
struts2面试题Struts2是一个基于Java开发的Web应用程序框架,被广泛应用于企业级Java应用开发中。
在面试中,面试官可能会提出一些关于Struts2的问题,以评估应聘者的技术水平。
下面是一些常见的Struts2面试题及其详细答案,希望对你在面试中有所帮助。
1. 什么是Struts2?Struts2是一个轻量级的、基于MVC模式的Web应用程序框架。
它采用Java Servlet API和JavaServer Pages (JSP)技术,并提供了一种简单易用的方式来开发可维护和可扩展的Web应用程序。
2. Struts2的主要特性是什么?Struts2的主要特性包括:- MVC架构:将应用程序分为模型、视图和控制器,使开发更容易管理和扩展。
- 拦截器:通过拦截器可以在请求处理的各个阶段添加自定义的逻辑。
- 标签库:提供了丰富的标签库,简化了页面开发。
- 表单验证:提供了灵活且强大的表单验证机制,可以验证用户输入的数据。
- 国际化支持:支持多语言和本地化。
- 配置简单:通过配置文件来管理应用程序的行为。
3. Struts2的工作原理是什么?Struts2的工作原理如下:1) 客户端发送HTTP请求到服务器。
2) 服务器将请求交给Struts2的过滤器(Filter)。
3) 过滤器通过配置文件找到对应的Action,并调用相应的方法。
4) Action处理请求,并返回一个结果页面的名称或一个结果对象。
5) 结果页面的名称通过配置文件进行映射,服务器将其发送给客户端。
4. 什么是Struts2中的Action类?Action类是Struts2框架中的核心组件,用于处理Web请求。
一个Action类对应一个业务功能,其包含了要执行的方法和数据。
它负责接收请求、处理业务逻辑、将结果返回给前端页面。
5. Struts2中的拦截器是什么?有哪些内置的拦截器?拦截器是Struts2中的组件,用于在请求处理的各个阶段添加自定义的逻辑。
软件开发框架Struts2标签库习题与答案
一、多选题1.Struts 框架提供了哪几种标签库()。
A.HTML 标签库B.Bean 标签库C.Logic 标签库D.Template 标签库E.Nested 标签库2.下列哪个Strtus 标签能生成HTML 超链接<a> 元素()。
A.<html:html> 标签B.<html:base> 标签C.<html:img> 标签D.<html:link> 标签E.<html:rewrite> 标签3.以下哪些Struts 标签()能生成与HTML 表单相关的元素。
A.<html:link> 标签B.<html:text> 标签C.<html:radio> 标签D.<html:multibox> 标签E.<html:select> 标签4.下面哪些标签()能创建HTML 表单复选框控件。
A.<html:checkbox> 标签B.<html:radio> 标签C.<html:multibox> 标签D.<html:select> 标签E.<html:cancel> 标签5.使用下列哪个标签()能在页面输出在验证表单时发生的错误。
A.<html:multibox> 标签B.<html:errors> 标签C.<html:messages> 标签D.<html:error> 标签E.<html:cancel> 标签6.Struts Bean 标签库能提供下列哪些服务()。
A.访问HTTP 请求报头信息B.访问JSP 隐含对象C. 访问 Web 应用资源D. 定义 JavaBeanE. 输出 JavaBean7. 下列哪个标签()能访问 JSP 隐含对象。
STRUTS常见面试题_java常见面试题
STRUTS常见面试题_java常见面试题struts常见面试题篇11.简述struts框架的初始化流程。
答案:对于使用struts框架的web应用领域,在web应用领域启动时就可以读取并初始化控制器actionservletactionservlet从struts-config.xml文件中读取配置信息,把它们存放到actionmappings对象中。
在strutsframework中,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组件。
