MVC框架

2021-01-04 16:28

阅读:474

标签:voc   执行流程   config   提示   标签   oca   映射   pat   集成   

MVC框架

什么是MVC框架?

  是为了解决传统MVC模式(Jsp + Servlet + JavaBean)的一些问题而出现的框架。

 

传统MVC模式问题

1、所有的Servlet和Servlet映射都要配置在web.xml中,如果项目太大,web.xml就太庞大,并且不能实现模块化管理。

2、Servlet的主要功能就是接受参数、调用逻辑、跳转页面,比如像其他字符编码、文件上传等功能也要写在Servlet中,不能让Servlet主要功能而需要做处理一下特例。

3、接受参数比较麻烦(String name = request.getParameter(“name”),User user=new User user.setName(name)),不能通过model接收,只能单个接收,接收完成后转换封装model.

4、跳转页面方式比较单一(forword,redirect),并且当我的页面名称发生改变时需要修改Servlet源代码.

 

现在比较常用的MVC框架有:

   struts

   webwork

   Struts2

   Spring MVC

struts2的执行流程?

Struts2的原理?

 技术图片

一个请求在Struts2框架中的处理大概分为以下几个步骤:

1、客户端浏览器发送请求

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);

3、接着FilterDispatcher(StrutsPrepareAndExecuteFilter)被调用,FilterDispatcher

(StrutsPrepareAndExecuteFilter)询问ActionMapper来决定这个请求是否需要调用某个Action;

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher

    (StrutsPrepareAndExecuteFilter)把请求的处理交给ActionProxy;

5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

6、ActionProxy创建一个ActionInvocation的实例。

7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。

 

 

 

面试:

1、浏览器发送请求,经过一系列的过滤器后,到达核心过滤器(StrutsPrepareAndExecuteFilter).

2、StrutsPrepareAndExecuteFilter通过ActionMapper判断当前的请求是否需要某个Action处理,如果不需要,则走原来的流程。如果需要则把请求交给ActionProxy来处理

3、ActionProxy通过Configuration Manager询问框架的配置文件(Struts.xml),找到需要调用的Action类;

4、创建一个ActionInvocation实例,来调用Action的对应方法来获取结果集的name,在调用前后会执行相关拦截器。

5、通过结果集的Name知道对应的结果集来对浏览器进行响应。

 

拦截、判断、寻找、执行、响应

 

Struts2中的拦截器,你都用它干什么?

         java里的拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。

         在AOP(Aspect-Oriented Programming)中拦截器用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。

 

面试:

    struts2中的的功能(参数处理、文件上传、字符编码等)都是通过系统拦截器实现的。

如果业务需要,当然我们也可以自定义拦截器,进行可插拔配置,在执行Action的方法前后、加入相关逻辑完成业务。

使用场景:

1、用户登录判断,在执行Action的前面判断是否已经登录,如果没有登录的跳转到登录页面。

2、用户权限判断,在执行Action的前面判断是否具有,如果没有权限就给出提示信息。

3、操作日志......

    4、......

 

MVC框架

标签:voc   执行流程   config   提示   标签   oca   映射   pat   集成   

原文地址:https://www.cnblogs.com/xidianlxf/p/14214030.html


评论


亲,登录后才可以留言!