Struts1 面试题目总结
来源:互联网 发布:如何完美卸载软件 编辑:程序博客网 时间:2024/06/05 15:59
1.什么是框架?框架有什么作用?
框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。
框架能重用代码, 从而使构件间的通信简单; 框架能重用设计。它提供可重用的抽象算法及高层设计,并能将大系统分解成更小的构件,而且能描述构件间的内部接口。框架还能重用分析。有利于在一个项目内多人协同工作;
2.struts在mvc中的体现?
Struts是appache开发的一开源的mvc实现框架。mvc由三部分组成,分别为:
model主要用来处理业务逻辑,主要用JaveBean,Ejb实现。
view主要用来jsp来实现,作用是提交表单,接受返回参数。 Struts是appache开发的一个开源实现框架
control主要用来逻辑判断,用servlet实现。
3.ActionServlet的作用? Actionservlet的生命周期?
ActionServlet类是Struts框架的内置核心控制器组件,它继承了javax. servlet.http.HttpServlet类,Struts的启动一般从加载ActionServlet开始,因此它在MVC模型中扮演中央控制器的角色。
它的主要作用是用来接收用户的请求信息,然后根据系统配置要求将请求传递给相应的Action对象。
ActionServlet的生命周期跟HttpServlet生命周期一致;
4.RequestProcessor类有什么作用?
Struts框架只允许应用中存在一个ActionServlet类,但是可以存在多个客户化的RequestProcessor类,每个子应用模块都可以有单独的RequestProcessor类, ActionServlet主要负责初始化,以及介绍请求并找到合适的RequestRrocessor,之后真正干活的是 RequestProecssor和Action.在ActionServlet的doGet/doPost中会调用process方法而最终会调用RequestProcessor类的process方法.而在process又调用了17个 processXXX其它方法来完成工作。
5.struts的国际化如何实现?
1. 导入\Struts相应的jar包,并在struts-config.xml文件中配置<message-resources parameter="com.msg.struts"></message-resources>指向某一个资源文件;
2. 如果有多个地区语言,遵循文件名_语言_地区.properties格式,地区大写即可;
3. 在页面使用bean的message标签进行国际化操作;
6.ActionForm如何验证表单数据?
ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。因此应保证ActionForm的参数,与表单域的名字相同。
页面提交数据后,请求通过path属性找到相应的ActionMapping对象,如果配置name属性就映射到相应的actionform对象,如果该actionForm在scope属性中存在,就获取该actionForm,否则就重新创建;进入actionform首先调用reset方法,进行参数初始化工作,然后执行setXX映射数据,最后执行validate验证方法,如果返回的 ActionErrors 集合为空或大小为0就跳转到指定的action处理类,否则跳转到指定的input页面;如果没有指明input页面,报错;
7.struts中的validator框架如何校验数据?
1. 需要导入oro.jar和commons-validator.jar两个jar包;
2. 导入validator-rules.xml模板文件和validation.xml验证文件;一般情况下,模板文件是不需要改动,除非特别的验证规则;
3. 在web.xml中配置应用该两个xml文件;
4. 在struts-config.xml中配置跟页面对应的动态actionform;
5. 在validation.xml中配置actionform的验证规格,此处可以使用国际化进行验证, 也可以不使用国际化验证;
8.什么是STRUTS?有那些的功能?
struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用
struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。struts可以清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程。struts提供的类使得开发工作更加简单,这些类包括控制程序流程的类,实现和执行程序事务逻辑的类,自定义的标记库使得创建和验证HTML表单更加容易
9.struts运行步骤
1.首先由用户提交请求到*.do
2.如果有必要则用ActionForm封装数据
3.然后交给Servlet,由Servlet读取相应actionForm和action类分别为 model-view-crotr
4.如果有必要,则先由actionForm验证数据的有效性。如果有误,则跑到错误页中。
5.如果数据验证通过,则把actionForm交由action类进行验证。
6.根据action返回的结果,传递给servlet.源的mvc实现框架。mvc由三部分组成,
7.servlet根据配置文件,跳转到相应的视图层。
8.视图层呈现给用户结果。
10.为什么要使用Struts框架
struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。struts可以清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程。struts提供的类使得开发工作更加简单,这些类包括控制程序流程的类,实现和执行程序事务逻辑的类,自定义的标记库使得创建和验证HTML表单更加容易
11.struts中Action和ActionForm有什么作用?
Action类是用户请求和业务逻辑之间的桥梁,每个Action充当客户的一项业务代理。
ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。因此应保证ActionForm的参数,与表单域的名字相同。
12.分别简述Struts框架中ActionForm,Action和配置文件struts-config.xml的作用.
ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。因此应保证ActionForm的参数,与表单域的名字相同。
Action类是用户请求和业务逻辑之间的桥梁,每个Action充当客户的一项业务代理。
他们之间的行为通过struts-config.xml进行联系在一起, 每一个struts-config中都有一个ActionMappings集合, 里面有很多ActionMapping,一个ActionMapping对应一个ActionForm和一个Action进行关联;
13.struts中的validator验证框架的步骤?
1. 需要导入oro.jar和commons-validator.jar两个jar包;
2. 导入validator-rules.xml模板文件和validation.xml验证文件;一般情况下,模板文件是不需要改动,除非特别的验证规则;
3. 在web.xml中配置应用该两个xml文件;
4. 在struts-config.xml中配置跟页面对应的动态actionform;
5. 在validation.xml中配置actionform的验证规格,此处可以使用国际化进行验证, 也可以不使用国际化验证;
14.struts中如何迭代数据;
<logic:iterate id="bean2" name="list" scope="request">
<bean:write name="bean2" />
</logic:iterate>
其中id是逻辑名, name是要迭代的集合, scope是集合存放的作用域;
15.struts的优缺点?
优点: struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。struts可以清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程。struts提供的类使得开发工作更加简单,这些类包括控制程序流程的类,实现和执行程序事务逻辑的类,自定义的标记库使得创建和验证HTML表单更加容易
缺点:
1. Struts1使用抽象类编程而不是接口 (继承后就不能再继承了)
2. Struts1的Action是单例模式并且是线程安全的,仅有Action一个实例来处理所有请求。单策略模式限制了Struts1 Action能做的事。比且在开发时要注意Action资源必须是线程安全比且是同步的。
3. Struts1 Action依赖与Servlet API,因为当一个Action被调用时HttpServletRequest和HttpServletResponse被传递给execute方法。
4. 测试Struts1 Action的一个主要问题是execute方法暴漏了Servlet API(这使得测试要依赖于容器)。
5. struts1使用ActionForm对象捕获输入。所有ActionForm必须继承一个基类。因为其他JavaBean不能用作 ActionForm,开发者经常创建多余的基类不或输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有沉余的JavaBean)。
6. Struts1整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很脆弱。
7. Struts1使用标准JSP机制吧对象绑定到页面中来访问。
8. Struts1 ActionForm属性通常都是String类型。struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的
9. Struts1支持在ActionForm的validate方法中手动效验,或者通过Commons Validator的扩展来效验。同一个类可以有不同的效验内容,但不能效验子对象。
10. Struts1支持每一个模块有单独的RequestProcessors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
16.ActionServlet,ActionForm,ActionMapping, Action,ActionFoward等关系;
ActionServlet类是Struts框架的内置核心控制器组件,截获用户的Http请求,调用RequestProcessor对象,并进行实例化;
RequestProcessor 基本功能把这个请求映射到相应的Action类,如果这是此类收到的第一个请求,将初始化实例并缓存。创建或发现一个ActionForm bean实例(看配置文件是否定义),然后将请求过程移植到bean; 调用Action实例的execute()方法并将ActioForm bean,Action Mapping对象,request和response对象传给它。
ActinMaping: ActionServlet将特定请求映射到特定Action的相关信息存储在ActionMapping中,ActionServelt将ActionMapping传送到Action类的execute()法,Action将使用ActionMapping的findForward()方法,此方法返回一个指定名称的ActionForward,这样Action就完成了本地转发。若没有找到具体的ActionForward,就返回一个null.
ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。因此应保证ActionForm的参数,与表单域的名字相同。
Action类真正实现应用程序的事务逻辑,它们负责处理请求。在收到请求后,ActionServlet会为这个请求选择适当的Action如果需要,创建Action的一个实例调用Action的execute()方法;
ActionForward 是控制器将Action类的处理结果转发至目的地。;
ActionForm , Action, ActionForward等对象都是ActionMapping对象联系在一起,而ActionMapping对象由RequestProcessor对象进行生存, ActionServlet创建RequestProcessor对象;
17.struts1的核心标签有哪些(你常用的标签)?
HTML标签: text, textarea, select ,option, form, submit, reset, radio, checkbox等;
Bean标签 : define, write , message, link, include
Logic 标签: persent , notPersent, match , notMatch, equal, notEqual, iterator, forward, redirect等;
- Struts1 面试题目总结
- 总结雅虎面试题目
- oracle面试题目总结
- oracle面试题目总结
- 面试题目总结
- 面试题目的总结
- Java面试题目总结
- 数据库面试题目总结
- 面试题目总结
- 百度面试题目总结
- 阿里面试题目总结
- 面试题目总结
- VMware面试题目总结
- oracle面试题目总结 .
- java面试题目总结
- oracle面试题目总结
- 找工作---面试题目总结
- 面试题目总结
- android 调试原理
- 使用wifi连接手机调试安卓应用程序
- hdu 3413 poj 3778 Single CPU, multi-tasking
- 有关JNI
- js实现的日历控件
- Struts1 面试题目总结
- TexturePacker的使用
- 外企九年,我最终选择放弃——送给和我一样纠结毕业是读研,国企,外企等等的人们
- 关于K-fold cross validation 下不同的K的选择的疑惑?
- Linux下获取IP、MAC、掩码的shell脚本
- ActionBar自定义修改无效解决方法
- TreeSet.add()方法一细节
- mac安装Genymotion模拟器教程(mac机如何在模拟器上玩googleplay游戏)
- 直接插入排序