关于struts2的Action类调用Model(实体类)方法问题:需不需要在实体类中添加无参的构造方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于struts2的Action类调用Model(实体类)方法问题:需不需要在实体类中添加无参的构造方法相关的知识,希望对你有一定的参考价值。

在Action类(struts.xml映射到的class)中,声明一个实体类对象,实体类中需不需要无参的构造方法??之前听讲师说当你传一个实体类
的属性给Action后,struts帮你实例化实体类需要实体类中有个无参数的构造方法。但是今天我在实体类中没有写构造方法,但是没有报错
,为什么?求详解。

java虚拟机在编译程序 当遇到需要new一个类时 按你声明的这个类的调用构造器及参数会去这个类内部寻找其相应的构造方法 而一般我们用的就是无参构造器 就是后面括号内什么都不写的那种 如果这时你的类里没有写构造器 jvm会去你的父类寻找父类构造器并执行 没有显式继承即没用extends关键字的情况 会调用object祖类构造 所以没写不会报错 参考技术A 不写任何构造器的时候系统会帮你默认生成无参构造器 写了就不生成构造器了 参考技术B struts实例化时,是通过反射调用无参构造方法,如果这个实体没写任何构造方法,不会报错,但是只写有的构造方法,肯定会报错 参考技术C 一般默认的是无参的,不过你也可以添加一个。几行代码的事情 参考技术D struts自动生成了一个无参的构造方法。

ssh的Struts

参考技术A

1.Struts框架结构 如右图: Struts对Model,View和Controller都提供了对应的组件。
在右图中,ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。
Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。
2.Model部分 由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。
JavaBean则封装了底层的业务逻辑,包括数据库访问等。
3.View部分 该部分采用JSP实现。
Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。
4.Controller组件 Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。
系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。
业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。

以上是关于关于struts2的Action类调用Model(实体类)方法问题:需不需要在实体类中添加无参的构造方法的主要内容,如果未能解决你的问题,请参考以下文章

Struts2框架的大致流程

web里的action、dao/model、service、util是干啥的?

Struts2_Action学习总结

DefaultActionInvocation类的执行action

Struts2中如何从action的一个方法中跳转到另一个action的方法中

ssh的Struts