Struts2 Struts操作类是否违反srp

Struts2 Struts操作类是否违反srp,struts2,coding-style,single-responsibility-principle,Struts2,Coding Style,Single Responsibility Principle,正如我所看到的,Struts 2中的action类有多种职责 首先,我们经常将验证逻辑放在action类的validate方法中。 所以当验证逻辑改变时,我们必须打开类进行修改 其次,action类负责生成jsp文件使用的结果。因此,当我们打算修改视图时,我们通常必须一起修改action类和jsp 第三,action类必须知道其他类的API来运行业务逻辑,并知道如何处理返回的结果 最后,action类的代码变得一团糟。 有没有更好的方法让动作课变得干净? 或者有一本书教你如何编写干净的动作类代码

正如我所看到的,Struts 2中的action类有多种职责

首先,我们经常将验证逻辑放在action类的validate方法中。 所以当验证逻辑改变时,我们必须打开类进行修改

其次,action类负责生成jsp文件使用的结果。因此,当我们打算修改视图时,我们通常必须一起修改action类和jsp

第三,action类必须知道其他类的API来运行业务逻辑,并知道如何处理返回的结果

最后,action类的代码变得一团糟。 有没有更好的方法让动作课变得干净?
或者有一本书教你如何编写干净的动作类代码?

动作类是一个简单的POJO。您可以根据自己的喜好进行清理,只需执行即可

处理程序类的默认输入方法由
Action
接口定义

操作
界面: 首先,我们经常将验证逻辑放在action类的validate方法中。所以当验证逻辑改变时,我们必须打开类进行修改

那是你的选择,但我不会。通常,应通过XML配置处理验证逻辑。如果您有复杂的验证逻辑,那么应该将其隔离在自己的处理程序中,然后将其用作自定义验证器或由
validate
中的薄层调用

S2动作是web层和业务逻辑之间的贴面,包括验证

其次,action类负责生成jsp文件使用的结果。因此,当我们打算修改视图时,我们通常必须一起修改action类和jsp

action类可以用作业务层和视图层之间的DTO,也可以使用单独的实体并使用action仅公开该DTO。无论发生什么,这都是必要的——同样,动作在请求和响应之间起着薄薄的一层作用。你如何选择组织它取决于你

第三,action类必须知道其他类的API来运行业务逻辑,并知道如何处理返回的结果

嗯,是的。任何介于请求和业务逻辑之间的事情都需要知道该做什么。也就是说,它不必这样做,只需将数据从请求传输到业务逻辑即可。到业务逻辑的映射根本不需要硬编码

最后,action类的代码变得一团糟

那是你的错,不是S2的错

public interface Action {
    public String execute() throws Exception;
}