Struts1和struts2的区别

    xiaoxiao2025-05-25  8

    Struts2是从Struts1发展而来,但实际上Struts2与Struts1在框架的设计思想上面还是有很大的区别,Stuts1有个核心控制器,但是只提供了一个接口,也就是execute,还要配置actionform之类的,很麻烦,所以依赖性比较强;而Stuts2是针对拦截器开发的,也就是所谓的AOP思想,可以配置多个action,用起来比较方便,但是因为请求之前的拦截器有一些注入的操作,速度相对Stuts1来说慢一点。 

    Servlet 依赖:  Struts1  严重依赖于Servlet Struts 2 不依赖于容器

    因此对Struts1的Action进行测试的时候是很困难的,需要借助与其他的测试工具,Struts2的Action可以象测试其他的一些Model层的Service类一样进行测试

    控制器:

    struts1的前端控制器是一个Servlet,名称为ActionServlet

    struts2的前端控制器是一个filter,名称为FilterDispatcher,在struts2.1中叫StrutsPrepareAndExecuteFilter

    请求参数

    struts1中使用formbean封装请求参数

    struts2中直接使用action的属性来封装请求参数

    Struts1的运行原理

    1)客户端向容器(如Tomcat)提交一个请求

    2)核心控制器ActionServlet解析struts-config.xml

    3)找到相对应的Action

    4)Action处理完业务,跳到相应的jsp页面

    5)jsp响应给客户端

    struts2的运行原理

    1、tomcat 启动的时候会加载 web.xml 、核心控制器FilterDispatcher 会加载并解析 struts.xml

    2、客户端会发送一个请求到 action 、FilterDispatcher  会根据后缀名进行拦截

    3、FilterDispatcher根据struts.xml  的配置文件信息 找到 某个action 对应的某个类里的指定方法

    4、执行相关的业务逻辑最后返回 一个String

    5、<action/>里配置<result/> name的属性值与返回的String进行匹配,跳转到指定的jsp 页面

    Struts1的Action是单实例的,

    一个Action的实例处理所有的请求

    Struts2的Action是一个请求对应一个实例

    每次请求时都新new出一个对象

    转载请注明原文地址: https://ju.6miu.com/read-1299257.html
    最新回复(0)