MVC架构与Struts实战:现代软件层次结构详解

需积分: 4 7 下载量 3 浏览量 更新于2024-08-02 收藏 571KB DOC 举报
软件框架:MVC与Struts.doc 本文档主要讨论了软件架构中的Model-View-Controller (MVC) 模式,以及如何通过Struts 1.2框架结合纯Java 2 Enterprise Edition (J2EE) 实现一个销售数据录入的例子,以便对比学习Struts框架和非框架的MVC设计。MVC是一种常见的软件设计模式,它将应用程序划分为三个核心组件: 1. **Model**(模型):负责处理业务逻辑和数据,它是应用程序的核心部分,与具体的数据库交互,管理数据状态。在Struts中,模型通常对应于业务对象和服务类。 2. **View**(视图):负责展示数据给用户,它是用户界面的组成部分,接收用户的输入,并根据Model的状态更新显示。在Struts中,视图可能由JSP页面、HTML和相关的ActionServlet来实现。 3. **Controller**(控制器):处理用户输入,协调Model和View之间的交互,它接收用户的请求,调用相应的Model方法,并将结果反馈给View。在Struts中,Action类扮演了控制器的角色,它与Model交互并驱动视图。 文档中的冯诺依曼计算机体系结构部分解释了计算机硬件如何通过简单指令执行复杂任务,如数据操作和指令跳转,这与MVC的设计理念相呼应,因为MVC同样强调分离关注点,使得代码更易于维护和扩展。 在Struts 1.2中,开发者可以利用Action类的编程逻辑来模拟这些跳转,通过条件判断和循环结构来控制程序流程,这正是MVC模式中控制器功能的体现。通过这个实际例子,读者可以理解如何在框架支持下构建可扩展、模块化的应用,并体会到MVC模式带来的清晰责任划分和代码组织优势。 学习Struts框架时,读者不仅能掌握如何使用MVC模式,还能了解如何将这个模式与J2EE的组件(如Servlets、JSP和Session)结合起来,提高开发效率和应用程序的灵活性。通过对比非框架的MVC实现,读者可以进一步理解框架对于简化开发过程、降低耦合度和提高代码重用性的价值。

postman接口调用idea,idea控制台报错org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:225) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131) at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121) at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:807) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1061) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:961) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)

2023-06-08 上传