面试时能和面试官聊的一些struts1的特性

最近参加了几次面试,很多都会问道struts框架,所以自己准备了一些能够和面试官聊的东西,以及一些有可能给在面试官的留下深刻印象的话题。现在我成功找到了工作,所以

把这些东西整理了下,希望给在金融危机中找工作的朋友一点帮助。
一、什么是struts
在我们用servlet和jsp做web工程的时候,不可避免的要去对客户端传过来的数据进行处理,并且还要做出相应的反应。struts就是对这个过程中相对不变的部门内容进行初步的封

装。
二、struts的原理
struts是一个按MVC模式设计的web层框架,其实它就是一个大大的servlet,我们可以在web.xml文件中将符合某种特征的所有请求到交给这个servlet处理,这个servlet再参照一个

配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理.servlet把请求交给action去处理之前,会讲请求参数封装成一个formbean对象,然后

调用这个formbean的validate方法进行校验,校验通过后则将这个formbean对象传递给action的execute方法。actionForward对象通过struts-config.xml配置文件中的配置关联到

某个jsp页面,这样可以实现action程序代码与返回的jsp页面名称的解藕.图,这个结果视图
三、高级特性
1、actionform的数据填充和页面显示
actionform是存放request,session等中的,具体在哪里是在action的配置文件的scope中配置的,它的名字是由attribute属性指定的,通常我们都不指定,那么这个时候它的名字

与name属性的值一直
2、解决配置文件膨胀问题,
使用配置文件数组来初始化配置信息;
使用DispatcherAction分发方法;
在配置文件中使用,把其他的配置文件引入到一个默认的struts-config.xml文件中
3、DispatcherAction的应用和配置
dispatcheraciont是在struts-config.xml中配置perameter属性,这个方法指定了在访问该action时需要传递一个方法名被perameter值所指定,
内部实现:首先获得调用getParameter()获得parameter的值
接着调用getMethodName获得将要调用方法的名字
最后通过反射调用应用程序中的相应的方法
4、MappingDispatcherAction的应用和配置
MappingDispatcherAction继承dispatcherAction,配置文件中parameter指定的就是要访问的方法
其实现是通过重写dispatcherAction中的getMethodName方法,放回的就是parameter指定的名称
5、action配置中必须配置path和type,include,forword,
6、struts是不安全的,他的默认配置是单实例的,也就是说在一个应用中对于每一个action在内存中只存在一个实例。所有的请求都共享一个action实例,所以在action类中的字

段会被所有请求共享,存在actionform中的数据有可能被其他的线程访问到,所以说struts不是线程安全的。但是我们通过配置也可以让action实例存在多份,在struts配置文件

中为同一个action类。配置多个action映射
8、ActionConfig,FormBeanConfig,ForwardConfig分别代表的是action,formbean,forward的配置信息,ActionMapping是ActionConfig的子类
9、action中可以直接使用response返回应答结果,但是不能返回forward对象,否则forward对象的内容会把response直接返回的内容冲掉
四、核心类
1、ActionServlet:主要功能初始化配置文件(struts-config.xml),实例化成ActionConfig,FormBeanConfig,ForwardConfig对象数组;当一个请求到来的时候ActionServlet获得一

个RequestProcessor对象来process这个请求。
2、RequestProcessor:处理请求的过程
(1)、解析访问的路径信息,把应用路径和后缀名去掉剩下的就是对于action的路径path
(2)、处理Locale,Content,Cache等
(3)、根据路径名path找到需要的action的配置信息ActionMapping(ActionConfig),
(4)、处理formbean,现在作用域中查找是否存在formbean,如果不存在根据FormBeanConfig获得一个formbean
(5)、填充找到的formbean,根据配置决定是否需要验证
(6)、获得一个action根据ActionMapping,如果有直接用,没有就new一个
(7)、调用processActionPerform方法,执行action中的execute的代码,并获得ActionForward
(8)、根据获得的actionforward找到相应的jsp,返回到视图层

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值