struts面试题
国外的一些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.。
卓望团队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)操作,如何列出某个目录下的所有文件。
面试题库(包含答案)
面试题库Java面试题第一,谈谈final, finally, finalize的区别。
最常被问到。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?第三,Static Nested Class 和Inner Class的不同,说得越多越好(面试题有的很笼统)。
第四,&和&&的区别。
这个问得很少。
第五,HashMap和Hashtable的区别。
常问。
第六,Collection 和Collections的区别。
你千万别说一个是单数一个是复数。
第七,什么时候用assert。
API级的技术人员有可能会问这个。
第八,GC是什么? 为什么要有GC?基础。
第九,String s = new String(xyz);创建了几个String Object?第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?面试题都是很变态的,要做好受虐的准备。
第十二,sleep() 和wait() 有什么区别?搞线程的最爱。
第十三,Java有没有goto?很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。
11 &和&&的区别。
&是位运算符。
&&是布尔逻辑运算符。
关键词:JA V A面试题本文地址:/post/2007081603.html内容正文:11 &和&&的区别。
&是位运算符。
&&是布尔逻辑运算符。
12 HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。
Struts的几个面试题收集
Struts的几个面试题收集1 说说Struts的优点、缺点Struts是开源软件,使开发者能更深入的了解其内部实现机制。
Struts 优点:业界标准(很多成功案例),学习资源丰富。
Struts的优点主要集中体现在两个方面:Taglib和页面导航。
a、利用Struts提供的taglib可以大大节约开发时间。
b、维护扩展比较方便。
通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。
c、表现与逻辑分离d、表单验证解决了请求数据的验证问题,增强了系统健壮性。
e、便于团队开发Struts缺点:a、大量的使用标签,对于初学者难度较大。
b、ActionForms使用不便、无法进行单元测试(StrutsTestCase 只能用于集成)Struts提供了几个标签库都是什么标签库Struts提供了五个标签库,即:HTML、Bean、Logic、Template 和Nested。
HTML 标签用来创建能够和Struts 框架和其他相应的HTML标签交互的HTML 输入表单Bean 标签在访问JavaBeans 及其属性,以及定义一个新的bean 时使用Logic 标签管理条件产生的输出和对象集产生的循环Template 标签随着Tiles框架包的出现,此标记已开始减少使用Nested 标签增强对其他的Struts 标签的嵌套使用的能力2 分析一下struts是如何实现MVC的。
Struts采用jsp作为MVC的视图,由ActionServlet具体指定的action动作类作为控制器即MVC中的C,负责视图与模型之间的交互。
控制器的每个入口点都由名为struts-config.xml的配置文件设置。
该文件把来自视图的请求映射为特定的JAVA类以进行相应的处理,控制器还指定下一个视图的位置。
Struts中的模型主要指的就是javabean,它是模型的代表,主要封装数据和业务逻辑。
3 说说Struts的处理流程:控制器进行初始化工作,读取配置文件,为不同的Struts模块初始化相应的ModuleConfig对象。
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 中的许多特性都是通过拦截器来实现的, 例如异常处理,文件上传,验证等。
软件开发面试题及答案
1、请讲一下struts的流程答:用户提交表单Struts根据表单的请求路径,在web.xml中指定servlet,并根据<init-param>元素读取servlet的配置信息ActionServlet或者扩展的ActionServlet接收请求,并根据请求的路径来判断调用哪一个action,即action元素中的path路径,再根据action元素中的type属性,用来指定处理请求的逻辑action(属于控制器部分),再根据其name属性来绑定form-bean,即创建一个HelloForm对象,并把用户提交的表单数据传给ActionForm对象,这个对象保存在scope设置的范围内。
如果action的validate属性设置为true,则ActonServlet就调用HelloForm 对象的validate()方法,对表单进行验证。
ActionServlet查找action是否存在,如果不存在就创建一个实例,然后调用HelloAction的execute()方法。
通过execute()方法中的逻辑验证后,执行相关的业务逻辑,最后调用ActionMapping.findForward(“SayHello”)方法。
其中的参数SayHello与struts-config.xml文件中的action元素的forword属性值对应,则就将请求转发到“hello.jsp”页面,结束。
2、一条SQL语句的执行顺序是怎么样的?答:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;6、计算所有的表达式;7、使用order by对结果集进行排序。
3、CMM是什么?CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。
软件工程师面试题(含答案)
软件工程师面试题(含答案)一、MVC设计模式及其优缺点,结合Struts框架讨论其在Web应用中的使用MVC是一种应用观察者模式的框架模式,包括三个主要组成部分:模型、视图和控制器。
模型是业务处理层,独立于表现层;视图通过客户端数据类型显示数据,并回显模型层的执行结果;控制器是视图层和模型层之间的桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图。
MVC的优点是分离了应用程序的关注点,使得应用程序更易于维护和扩展。
缺点是增加了开发复杂度,需要更多的代码和设计时间。
在Web应用中,常用的MVC实现模式是Servlet-centric,即使用JSP、Servlet和JavaBean实现。
其中,JSP负责显示和收集数据,Servlet连接视图和模型,将视图层数据发送给模型层,JavaBean分为业务类和数据实体,业务类处理业务数据,数据实体承载数据。
Struts是一个Web应用程序框架,使用MVC实现模式二,即以控制器为核心。
它提供了一些组件,包括:Model:Struts没有提供model类,开发者需要自行提供商业逻辑的JavaBean或EJB形式。
View:n form创建form bean,用于在控制器和视图之间传输数据。
此外,Struts还提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序。
应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。
nServlet,n。
n需要符合Struts规范,并在struts-config.xml中进行配置,n form,n控制器。
n控制器提供了model的逻辑接口。
WebService是基于SOA架构的,不依赖于语言和平台,可实现不同语言间的相互调用,进行基于Http协议的网络应用交互。
WebService遵守WSDL/SOAP规范,实现不同语言间的调用。
Web Service = WSDL + SOAP + UDDI(webservice的注册)。
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中的组件,用于在请求处理的各个阶段添加自定义的逻辑。
SSH框架面试题(自己+别人的试题)
(问答题+选择题(在55页))Java工程师(程序员)面题Struts,Spring,Hibernate三大框架1.Hibernate工作原理及为什么要用?原理:1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Session 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-many4.Struts1流程:1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被ActionServlet接收。
3、根据struts-config.xml配置,ActionServlet先将请求中的参数填充到ActionForm中,然后ActionServlet再将请求发送到Action 进行处理。
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组件。
Struts2考试题分析
题目1以下不属于Struts2中result的type属性()A.actionB.redirectC.redirectActionD.dispatcher题目2下列有关拦截器说法错误的是?A。
struts通过拦截器完成执行action请求处理方法前一系列操作。
例如:数据封装、文件上传、数据校验等B。
在struts中,直接访问jsp页面,struts将使用默认拦截器栈处理当前请求。
C。
在执行action时,struts将执行若干拦截器1、2、3,执行action完成后,将继续执行拦截器3、2、1D。
默认情况,在一个action没有配置拦截器的引用,说明当前action将不使用拦截器题目3以下哪些是Action接口提供的返回值?A。
successB.noneC。
errorD.input题目4如果要实现struts2的数据检验功能A普通的Action类可以实现B继承自Action接口的可以实现C继承自ActionSupport类可以实现D继承自ActionValidate类可以实现题目5struts2默认的处理结果类型是:A。
dispatcherB。
redirectC.chainD.forward题目6在值栈的上下文Context中,存在一些固定的key表示不同的对象,以下描述正确的是?A。
request,表示request作用域的数据B。
session,表示session作用域的数据C.application,表示application作用域的数据D。
parameters,表示请求参数的所有数据题目7以下属于struts2配置文件中的配置元素是:()多选)A.〈package〉B.<action〉C.<form—beans〉D.〈action—mappings>题目8有关值栈 context Map栈数据操作描述正确的是?A.ActionContext.getContext()。
put(key,value)直接对context进行操作B。
struts2面试题(自己总结)
Struts2面试题1、struts2工作流程Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。
核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。
业务控制器Action和业务逻辑组件是需要用户来自己实现的。
用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。
Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。
基本简要流程如下:1 、客户端初始化一个指向Servlet容器的请求;2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3 、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
架构师面试题参考
架构师面试题参考架构师面试题参考一、牛人出的面试题如下:1. struts,spring,hibernate这样的开源框架,他们的历史局限性在哪里?在何种状况下会不适合用这些框架?2. 假如要设计一个搜寻引擎,像google那样只有两个页面,要求性能最大化,web方面应当如何设计?(不需要考虑搜寻的规律)3. 假如要设计一个用于小型路由器中的web系统,应当如何来设计?4. 请评价下你所熟识的web框架的可测试性如何,struts,springMVC,webwork或其他均可.在什么样的条件下才能对web系统引入自动化测试?请描述一套完备的面对web系统的自动化测试框架所应当具有的特性.5. 企业级应用有哪些特别要求?在何种状况下我们不需要考虑这些要求?6. 你们从前的研发流程是怎样的?假如由你来设计研发流程,是否能大幅提高生产力和开发质量?假如能,那体现在哪些方面?假如不能,瓶颈在哪里?二、以下似乎是另一个牛人跟帖给的一个自己的答案,内容如下:1. struts,spring,hibernate这样的开源框架,他们的历史局限性在哪里?在何种状况下会不适合用这些框架?struts是以恳求回答方式为基础的.ajax,flash等富客户端越来越多了.....spring是由于java的静态类型限制,等java可以支持动态方法添加之后.....hibernate是由于数据库都是关系型的,等数据库面对了对象之后.....综上所述...ssh蹦达不了几天了.2. 假如要设计一个搜寻引擎,像google那样只有两个页面,要求性能最大化,web方面应当如何设计?(不需要考虑搜寻的规律)性能:1客户端:js的写法,数据排列,不同扫瞄器区分.2服务器:规律,计算,缓存,削减I/O,提高命中3传输:带宽,缓存,异步,进度条,并发,集群,数据压缩.我认为最主要的性能是人的体验,其它都是可以放到其次位去的.3. 假如要设计一个用于小型路由器中的web系统,应当如何来设计?使用不需要并发多线程的简洁文件服务器提交后直接改文件.不使用常规特别捕获方式(由于选择性少所以根本不使用特别,只供应软硬的`复位)4. 请评价下你所熟识的web框架的可测试性如何,struts,springMVC,webwork或其他均可.在什么样的条件下才能对web系统引入自动化测试?请描述一套完备的面对web系统的自动化测试框架所应当具有的特性.由于容器的限制所以:web,spring,hibernate都不是很好测试.由于大多数web是以人的体验为主的.主观概念变成代码代价过高由于页面生成工具没有足够的测试支持.所以写出的代码特别难以程序化自动化现有的seleniumIDE还不是很稳定假如把html,js,css分开,页面内容以json或xml来传输,页面的规律由js二次绚染成型那么测试成本会下降许多.....(开发成本提高2到5倍)5. 企业级应用有哪些特别要求?在何种状况下我们不需要考虑这些要求?,性能,扩展性,7*24小时,性能问题在消失性能问题之前不考虑扩展性问题在签定长期维护,二期开发合同之前不考虑7*24工作系统一般不考虑...开发中本身就是6. 你们从前的研发流程是怎样的?假如由你来设计研发流程,是否能大幅提高生产力和开发质量?假如能,那体现在哪些方面?假如不能,瓶颈在哪里?文档内容到此结束,欢迎大家下载、修改、丰富并分享给更多有需要的人。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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方法。
3Struts框架的数据验证可分为几种类型?表单验证(由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范围内,然后把请求转发到恰当的视图组件,视图组件通过<html:errors>标签把request范围内的ActionErrors对象中包含的错误消息显示出来,提示用户修改错误。
5在struts配置文件中action元素包含哪些属性和子元素?path属性:指定请求访问Action的路径type属性:指定Action的完整类名name属性:指定需要传递给Action的ActionForm Beanscope属性:指定ActionForm Bean的存放范围validate属性:指定是否执行表单验证input属性:指定当表单验证失败时的转发路径。
<action>元素还包含一个<forward>子元素,它定义了一个请求转发路径。
6.简单叙述ActionForm Bean的作用1、ActionForm Bean也是一种JavaBean,除了具有一些JavaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。
2、Struts框架利用ActionForm Bean来进行View组件和Controller组件之间表单数据的传递。
3、Struts框架把View组件接受到的用户输入的表单数据保存在ActionForm Bean中,把它传递给Controller组件,Controller组件可以对ActionForm Bean中的数据进行修改JSP文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。
7.叙述ActionForm执行步骤(1)检查Action的映射,确定Action中已经配置了对ActionForm的映射(2)根据name属性,查找form bean的配置信息(3)检查Action的formbean的使用范围,确定在此范围下,是否已经有此form bean的实例。
(4)假如当前范围下,已经存在了此form bean的实例,而是对当前请求来说,是同一种类型的话,那么就重用。
(5)否则,就重新构建一个form bean的实例(6)form bean的reset()方法备调用(7)调用对应的setter方法,对状态属性赋值(8)如果validatede的属性被设置为true,那么就调用form bean的validate()方法。
(9)如果validate()方法没有返回任何错误,控制器将ActionForm作为参数,传给Action实例的execute()方法并执行。
8.在下面的标签中哪些是struts标签A、<html:form>B、<html:text>C、<html:errors>D、<html:message>9、FormBean的作用答:FormBean是一种JAVABean,除了具有JAVABean的常规方法,还包含一些特殊方法,用于验证表单数据,以及将其属性重新设置为默认值。
FormBean用来进行View组件和Controller组件之间表单数据的传递。
View组件接收到用户输入的表单数据,保存在FormBean中,把它传递给Controller组件,Controller组件可以对FormBean中的数据进行修改。
10、Forward与Global-Forward的区别答:Forward是根据Action return的值找到对应的JSP页。
当多个Action共同return同一个值时,可将这个Forward元素写在Global-Forward中。
11.问题:在Struts应用的视图中包含哪些组件?(A) JSP(B)Servlet(C)ActionServlet(D)Action(E)代表业务逻辑或业务数据的JavaBean(F)EJB(G)客户化标签12问题:在Struts应用的控制器中包含哪些组件?(A)JSP(B) Servlet(C) ActionServlet(D) Action(E)代表业务逻辑或业务数据的JavaBean(F)EJB(G)客户化标签13.在struts配置文件中action元素包含哪些属性和子元素?path属性:指定请求访问Action的路径type属性:指定Action的完整类名name属性:指定需要传递给Action的ActionForm Beanscope属性:指定ActionForm Bean的存放范围validate属性:指定是否执行表单验证input属性:指定当表单验证失败时的转发路径。
<action>元素还包含一个<forward>子元素,它定义了一个请求转发路径。
14.问题:在Struts应用的模型中包含哪些组件?(A)JSP(B)Servlet(C)ActionServlet(D)Action(E)代表业务逻辑或业务数据的JavaBean(F) EJB(G)客户化标签15.问题:struts框架中,关于FormBean,下列说法正确的是:A FormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给ActionB在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证C用户每次提交表单,都会产生一个新的FormBean实例D动态FormBean不能进行验证操作16.问题:struts框架中,在一个Action的配置信息中,name属性指的是:A当前action实例的名字B当前action所在的类的名字C该Action中调用的FormBean的实例的名字D该Action中调用的FormBean的类的所在包名17.问题:关于struts项目中的类与MVC模式的对应关系,说法错误的是?A Jsp文件实现视图View的功能B ActionServlet这一个类是整个struts项目的控制器C ActionForm、Action都属于Model部分D一个struts项目只能有一个Servlet18、问题:以下哪些说法是正确的?选项:(A)每个HTTP请求对应一个单独的ActionServlet实例(B)对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。
(C)每个子应用对应一个单独的RequestProcessor实例(D)每个子应用对应一个单独的web.xml文件19ActionForm Bean对象是由谁创建的?(A)<html:form>标签处理类(B)ActionServlet(C) RequestProcessor(D)Action20、struts框架,错误的是?A Struts中无法完成上传功能B Struts框架基于MVC模式C Struts框架容易引起流程复杂、结构不清晰等问题D Struts可以有效地降低项目的类文件数目21、问题:以下代码定义了一个变量,如何输出这个变量的值?<bean:define id="stringBean"value=“helloWorld“/>(A)<bean:write name=“stringBean"/>(B)<bean:write name=“helloWorld"/>(C)<%=stringBean%>(D)<% StringmyBean=(String)pageContext.getAttribute(“stringBean”,PageContext.PAGE_SCOPE);%><%=myBean%>22、问题:把静态文本放在Resource Bundle中,而不是直接在JSP文件中包含这些静态文本,有什么优点?提高可维护性提高可重用性支持国际化23.问题:关于struts项目中的类与MVC模式的对应关系,说法错误的是?A Jsp文件实现视图View的功能B ActionServlet这一个类是整个struts项目的控制器C ActionForm、Action都属于Model部分D一个struts项目只能有一个Servlet24.Struts工作机制?为什么要使用Struts?工作机制:Struts的工作流程:在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程.-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象,就表示表单验证成功;-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;为什么要用:JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。