Struts1 面试题目总结

 

 

1.什么是框架?框架有什么作用?

框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。

    框架能重用代码, 从而使构件间的通信简单;  框架能重用设计。它提供可重用的抽象算法及高层设计,并能将大系统分解成更小的构件,而且能描述构件间的内部接口。框架还能重用分析。有利于在一个项目内多人协同工作;

 

2.strutsmvc中的体现?

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,之后真正干活的是 RequestProecssorAction. ActionServletdoGet/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. 在页面使用beanmessage 标签进行国际化操作;

 

 

6.ActionForm如何验证表单数据?

ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。因此应保证ActionForm的参数,与表单域的名字相同。

    页面提交数据后, 请求通过path属性找到相应的ActionMapping对象, 如果配置name属性就映射到相应的actionform对象,如果该actionFormscope属性中存在, 就获取该actionForm,否则就重新创建; 进入actionform首先调用reset方法,进行参数初始化工作, 然后执行setXX映射数据, 最后执行validate验证方法, 如果返回的 ActionErrors 集合为空或大小为0 就跳转到指定的action处理类,否则跳转到指定的input页面; 如果没有指明input页面,报错;

 

7.struts中的validator框架如何校验数据?

1. 需要导入oro.jarcommons-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应用的时间。如果我们想混合使用ServletsJSP的优点来建立可扩展的应用

struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVCweb应用程序的开发。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框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVCweb应用程序的开发。struts可以清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程。struts提供的类使得开发工作更加简单,这些类包括控制程序流程的类,实现和执行程序事务逻辑的类,自定义的标记库使得创建和验证HTML表单更加容易 

 

11.strutsActionActionForm有什么作用?

    Action类是用户请求和业务逻辑之间的桥梁,每个Action充当客户的一项业务代理。

ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。因此应保证ActionForm的参数,与表单域的名字相同。

 

12.分别简述Struts框架中ActionFormAction和配置文件struts-config.xml的作用.

ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。因此应保证ActionForm的参数,与表单域的名字相同。

   Action类是用户请求和业务逻辑之间的桥梁,每个Action充当客户的一项业务代理。

   他们之间的行为通过struts-config.xml进行联系在一起每一个struts-config中都有一个ActionMappings 集合, 里面有很多ActionMapping, 一个ActionMapping对应一个ActionForm和一个Action进行关联;

 

13.struts中的validator验证框架的步骤?

1. 需要导入oro.jarcommons-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框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVCweb应用程序的开发。struts可以清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程。struts提供的类使得开发工作更加简单,这些类包括控制程序流程的类,实现和执行程序事务逻辑的类,自定义的标记库使得创建和验证HTML表单更加容易

   缺点

1.       Struts1使用抽象类编程而不是接口 (继承后就不能再继承了)

2.       Struts1Action是单例模式并且是线程安全的,仅有Action一个实例来处理所有请求。单策略模式限制了Struts1 Action能做的事。比且在开发时要注意Action资源必须是线程安全比且是同步的。

3.       Struts1 Action依赖与Servlet API,因为当一个Action被调用时HttpServletRequestHttpServletResponse被传递给execute方法。

4.       测试Struts1 Action的一个主要问题是execute方法暴漏了Servlet API(这使得测试要依赖于容器)。

5.       struts1使用ActionForm对象捕获输入。所有ActionForm必须继承一个基类。因为其他JavaBean不能用作 ActionForm,开发者经常创建多余的基类不或输入。动态BeanDynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有沉余的JavaBean)。

6.       Struts1整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很脆弱。

7.       Struts1使用标准JSP机制吧对象绑定到页面中来访问。

8.       Struts1 ActionForm属性通常都是String类型。struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的

9.       Struts1支持在ActionFormvalidate方法中手动效验,或者通过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对象,requestresponse对象传给它。

       ActinMaping: ActionServlet将特定请求映射到特定Action的相关信息存储在ActionMapping中,ActionServeltActionMapping传送到Action类的execute()法,Action将使用ActionMappingfindForward()方法,此方法返回一个指定名称的ActionForward,这样Action就完成了本地转发。若没有找到具体的ActionForward,就返回一个null.

   ActionForm用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。因此应保证ActionForm的参数,与表单域的名字相同。

   Action类真正实现应用程序的事务逻辑,它们负责处理请求。在收到请求后,ActionServlet会为这个请求选择适当的Action如果需要,创建Action的一个实例调用Actionexecute()方法;

   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;

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值