Struts中的控制器

时间:2009-11-03 11:48:38

标签: java model-view-controller design-patterns java-ee struts

MVC中的Controller是什么?

struts.xml还是Servlet(行动类)?

我们的申请中可以有多个Controller吗?

拥有多个控制器是不错的做法?

9 个答案:

答案 0 :(得分:15)

在Struts中,应用程序控制器层代码/功能分为两部分:

  • ActionServletRequestHandler
  • Action班级

ActionServlet的行为类似FrontController pattern

alt text

来自this OnJava article的图片。

答案 1 :(得分:3)

ActionServlet是控制器IMO。

在更广泛的范围内,ActionServlet以及RequestProcessorAction以及来自struts-config.xml的初始化信息可以在struts应用中称为控制器。

答案 2 :(得分:3)

控制器负责拦截用户输入并将其转换为模型要执行的操作。控制器负责根据用户输入和模型操作的结果选择下一个视图。 Controller从浏览器接收请求,调用业务操作并协调视图以返回客户端。

每当请求任何资源时,首先它会进入控制器。 简单来说,我们可以说控制器是一个导航器。它的工作是为传入的请求找到相应的动作类,并将其传递给该特定动作。 或者在技术词汇中,我们可以说它执行映射。

他的控制器是由一个java servlet实现的,这个servlet是Web应用程序的集中控制点。在struts框架中,控制器职责由几个不同的组件实现,如

ActionServlet类 RequestProcessor类 行动类

有关此内容的更多参考,您可以转到以下链接 http://www.allapplabs.com/struts/struts_controller.htm

答案 3 :(得分:2)

struts.xml是控制器。您可以查看此Struts 2 Architecture

答案 4 :(得分:1)

基于Struts的控制器是由许多部分组成的"component"Custom Action classes由应用程序开发人员编写。 Struts ActionServlet由框架提供。 struts-config.xml配置文件由应用程序开发人员编写。框架提供了读取此文件并创建Action * * 对象的代码。所有这些元素一起是"Controller"

有关Struts Action包的更多信息,请参阅以下API文档:

http://struts.apache.org/1.x/apidocs/org/apache/st...ts/action/package-summary.html

答案 5 :(得分:0)

struts Action类实际上是Controller,因为它决定了在处理请求时(从浏览器)接下来会发生什么。 Action类有一个包含控制器逻辑的execute方法。 Action类是使用Command Pattern的一个很好的例子。

struts-config.xml包含路由信息,用于确定请求转发到哪个Controller(Action类)。 最好有多个控制器,根据经验,每个视图有一个控制器,但这不是一个严格的规则,如果视图很复杂并且具有不同的功能,那么每个视图可能有多个控制器值得在控制器内分离关注点。

另外,请注意不要使用业务逻辑来增加Controller类的负担,这会导致控制器中的代码重复,因为代码应该被分解到MVC应用程序的Model层中的业务类。

答案 6 :(得分:0)

您将会知道MVC代表模型 - 视图 - 控制器。

简单地说,Model包含我们的业务组件和逻辑,View包含我们的Presentation技术,Controller控制应用程序的控制和工作流程。

Struts

Struts有两个版本:Struts 1Struts 2

**这两个是不同的框架。

Struts 1基于Servlets。它有一个ActionServlet作为其控制器。

而在Struts 2中我们有过滤器。在此,我们可以使用FilterDispatcherStrutsPrepareAndExecuteFilter等过滤器充当我们的控制器。

**在Struts 2中,Actions充当模型。

Controller的主要工作是决定哪个Action类将处理哪个请求和控制器在struts.xml文件中由我们定义的Configuration的帮助下执行此操作,或者在Struts 2的情况下通过注释来执行此操作。

答案 7 :(得分:0)

我们知道如果我们使用MVC,必须有一个前端控制器,我们应该在web.xml中声明。即在struts2中有两个可用的过滤器

前端控制器

1)org.apache.struts2.dispatcher.FilterDispatcher 2)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

这些前端控制器负责加载struts.xml文件

在struts.xml中,正在处理每个表单 名称 属性 。 操作完成后,控制器将返回到要转发的页面(此操作再次由前端控制器处理)。

希望有所帮助

答案 8 :(得分:0)

  1. 预定义的servlet类是使用的控制器 structs-config.xml用于管理或控制整个应用程序。

  2. 不,你的struts中不能有多个控制器     应用它只是反对MVC规则(你不能有更多     应用程序中的一个servlet)struts是基于MVC设计的。