[Java面试]五:常见面试题之框架篇Struts2

7 篇文章 0 订阅

我的博客首页:http://blog.csdn.net/m0_37116405
我的GitHub首页:https://github.com/KissLouis


  1. 框架组成部分
    1. 核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。
  2. Struts2工作流程
    1. 客户端向Servlet容器(如Tomcat)提交一个请求
    2. 请求经过一系列过滤器(如ActionContextCleanUp过滤器等)
    3. FilterDispatcher核心控制器被调用,询问ActionMapper来决定请求是否需要调用某个Action
    4. 如果ActionMapper决定需要调用某个Action,核心控制器把控制权委派给ActionProxy (备注:JSP请求无需调用Action)
    5. ActionProxy通过Configuration Manager询问框架的配置文件(struts.xml),找到需调用的Action类
    6. ActionProxy创建一个ActionInvocation的实例
    7. ActionInvocation负责调用Action,在此之前会依次调用所有配置的拦截器
    8. 一旦Action执行完毕,ActionInvocation负责根据结果码字符串在struts.xml的配置中找到对应的返回结果
    9. 拦截器将再次执行
    10. 过滤器被再次执行
  3. 拦截器和过滤器的区别
    1. 过滤器依赖于servlet容器,而拦截器不依赖于servlet容器
    2. 拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
    3. 在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用。
  4. Struts2的设计模式
    1. web应用程序启动时就会加载并初始化ActionServler。
    2. 用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法.
    3. Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。
  5. JSP和Struts的区别
    1. JSP通常用于MVC的View层,Struts1,Struts2用于MVC的Control层。
    2. JSP用来展示页面信息,使用servlet API封装而成,代替servlet中response向客户端输出HTML等页面信息。这样做更利于界面设计与输出,而不用使用代码将HTML页面元素输出。Struts将一个Servlet实例封装成核心控制拦截器,然后通过配置文件,分发处理给不同的action处理(这里的action类似于一个servlet)。
    3. JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
  6. Struts2的优缺点
    1. 优点
      1. 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现。
      2. 丰富的标签库,大大提高了开发的效率。
      3. Struts2提供丰富的拦截器实现。拦截器就是一个一个的小功能单位,用户可以将这些拦截器合并成一个大的拦截器,这个合成的拦截器就像单独的拦截器一样,只要将它配置到一个、Action中就可以。
    2. 缺点
      1. Action类就会被这些表单属性弄的很臃肿,让人感觉会很乱。
      2. Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系统的复杂度。

常见面试题,还需补充。
如果本篇博文中存在问题,烦请指出,本人及时修改,谢谢阅读!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值