struts2面试题(自己总结)

合集下载

struts2复习题(含答案)

struts2复习题(含答案)

Struts2 复习题1.以下属于 struts2 的控制器组件是:A.ActionB.ActionFormC.ActionServletD.dispatchAction2.以下属于 struts2 的体系结构的是: (多选 )3.以下属于 struts2 配置文件中的配置元素是: (多选 ) A.<package> B.<action> C.<form-beans>D.<action-mappings>4.关于 struts1 和 struts2 对比的说法正确的是:A.struts1 要求 Action 类继承 struts1 框架中的 Action 父类, struts2 中则不一定需要继承,可以是 POJO类B.struts1 中的 Action 不是线程安全的,而struts2 中的 Action 是线程安全的C.struts1 和 struts2 中都使用ActionForm 对象封装用户的请求数据D.struts1 使用 OGNL表达式语言来支持页面效果,struts2 通过 ValueStack 技术使标签库访问值5. 以下关于A.每个ActionB.每个ActionValueStack 说法正确的是: (多选 ) 对象实例拥有一个ValueStack 对象对象实例拥有多个ValueStack 对象C.Action 中封装了需要传入下一个页面的值,这些值封装在ValueStack 对象中D.ValueStack会在请求开始时被创建,请求结束时消亡6. 关于 struts2 配置文件说法正确的是:A.必须在 WEB-INF/classes目录下B.名字必须为struts.xmlC.配置 Action 时,必须配置包信息D.使用 <forward> 元素配置转发7. 在 struts2 配置中用()元素来配置常量:A.<const>B.<constants>C.<constant>D.<constant-mapping>8.关于 struts2 包的说法正确的是:A.struts2 框架使用包来管理常量B.struts2 框架定义包时必须指定name 属性C.struts2 框架中配置包时,必须继承自struts-default 包,否则会报错D.struts2 框架中使用包来管理Action9. struts2 中获取 Servlet API 的方法正确的是: (多选 )A.使用B.使用ActionContext 对象以解耦合的方法访问S ervlet API ServletActionContext 对象以解耦合的方式访问Servlet APIC.使用D.使用ActionContext 对象以耦合的方式访问S ervlet API ServletActionContext 对象以耦合的方式访问Servlet API10.struts2 动态调用的格式为:A.ActionName?methodName.actionB.ActionName! methodName.actionC.ActionName*methodName.actionD.ActionName@mathodName.action11.如果要实现 struts2 的数据校验功能A.普通 Action 类可以实现B.继承自 Action 接口可以实现C.继承自 ActionSupport 类可以实现D.继承自 ActionValidate 类可以实现12.如果要实现自定义处理结果,需继承那个类A.DispathcerB.StrutsResultSupportC.SupportD.Action13.实现动态返回结果,在配置 <result> 元素时使用()指定视图资源A.${属性名 }B.@{属性名 }C.${'属性名 '}D.${" 属性名 "}14.用于实现国际化的 struts2 标签是:A.<s:text>B.<s:message>C.<s:textfield>D.<s:resource>15.struts2 默认的处理结果类型是:A.dispatcherB.redirectC.chainD.forward16.自定义转换器继承的抽象类是:A.ConverterB.TypeConverterC.StrutsTypeConverterD.converts17.自定义转换器的注册方式有:18.自定义拦截器类的方式有: (多选 )19.在 struts.xml 文件中,使用()元素定义拦截器A.<interceptor-ref>B.<interceptor>C.<intercep>D.<default-interceptor-ref>20.在 OGNL中?操作符的作用是:A.取出符合选择逻辑的第一个元素B.取出符合选择逻辑的最后一个元素C.取出符合选择逻辑的所有元素D.以上说法都不对21.以下属于 struts2 标签的是: (多选 )A.Ajax 标签B.数据访问标签C.logic 标签D.bean 标签22.以下哪个标签是 struts2 中的用于循环迭代 :A.<s:property>B.<s:iterator>C.<s:logic>D.<s:foreach>23. Struts2 主要核心功能是由()实现a)过滤器b)拦截器c)类型转换器d)配置文件24. Struts 中的 ActionServlet 属于 MVC 模式()a)视图b)模型c)控制器d)业务层25.Struts2 框架由()和()框架发展而来的【选择二项】a)Hibernateb)Strutsc)Springd)WebWork26.Struts2 以( B)为核心,采用()的机制处理用户请求a)Strutsb)WebWorkc)拦截器d)jar 包27. struts2 中,不属于Action 接口中定义的字符串常量的是()a)SUCCESSb)FAILUREc)ERRORd)INPUT28. struts2 在控制器类中一般需要添加相应属性的()和()【选择二项】a)setter 方法b)as 方法c)getter 方法d)is 方法29. struts2 控制器需要在()配置文件中进行配置a)web.xmlb)struts.xmlc)application.porpertiesd)webwork.xml30. 不属于 struts2 标签库的是()a)<s:textfield>b)<s:textarea>c)<s:submit>d)<select>31. 在 JSP页面中可以通过Struts2 提供的()标签来输出国际化信息a)<s:input>b)<s:messages>c)<s:submit>d)<s:text>32.资源文件的后缀名为()a)txtb)docc)propertyd)properties33. struts2 自定义类型转换器必须实现的接口是()a)Convertb)TypeConverterc)StrutsTypeConverterd)StrutsConvert34. struts2 关于注册全局类型转换器的说法正确的是()【选择二项】a)必须提供 xwork-conversion.properties 文件b)注册文件的格式为:复合类型 =对应类型转换器c)注册文件的格式为:对应类型转换器=复合类型d)以上说法都不正确35. struts2 自定义拦截器中的“return invocation.invoke ”代码表示()【选择二项】a)不执行目标 Action 的方法,直接返回b)执行目标 Action 的方法,直接返回逻辑视图名称c)在自定义拦截器中,该代码是必需的d)在自定义拦截器中,该代码是可选的36. struts2 中,以下配置文件上传拦截器只允许上传 bmp 图片文件的代码,正确的是()a)<param name= ” allowedTypes ” >image/bmp</param>b)<param name= ” allowedTypes ” >*.bmp</param>c)<param name= ” allowedTypes ” >bmp</param>d)<param name= ” allowedTypes ” >image/*bmp</param>.37.以下关于 OGNL的说法正确的是()【选择二项】a)ActionContext 是 OGNL的上下文环境b)StackContext 是 OGNL的上下文环境c)ValueStack 是 OGNL的根d)ActionContext 是 OGNL的根38. 假设在 Session 中存在名为uid 属性,通过OGNL访问该属性,正确的代码是()a)#uidb)#session.uidc)uidd)${session.uid}39. 关于“ #session.persions.{? #this.age>20} ” OGNL代码所表示的意义说法正确的是()a) 从 persons 集合中取出第一个年龄>20 的 Person 对象b) 从 persons 集合中取出所有年龄> 20 的 Person 对象子集c) 从 persons 集合中取出最后一个年龄>20 的 Person 对象d)该代码不符合 OGNL的语法40. 假设在某 JSP页面中存在” <s:property> ”代码,则以下说法正确的是()a)编译 JSP页面时会出现错误b)编译 JSP页面时不会出现错误,但页面不会显示任何内容c)该代码用于输出位于 ValueStack(值栈)栈顶的对象d)以上说法都不正确41. struts2 默认的处理结果类型是()a)dispatcherb)redirectc)chaind)以上说法都不正确42. 下列选项中,关于Struts2 配置文件说法正确的是()a)必须置于 WEB-INF/classes目录下b)必须为 Struts.xmlc)配置 Action 时必须配置包信息d)使用 <forward> 元素配置转发43. 下列选项中,关于 Struts2 的Action 说法正确的是()【选择二项】a) struts2 会为每一个请求创建一个对应的Action 实例b) struts2 在请求处理过程中,只有一个Action 实例c)struts2 通过属性来封装用户请求参数d)在 struts2 中定义的属性都用于封装用户请求参数44. struts2 中动态方法调用的格式为()a)ActionName_methodName.dob)ActionName!methodName.doc)ActionName_methodName.actiond)ActionName!methodName.action问答题: MVC是什么含义?。

国外的一些struts面试题(4)

国外的一些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.。

学习struts2——常见问题与处理

学习struts2——常见问题与处理

学习struts2.2.1遭遇滑铁卢~~~~~好多异常~~~~~好多bug~~~~好多问题~~~~~~好多困难~~~好多肥羊~~~一、Filter mapping specifies an unknown filter name ----filter标签在web.xml 里的顺序<filter-mapping><filter-name>adminOperateLogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>adminOperateLogFilter</filter-name><filter-class>com.berheley.exam.web.filter.AdminOperateLogFil ter</filter-class></filter>这样写启动服务器时报错 Filter mapping specifies an unknown filter nameadminOperateLogFilter将这两块换个顺序就没问题了,web.xml信息的加载是有顺序的,filter在mapping之前必须要让服务器找到其定义。

<filter><filter-name>adminOperateLogFilter</filter-name><filter-class>com.berheley.exam.web.filter.AdminOperateLogFil ter</filter-class></filter><filter-mapping><filter-name>adminOperateLogFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>二、ng.IllegalArgumentException: Filter mapping specifies an unknown filter nameStruts2答:“Struts2”?大写的?are you sure?我猜你一定是看了某struts2.0的权威指南(那是一个chm文件电子书,而且你看的可能是翻译成中文的),我不知道英文版的有没有写错,但是我检查了很久后才发现中文版存在这个大小写错误。

Struts2的介绍及总结

Struts2的介绍及总结

Struts2在WebWork基础上发展起来的,可扩展的JAVA EE web框架。

框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。

Action类:Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。

Struts2提供一个ActionSupport基类去实现常用的接口。

Action接口不是必须的,任何有execute标识的POJO 对象都可以用作Struts2的Action对象。

线程模式:Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题。

Servlet依赖:Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。

如果需要,Struts2 Action仍然可以访问初始的request和response。

但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。

可测试性:Struts2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。

捕获输入:Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。

Action属性能够通过web页面上的taglibs访问。

表达式语言:Struts 2 使用"ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。

ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。

Struts2不仅支持JSTL,Struts2 还可使用OGNL进行类型转换。

提供基本和常用对象的转换器。

校验:Struts2支持通过validate方法和XWork校验框架来进行校验。

XWork 校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性。

java模拟面试题目(3篇)

java模拟面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java语言的特点。

2. 什么是Java虚拟机(JVM)?它有什么作用?3. 什么是Java的内存模型?请解释Java内存模型中的几个关键概念:堆、栈、方法区、程序计数器、本地方法栈。

4. 什么是Java中的反射机制?请举例说明反射在Java中的应用。

5. 什么是Java中的泛型?请解释泛型的原理和作用。

6. 请简述Java中的四种访问控制符:public、protected、default、private。

7. 什么是Java中的继承和多态?请举例说明继承和多态在实际开发中的应用。

8. 什么是Java中的封装?请举例说明封装在实际开发中的应用。

9. 什么是Java中的接口和抽象类?它们之间有什么区别?10. 什么是Java中的异常处理?请解释try-catch-finally语句的执行顺序。

二、Java集合框架1. 请列举Java集合框架中的常用集合类及其特点。

2. 请简述ArrayList、LinkedList、HashMap、HashSet的区别。

3. 什么是Java中的泛型集合?请举例说明泛型集合的应用。

4. 什么是Java中的迭代器(Iterator)和枚举器(Enum)?请比较它们的区别。

5. 什么是Java中的List、Set、Map的遍历方法?6. 请解释Java中的ArrayList和LinkedList的内部实现原理。

7. 什么是Java中的HashMap的扩容机制?8. 什么是Java中的HashSet的内部实现原理?9. 请解释Java中的线程安全集合类,如CopyOnWriteArrayList、ConcurrentHashMap。

三、Java多线程与并发1. 什么是Java中的线程?请解释线程的创建、调度和同步。

2. 请简述Java中的线程状态,如新建、就绪、运行、阻塞、等待、超时等待、终止。

3. 什么是Java中的同步机制?请解释synchronized关键字的作用。

java技术综合面试题目(含参考答案)

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面试题分析_尚硅谷_佟刚_

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。

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面试题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中的组件,用于在请求处理的各个阶段添加自定义的逻辑。

研发类面试自我介绍范文(2篇)

研发类面试自我介绍范文(2篇)

研发类面试自我介绍范文我叫___,今年___岁,毕业于___解放军信息工程大学计算机科学与技术专业,拥有扎实的Core Java基础,良好的编程风格;熟悉JSP+Servlet+JavaBean模式的WEB开发;熟悉Struts,Hibernate,Spring等开源框架,了解EJB; 熟悉Tomcat,Jboss服务器等,熟悉基于Linux及Unix环境下的软件开发。

在校期间有多次社会实践经历,曾参与过学院网上虚拟实验室开发的需求分析,大学期间多次担任多课程的课代表。

虽然实际工作经验不是很足,但军校四年培养了我充分的自信心和敬业精神以及扎实的学科基础知识和较强的专业技能,四年军校生活中,我严格要求自己,自觉、遵纪、守时。

本人坦诚且有责任心,有独立进取的品性,勤于动手、善于动脑,适应新环境能力很强。

能在最短时间内完成从学生到职业工作人员的转型,尽自己最大的努力融入新的工作生活。

请各位考官多多指教,谢谢!研发类面试自我介绍范文(2)尊敬的面试官,您好。

我是一名研发类应聘者,非常荣幸能够有机会参加您的面试。

在这里,我将用____字的篇幅,向您介绍我的个人情况、教育背景、工作经验、技能及优势、项目经验以及未来发展目标。

首先,让我来谈一下我的个人情况。

我的姓名是XXX,现年XX岁,性格开朗、积极向上、乐于与人沟通,喜欢团队合作。

在平时的生活中,我也是一个注重自我提升的人,喜欢读书、学习新知识,并且善于总结和分享。

我相信自己的努力和持之以恒的精神可以帮助我在工作中取得优秀的表现。

接下来,我将介绍一下我的教育背景。

我毕业于XXXXX大学,专业是XXXXX。

在大学期间,我全面学习了软件工程领域的知识,包括编程语言、数据库、操作系统等。

通过理论和实践的结合,我掌握了扎实的计算机基础知识和独立解决问题的能力。

在毕业后的工作经验方面,我曾在一家知名的科技公司实习,担任研发助理的岗位。

在这段实习经历中,我有幸参与了公司的一个重要项目,并且在项目中承担了重要的任务。

STRUTS常见面试题_java常见面试题

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考试题分析

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。

easyui结合struts2总结

easyui结合struts2总结

easyui 结合Struts2 总结1 在把struts2框架搭好以后,由于easyui和后台交互主要是靠ajax来进行的并且返回的数据格式是json形式的。

所以我们必须在项目中引入struts2-json-plugin 来方便的把数据转换为json格式。

需要的jar包如下图:下面是我写的一个小例子,来更好的说明之间数据是如何传递的。

(为了节省篇幅,数据库表就省略了)jsp页面主要代码如下:当我们把页面写好以后就要写action类了。

主要代码如下:get、set方法这里就省略了。

接下来就是在struts.xml 中进行配置了。

代码如下这里要特别注意了,继承的是json-default, result 中德type是json。

这里的配置是关键,起初由于配置问题,花了我很多时间。

然后就是写EmpService类和getAll方法了。

代码如下这里我是把对象先放到map集合中,让和放到list集合中,这样就自动转为json 格式(感觉有些麻烦,谁有好的方法,请发送到zl673170035@,谢谢哈)然后在浏览器上运行。

在js 中加入了工具条。

剩下的修改、删除、增加,我是仿照easyui官网的demo中的一个例子做的。

我遇到的主要问题就是,ajax 如何把参数传给action和ajax如何接收action传回的参数。

首先说说第一个问题,ajax 如何把参数传给action.。

只要action 中有相对应的get和set 方法。

我们发起ajax请求时struts就自动的把参数加到action中了。

这里把参数名都变为emp.XX 然后在action 中加入成员变量emp和get、set 方法。

这样action就能接收值了。

接下来需要从action中给ajax中传递参数了。

我们在struts.xml中如下配置在action中设置result 的get、set 方法。

这样ajax就能接收到action传回的参数了。

华为外包java面试题

华为外包java面试题

SSH篇(后台)一、SSH概述1.1 SSH的含义当前J2EE企业级应用分为三层:表现层-业务层-数据源层,而SSH代表了每一层的具体实现,它是三种流行的开源框架的缩写,S-Struts,S-Spring,H-Hibernate。

这三者的组合是当前J2EE开发的标准模式,也代表了J2EE正在朝着简化复杂性,轻量化方向发展,最新J2EE 6已证明了这种趋势。

1.2 J2EE开发模式的演变J2EE应用一直采用三层加构,即表现层-业务层-数据源层。

旧石器时代:J2EE应用采用表现层-远程EJB-实体EJB(或JDBC),这是最为正宗也是最复杂的J2EE开发,适用于银行等小部分项目;随后由于微软.NET的兴起以及其对J2EE的挑战,正宗的J2EE出现了一个变种:表现层-本地EJB-Ibatis,在这种模型中业务层选择了本地EJB,同时数据源层也改为Ibatis,这种模式极大的提高性能,华为大部分项目采用这种构架。

在这两种架构中,由于采用了EJB组件模型,从而依赖于EJB容器,而EJB容器以一种全无或全有的方式提供服务,同时业务实现也受制于容器。

这种开发模式导致了以下复杂性:依赖于应用服务器,不可移植,开发困难,无法在容器外测试,部署复杂,效率低下。

新石器时代:在新石器时代依然采用了三层加构,只是抛弃了EJB,而采用了Spring等轻量级容器,同时持久化由全自动的Hibernate承担。

在这种架构中,由于放弃了EJB,放弃了全功能的应用服务器,在节省了软件许可费用的同时也大大提高了软件开发效率。

由于web服务器的可移植也好于应用服务器,从而使得J2EE应用可顺利移植。

1.3 SSH与传统开发的比较从上面所述可以看出传统J2EE开发和SSH开发的不同。

简言之,传统J2EE开发采用EJB组件在限制了业务实现的同时也极其复杂,只适用银行等一部分应用;SSH不强制采用应用服务器,不限制业务实现,透明的持久化从而减化了开发的复杂度,提高了开发效率。

java前端面试题目(3篇)

java前端面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java的基本特点。

2. 什么是JVM?简述JVM的运行原理。

3. 请简述Java中的四种访问控制符及其作用。

4. 请解释Java中的静态变量和静态方法。

5. 请简述Java中的继承和多态。

6. 请解释Java中的final关键字。

7. 请简述Java中的异常处理机制。

8. 请解释Java中的集合框架,包括List、Set和Map等。

9. 请简述Java中的泛型。

10. 请解释Java中的反射机制。

二、Java Web基础知识1. 什么是Servlet?简述Servlet的工作原理。

2. 什么是JSP?简述JSP的工作原理。

3. 请解释Java Web中的请求和响应。

4. 什么是MVC模式?请简述MVC模式在Java Web中的应用。

5. 什么是JDBC?请简述JDBC的使用方法。

6. 什么是JPA?请简述JPA的作用和特点。

7. 什么是Spring框架?请简述Spring框架的主要功能和优势。

8. 什么是Spring MVC框架?请简述Spring MVC框架的工作流程。

9. 什么是Spring Boot?请简述Spring Boot的特点和优势。

10. 什么是RESTful API?请简述RESTful API的设计原则。

三、前端基础知识1. 请简述HTML的基本结构。

2. 请解释HTML中的标签和属性。

3. 请简述CSS的基本语法和选择器。

4. 请解释JavaScript的基本语法和特点。

5. 请简述DOM的基本概念和操作方法。

6. 请解释JavaScript中的事件处理机制。

7. 请简述JavaScript中的闭包和原型链。

8. 请解释JSON的基本语法和特点。

9. 请简述AJAX的工作原理和实现方法。

10. 请解释前端性能优化的方法。

四、框架与工具1. 请简述React的基本原理和特点。

2. 请简述Vue的基本原理和特点。

3. 请简述Angular的基本原理和特点。

struts2面试题(自己总结)

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中的配置找到对应的返回结果。

Struts2知识点总结

Struts2知识点总结

1.struts2 步骤1.创建web项目2.添加struts2的必须jar包3.添加支持(配置web.xml文件)4.创建界面和相应的action5.配置struts.xml文件6.部署运行项目2.struts2的工作流程1. 浏览器发送一个请求。

2. 核心控制器FilterDispatcher根据请求决定调用合适的Action。

3. 拦截器(Intercepter)自动对请求应用通用功能,如验证等。

4. 回调Action的execute方法,该execute方法根据请求的参数来执行一定的操作。

5. Action的execute方法处理结果信息将被输出到浏览器中,支持多种形式的视图。

3.struts2的配置文件1.web.xml2.struts.xml(核心管理Action映射) 自己配置的3.struts-default.xml是struts2框架默认加载的配置文件。

它定义struts2一些核心的bean和拦截器。

这些拦截器是以key-value对的形式配置在struts-default.xml中,其中name是拦截器名字,就是后面使用该拦截器的引用点,value则指定拦截器的实现类。

4.struts.properties(核心管理属性) 自己配置的5.default.properties(核心管理属性)4.<struts>标签下的子标签配置1.<bean type="com.opensymphony.xwork2.ObjectFactory" name="struts"class="org.apache.struts2.impl.StrutsObjectFactory" />2.<include file="struts1.xml"></include>3.<constant name=“key” value=“value” />4.<package></package>5.package标签下的配置1.<action name="loginAction" class="com.action.loginAction"><result name="success">/welcome.jsp</result><result name="error">/index.jsp</result></action>2.<global-results><result></result></global-results>3.<global-exception-mappings><exception-mapping result="error"exception="java.long.Exception"></exception-mapping></global-exception-mappings>……………………………………6.action类实现Action接口和继承ActionSupport7.通过ActionContext类获得context(request),再通过context获得session和application context.put("key","value");session.put("key","value");session.put("key","value");public class ServletActionContext (org.apache.struts2)public static PageContext getPageContext()public static HttpServletRequest getRequest()public static HttpServletResponse getResponse()public static ServletContext getServletContext()8.在action中直接使用一个对象,两种方式:1.在提交表单时name属性为:对象.xxxx2.实现ModelDriven<类类型>接口和其方法。

java应届生面试题目(3篇)

java应届生面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java的基本特性和优势。

解析:Java具有简单性、面向对象、分布式、平台无关性、安全性、多线程、动态性、强类型、高效率、可移植性等特性。

其优势在于跨平台、安全性高、易于开发、有丰富的类库等。

2. 请解释Java中的基本数据类型和引用数据类型。

解析:基本数据类型包括byte、short、int、long、float、double、char、boolean;引用数据类型包括类、接口、数组等。

3. 请解释Java中的封装、继承、多态三个基本概念。

解析:封装是指将类的属性和方法封装在一个单元中,隐藏内部实现细节;继承是指子类继承父类的属性和方法,实现代码复用;多态是指同一方法在不同对象上表现不同的行为。

4. 请解释Java中的构造函数和析构函数。

解析:构造函数用于创建对象时初始化对象的属性,析构函数用于销毁对象时释放对象占用的资源。

5. 请解释Java中的static关键字。

解析:static关键字用于修饰成员变量和方法,表示该成员变量或方法属于类,而不是对象。

6. 请解释Java中的final关键字。

解析:final关键字用于修饰成员变量、方法和类,表示该成员变量、方法或类不可修改。

7. 请解释Java中的异常处理机制。

解析:Java中的异常处理机制包括try-catch-finally语句,用于捕获和处理程序中的异常。

8. 请解释Java中的泛型。

解析:泛型是一种参数化类型,允许在定义类、接口和泛型方法时指定类型参数,提高代码的复用性和安全性。

二、Java集合框架1. 请解释Java中的List、Set和Map接口。

解析:List接口表示有序集合,Set接口表示无序集合且元素不可重复,Map接口表示键值对映射。

2. 请解释Java中的ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等常用集合类。

解析:ArrayList和LinkedList实现List接口,ArrayList基于数组实现,LinkedList基于链表实现;HashSet和TreeSet实现Set接口,HashSet基于哈希表实现,TreeSet基于红黑树实现;HashMap和TreeMap实现Map接口,HashMap基于哈希表实现,TreeMap基于红黑树实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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中的配置找到对应的返回结果。

返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP 或者FreeMarker的模版。

在表示的过程中可以使用Struts2 框架中继承的标签。

在这个过程中需要涉及到ActionMapper9、响应的返回是通过我们在web.xml中配置的过滤器10、如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocal ActionContext;如果ActionContextCleanUp不使用,则将会去清理sreadlocals。

2、说下Struts的设计模式MVC模式: web应用程序启动时就会加载并初始化ActionServler。

用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法。

Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。

3、拦截器和过滤器的区别1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。

2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。

3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。

4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。

5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

4、struts1于struts2的比较1、Action 类:Struts1要求Action类继承一个抽象基类。

Struts1的一个普遍问题是使用抽象类编程而不是接口。

Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。

Struts2提供一个ActionSupport基类去实现常用的接口。

Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。

2、线程模式:Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。

单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。

Action 资源必须是线程安全的或同步的。

Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。

(实际上,servlet 容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)3、Servlet 依赖:Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和HttpServletResponse 被传递给execute方法。

Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。

如果需要,Struts2 Action仍然可以访问初始的request和response。

但是,其他的元素减少或者消除了直接访问HttpServetRequest 和HttpServletResponse的必要性。

4、可测性:测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。

一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。

Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。

5、捕获输入:Struts1 使用ActionForm对象捕获输入。

所有的ActionForm必须继承一个基类。

因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。

动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。

Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。

输入属性可能是有自己(子)属性的rich对象类型。

Action属性能够通过web页面上的taglibs访问。

Struts2也支持ActionForm模式。

rich对象类型,包括业务对象,能够用作输入/输出对象。

这种ModelDriven 特性简化了taglib对POJO输入对象的引用。

6、表达式语言:Struts1 整合了JSTL,因此使用JSTL EL。

这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。

Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language " (OGNL).7、绑定值到页面(view):Struts 1使用标准JSP机制把对象绑定到页面中来访问。

Struts 2 使用"ValueStack "技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。

ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。

8、类型转换:Struts 1 ActionForm 属性通常都是String类型。

Struts1使用Commons-Beanutils进行类型转换。

每个类一个转换器,对每一个实例来说是不可配置的。

Struts2 使用OGNL进行类型转换。

提供基本和常用对象的转换器。

9、校验:Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator 的扩展来校验。

同一个类可以有不同的校验内容,但不能校验子对象。

Struts2支持通过validate方法和XWork校验框架来进行校验。

XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性10、Action执行的控制:Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。

Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。

堆栈能够根据需要和不同的Action一起使用。

为什么要使用Struts2Struts2 是一个相当强大的Java Web开源框架,是一个基于POJO的Action的MVC Web框架。

它基于当年的Webwork和XWork框架,继承其优点,同时做了相当的改进。

1.Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程。

2使用OGNL进行参数传递。

OGNL提供了在Struts2里访问各种作用域中的数据的简单方式,你可以方便的获取Request,Attribute,Application,Session,Parameters中的数据。

大大简化了开发人员在获取这些数据时的代码量。

3强大的拦截器Struts2 的拦截器是一个Action级别的AOP,Struts2中的许多特性都是通过拦截器来实现的,例如异常处理,文件上传,验证等。

拦截器是可配置与重用的,可以将一些通用的功能如:登录验证,权限验证等置于拦截器中以完成一些Java Web项目中比较通用的功能。

在我实现的的一Web项目中,就是使用Struts2的拦截器来完成了系统中的权限验证功能。

4易于测试Struts2的Action都是简单的POJO,这样可以方便的对Struts2的Action编写测试用例,大大方便了5Java Web项目的测试。

易于扩展的插件机制在Struts2添加扩展是一件愉快而轻松的事情,只需要将所需要的Jar包放到WEB-INF/lib文件夹中,在struts.xml中作一些简单的设置就可以实现扩展。

6模块化管理Struts2已经把模块化作为了体系架构中的基本思想,可以通过三种方法来将应用程序模块化:将配置信息拆分成多个文件把自包含的应用模块创建为插件创建新的框架特性,即将与特定应用无关的新功能组织成插件,以添加到多个应用中去。

相关文档
最新文档