stuts1的一些总结

1、struts1的初始化过程?
答:当tomcat启动的时候会自动加载Web.xml,因为struts1的核心控制器是servlet。所以在web.xml中配置<servlet-class>,
然后根据这个url找到相对应的类,ActionServlet,因为ActionServlet继承 HttpServlet,所以它具有了servlet的特性,
它首先执行的就是加载,在加载时会调用init()方法,来进行一系列的初始化。
(1).首先初始化系统内部的资源文件,比如说一系列错误提示信息,日志等等
(2).初始化一些其他配置,web.xml文件中除config节点以外的其它节点
(3).初始化servlet本身,它会用到第三方框架Digester,它会把*.xml文件解析成java对象,映射到内存中,这些比传统的IO流读取快的多
(4).初始化链(chain).链中有些*.do的请求,一系列的验证,链的好处在于,如果有一个模块出现了错误,那么接下来的就不会再执行,这样可以提高程序的性能
(5).然后初始化一些插件,资源文件,formBean,forward,异常,Action,(然后放入到一个数组,进行冻结)然后就销毁


2.一次请求的执行流程?
答:当用户提交信息时,从*.do结尾的URL会被拦截下来,执行service方法。然后根据请求传递的方法去调用doGet()或doPost()方法,
然后在doGet()或doPost()中去调用processor()方法。在processor()方法中会获取一个RequestProcessor的实例。再由
RequestProcessor的实例来调用process()方法来处理这些请求,在调用process()方法中,首先通过processMultipart()来处理请求。
若传送的方式是get,则不做处理,直接返回到process()方法,其次通过processPath()方法来获取这些Path。如果该Path为null,
则直接返回上一层调用,如果path不为null,就会接着进行其他的处理。这其中也包括对Locale,context,NoCache,Preprocss,
cachedMessaqes,Mapping,Roles,ActionForm,Popubate,validate,Forward,Include的处理,把所有的request,session,application
放入context里面,来避免耦合度。ActionContext是链里面的,意思就是用来在这些链里面创建Action实例,并执行Action返回
ActionForward,最后处理跳转。这些处理中,采用职责链的模式分别由对应的command类来进行处理,并随时可能由于方法中断返回
一次请求结束,会根据ActionForward执行下一个,流程直接转往jsp生成HTML代码发送到游览器

3.struts1标签库的主要分为哪几个?
答:1.Html标签库: 封装了传统的HTML
2.Bean标签库:是用来向输出文本信息(比如国际化)(与bean进行一些交互)
3.Logic标签库:为了避免在jsp页面中直接使用java代码进行循环操作和逻辑判断
4.Nested标签库:这个标签库中的标签用来显示form或对象中的nested属性
5.titles标签库:这个标签库的标签允许我们为视图层构建布局

4.使用struts1的缺点?
答:1.它太依赖与web容器,当配置文件改动时要重新启动一次
2.它的配置太过繁琐(复杂)
3.ActionForm无法进行测试
4.struts的Action类是单例模式,必须设置成线程安全的

5.使用struts的好处?
答:1.它是一个良好的框架和设计模式
2.可重用性模块化强,扩张性好,数据库连接池管理
3.它提供了丰富的标签库,使页面能更灵活的使用
4. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.
5. 页面导航。
6. 提供Exception处理机制 .
7. 支持I18N


6.客户端数据验证与服务端数据验证的区别?
答:1.struts中客户端验证跟服务端验证有区别。客户端验证直接写一个action文件便可实现。而服务端验证必须通过客户端程序去调用服务端相应的webServices,实现业务逻辑
2.它们的本质区别是:客户端数据校验是在客户端进行的。而服务端的数据验证是在服务端进行的
3.在速度上客户端要快很多,但也有缺点,就是当黑客攻击的时候,他完全可以绕过客户端直接和服务端交互。
服务端如果是用JDBC写的话,还有防止sql语句的注入,不然很容易让黑客攻击

7.基于struts1开发的应用由三类组件构成?
答:1,控制器组件 2,模型组件 3,视图组件

8.创建FormBean有哪几种方式?
答:1.静态的创建:先创建一个类继承ActionForm,然后在struts-config.xml里面进行配置
2.动态的创建:直接在struts-config.xml里面配置,在引用org.apache.struts.validator.DynaValidatorForm

9.struts1是如何进行数据校验的?它们的方法是什么?
答:1.继承ActionForm类,然后覆盖Validate().用代码进行验证
2.继承ValidatorForm类,然后通过配文件来进行验证

10.全局转发和局部转发的区别?
答:1.定义的方式:全局转发的forward是定义在<global-forward>内的
局部转发的forward是定义在<action-mapping>内的
2.被访问的范围:全局的forward能够被所有的页面访问
局部的forward只能被所定义的页面访问
3.访问的选择:若同时配置了全局的forward和局部的forward,则会先选择局部的forward来转发

11.struts1中的组件有那些?
答:ActionServlet 控制器
ActionClass 包含事务逻辑
ActionForm 显示模块数据
ActionMapping 帮助控制器将请求映射到操作
ActionForward 用来指示操作转移的对象
ActionError 用来储存和回收错误
struts标签库 可以减轻开发显示层次的工作

12.为什么struts1会被使用?
答:1.struts1框架中包含jsp,servlet,javaBean技术的出现给我们构建强大的企业应用系统提供了可能
2.这些技术构建的系统非常的繁乱,所以需要一个框架,因此struts1便产生了


13.struts1对内修改是封闭的,如果要加一个新功能,不用去修改源代码;struts1对外扩张是开放的,如果要一条命令,只需要在config.xml文件中配置就可以了

14.职责链模式?
答:在处理时是互不影响的,用户提交的请求都是通过链来实现的,在执行职责链的时候我们也可以在每一个单一主链中,添加一个
子链,每个子链对应了相应的类,这样又体现了类的单一性。

15.struts应用的实用技术?
答:国际化,框架扩张点,验证框架,异常处理机制

17.struts1的工作流程?
答:1.初始化:struts1框架的总控制器ActionServlet是一个servlet,它在web.xml中配置成自动启动的servlet,在启动时总控制器会读取配置文件(struts-config.xml())的配置信息,为struts1中不同的模块初始化相应的对象(通向对象思想)
2.发送请求:用户提交表单或通过url向web服务器请求,请求的数据通过HTTP协议传给WEB服务器
3.form填充:struts的核心控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中
4.排放请求:控制器根据配置信息对象ActionConfig将请求派发到具体的Action中的excute()方法
5.处理业务:Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其他的业务模块)完毕后返回一个ActionFoward对象。服务器通过ActionForward对象进行转发工作
6.返回响应:Action将业务处理的不同结果返回一个目标响应对象给核心控制器ActionServlet
7.查找响应:核心控制器根据Acton处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面
8.响应用户:目标响应对象将结果传递给资源对象,将结果展示给用户


18.为什么出现struts1?
解决了jsp的很多不能解决的问题,更加完善(jsp页面代码混乱,不能与servlet很好的结合)是页面更加清晰,明了

19.struts1 中的actionservlet怎么理解?
一个全局的servlet,符合.do结尾(可以配置为其他匹配模式)的请求进入处理,并且struts 处理请求(截取字符串操作),
然后把处理的请求与struts-config.xml 配置的action项里的 path属性比较,是否匹配。匹配就用type属性指定的对应的方法去处理
然后方法 返回字符串 在result里寻找匹配项,然后根据result定义的走向跳转。
/login.do----> /login---->execute()---->返回结果字符串---->指定页面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值