MVC以及Struts2工作流程

MVC是一种软件架构的思想,将一个软件系统划分成三种不同类型的模块,分别是模型(model),用于封装业务逻辑。视图(view,提供用户操作的接口(提供业务数据的展现,并且,用户也可以通过视图来提交请求)。控制器(controller,将视图与模型解耦,也就是说视图要向控制器发送请求,由控制器来决定调用哪一个模型来处理,反过来,模型处理之后的结果也交给控制器,由控制器来选择合适的视图来展现。

Model:使用java类来实现(也可以使用spring容器管理的javabean,ejb等)

View:使用jsp

Controller:使用servlet或者filter

优点:

1.       model可以被多个view共享,model处理之后的结果可以使用不同的界面来展现,多种不同类型的界面,可以调用相同的model 来处理。

2.       model可以当便测试(如,将业务逻辑写在了servlet力需要部署servlet然后才能测试)如果也业务逻辑写在一个java类当中,测可以立即测试

3.       方便分工合作

4.       方便代码的维护

缺点:

增加代码量(相应的开发周期要延长,并且,要相应增大了设计的难度)。所以,一般来说,对于需要良好的可维护性且项目规模比较大的项目可以用MVC

 

Struts2框架的工作流程图

Struts2框架的工作流程

1)  服务器启动,创建StrustsPrepareAndExecuteFilter对象,并解析struts.xml配置文件

2)  客户端发出action请求后,控制器会调用ActionMapperAction映射器)完成请求与Action组件之间的映射,便于调用Action处理

3)  通过ActionMapper处理后,接着调用ActionProxyAction代理)提取请求对应的配置文件信息,创建ActionInvocationAction执行者)对象,ActionProxy通过ConfigurationManager(配置管理器)解析和获取struts的配置信息

4)  通过ActionInvocation完成拦截器、ActionResult组件的调用

5)  生成响应信息后,为客户端响应

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个请求在Struts 2框架中的处理大概分为以下几个步骤。  客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入 http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)请求。  请求被提交到一系列(主要是3层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、 FilterDispatcher)。注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter Filters、SiteMesh等),最后到FilterDispatcher。  FilterDispatcher是控制器的核心,就是MVCStruts 2实现中控制层(Controller)的核心。  FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。  ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类。例如,用户注册示例将找到UserReg类。  ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。  一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。 Struts 2的核心控制器是FilterDispatcher,有3个重要的方法:destroy()、doFilter()和Init(),可以在Struts 2的下载文件夹中找到源代码,如代码1所示。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值