struts中的action是控制层,为啥不是业务层呢?控制层和业务层有啥区别?怎么样分辨呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts中的action是控制层,为啥不是业务层呢?控制层和业务层有啥区别?怎么样分辨呢?相关的知识,希望对你有一定的参考价值。

控制层用于调用业务层的相关代码来实现与数据库的交互等等功能
action中基本不写与数据库交互的代码
而业务层则主要根据程序要实现的功能,而来写具体的代码
以登陆为例
首先在表现层上,将用户名和密码传到action中,action调用业务层中的登录的方法
这个方法也就是查询用户名和密码是否符合,然后返回相应对象给action
然后action将这个对象保存到session或其他中
返回字符串,用以表示登陆成功或失败
当然action中也可以写与数据库交互的代码
但是这样就会很麻烦,不符合MVC的结构,不便于管理
参考技术A action控制层 就如同医院的前台一样 你给她处方 她找人去拿药 拿药的那个就是业务 而acion就是把你的请求转给要处理请求的人。其实就是servlet请求转发。
你当然可以把控制层和业务层写在一起,但是这样一是不符合MVC观点,程序不美,而且不方便维护和可读性。
建议你去看一个项目的目录结构你就会更加了解了。
参考技术B 控制层是用于根据用户的请求转发给不同的业务逻辑进行处理,并把处理后的信息反馈给客服端的!
业务层就是指具体根据控制层提供的信息执行具体的业务逻辑和数据库操作等等!action你可以看作servlet,一般是负责根据请求转发业务的!
参考技术C 业务层提供了一些访问数据库有方法,而控制层可以通过这些方法使从数据库中拿到的数据显示到网页上。

struts in action 读书笔记

1. ActionServlet:Struts 的ActionServlet控制导航流。当ActionServlet从容器接到一个请求,它使用URI(或者“path”)也决定哪个Action来处理请求。


2. Action:用来访问业务逻辑类。一个 Action 可以校验输入,并且访问业务层以从数据库检索信息。为校验输入或者使用输入来更新数据库,Action 需要知道什么值被提交上来。它并不是强制每个Action都要从请求中抓取这些值,而是由 ActionServlet 将输入绑定到 JavaBean 中。


3.ActionForm:输入 bean 是Struts ActionServlet 类的子类。ActionServlet 通过查找请求的路径可以决定使用哪个 ActionForm(输入 Javabean ) ,Action 也是通过同样的方法选取的。ActionForm扩展了org.apache.struts.action.ActionForm类。


4.ActionMapping:Struts将这些细节绑定在一个ActionMapping对象中。每个ActionMapping相对于一个特定的路径。当某个路径被请求时,Servlet 就查询 ActionMapping 对象。ActionMapping对象告诉servlet,哪些个Action,ActionForm,和 ActionForward 将被本次请求使用。每个请求都必须以HTTP响应进行应答。通常,Struts Action 并不自行渲染响应信息,而是将请求转发到其他资源,比如JSP页面。Struts提供一个ActionForward类,用于将一个页面的路径保存为逻辑名称。当完成业务逻辑后,Action 选择并向 Servlet 返回一个 ActionForward 。Servlet 然后使用保存在 ActionForward 对象中的路径来调用页面完成响应。


所有这些细节,关于Action,ActionForm,ActionForward,ActionMapping,以及其它一些东西,都在struts-config.xml 文件中定义。ActionServlet 在启动时读取这个配置文件,并创建一个配置对象数据库。在运行时,Struts 应用根据文件创建的配置对象,而不是文件本身。


 



以上是关于struts中的action是控制层,为啥不是业务层呢?控制层和业务层有啥区别?怎么样分辨呢?的主要内容,如果未能解决你的问题,请参考以下文章

在jfinal中的控制层相当于struts2的action吗

struts2简介

strut2_struts.xml文件配置知识点汇集

struts1.x完整实例

Struts2的常见配置&Action的访问

Action、Dao、DaoImpl、Service、ServiceImpl各自的作用是啥 他们之间有啥关系