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 面试题目总结相关推荐

  1. JAVA工程师面试题目大全_绝对值得看

    JAVA工程师面试题目大全 一.单选题 1.下列哪种说法是正确的( D) A)实例方法可直接调用超类的实例方法 B)实例方法可直接调用超类的类方法 C)实例方法可直接调用其他类的实例方法 D)实例方法 ...

  2. Java高级工程师面试题目汇集

    Java高级工程师面试题目汇集(关于Struts,Spring,Hibernate三大框架的面试) 1.Hibernate工作原理及为什么要用? 工作原理: 1.读取并解析配置文件 2.读取并解析映射 ...

  3. python面试题目

    python面试题目 原文地址:https://www.usblog.cc/blog/post/justzhl/b5cc9a05c7d2 问题一:以下的代码的输出将是什么? 说出你的答案并解释. ? ...

  4. 2021年Java面试题目最新总结【90%面试会踩的坑】

    学会java技术之后大家面临的最多的问题就是面试这关,求职面试java岗位是否能够成功是直接影响我们的工作机会的,所以对于Java程序员面试你准备好了吗?今天小编汇总了一下关于Java程序员面试,90 ...

  5. ​2019年最新华为、BAT、美团、头条、滴滴面试题目及答案汇总

    作者 | 苏克1900 来源 | 高级农民工(ID:Mocun6) [导语]最近 GitHub 上一个库火了,总结了 阿里.腾讯.百度.美团.头条等国内主流大厂的技术面试题目,目前 Star 2000 ...

  6. 《大厂算法面试题目与答案汇总,剑指offer等常考算法题思路,python代码》V1.0版...

    为了进入大厂,我想很多人都会去牛客.知乎.CSDN等平台去查看面经,了解各个大厂在问技术问题的时候都会问些什么样的问题. 在看了几十上百篇面经之后,我将算法工程师的各种类型最常问到的问题都整理了出来, ...

  7. java简单的面试题目_简单的面试题目,大跌眼镜的结果

    原标题:简单的面试题目,大跌眼镜的结果 大老远跑来面试,总不能聊几句就走人吧.碍于情面,起码也得聊上十几分钟.招聘高峰这种情况尤甚,浪费你我时间.所以越来越多的组织会采用电话面试的方式,进行初步筛选. ...

  8. Java开发者跳槽必备:2021阿里Java面试题目大汇总

    5.高并发 6.中间件 7.之前项目经历,运用的技术,遇到的问题,如何解决,个人有什么收获和成长: 8.对于技术的热情(平时是否看些技术书籍,逛论坛,写博客,写源代码或程序等): JAVA开发技术面试 ...

  9. 标 题: 腾讯面试题目(PHP程序员)

    发信人: max19830115 (max), 信区: Programming 标  题: 腾讯面试题目(PHP程序员) 发信站: 水木社区 (Mon Apr 18 16:26:07 2011), 站 ...

  10. BaiDu往年面试题目汇总☆WM☆

    BaiDu往年面试题目汇总☆WM☆祝自己明天能取得一个好的面试成绩 题目来源:http://www.cnblogs.com/cutepig/archive/2007/09/14/893552.html ...

最新文章

  1. 经验分享 | Burpsuite抓取非HTTP流量
  2. Button的使用(三):处理点击事件
  3. Linux 进内核,arm linux 启动流程之 进入内核
  4. matlab simulnk笔记07——模块(接地模块group、终止模块terminal、信号合并mux与分解模块demux)
  5. 介词for和with 和of的用法_英语中的for,to,at,of,in,on,with的用法
  6. ECCV 2020 oral | 基于语义流的快速而准确的场景解析,在Cityscapes上达到80.4%mIoU,26 FPS...
  7. 五环 html css,CSS + radius 五环
  8. 【sklearn第十八讲】神经网络模型
  9. 解决jQuery中dbclick事件触发两次click事件
  10. java中BorderLayout的使用方法
  11. 东芝抢先一步,推出了全球首款16TB容量的硬盘MG08系列
  12. SLC、MLC、TLC和QLC这几种存储颗粒的区别
  13. 点击程序不弹出界面,但有后台服务
  14. 打地鼠小游戏(Laya.box)
  15. openwrt多wan限上下行速脚本,基于qosv4,imq模块替换成ifb模块
  16. Unity Shader PostProcessing - 8 - Bloom 泛光
  17. DRM dumb,prime介绍
  18. kubectl logs 常用命令
  19. 2022年电赛A题单相交流电子负载一等奖(代码工程+PCB原理图资料)
  20. 罗克韦尔AB PLC RSLogix模拟量IO模块基本介绍

热门文章

  1. win10开机后底部任务栏无响应的修复方法
  2. 【达内课程】Android自动化测试框架Robotium
  3. 修订的GRE分类词汇(截屏版)
  4. java ssh框架搭建_SSH框架基础搭建
  5. 这款手绘风格的在线制图软件超棒
  6. 点云3D目标检测学习(2):pointnet++源码
  7. 论文的中期报告怎么写?
  8. Topaz Plugins Bundle 2018 for Mac(PS插件滤镜特效包)
  9. oracle 11g DG 物理搭建 DG切换模式
  10. 2014_hitcon_stkof学习