首页 > 其他分享 >Struts 学习笔记1 -Struts Framework 概览

Struts 学习笔记1 -Struts Framework 概览

时间:2023-08-10 10:07:59浏览次数:34  
标签:Struts 概览 视图 Framework MVC Action org action


作者: bruce -- Java研究组织


Tuesday, January 21 2003 11:06 AM





Struts开始于2000年3月,1.0在2001年7月发布。采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。MVC设计模式把一个系统分成3个相互协调的部分:


Model(模型)
模型用于封装系统的状态

View(视图)
是模型的表示,提供用户交互界面。当模型状态发生变化时,视图应该得到通知,以便更新视图。

Controller(控制器)
接受来自视图的请求,修改模型的状态。

在基于JSP/Servlet的Web应用中要使用MVC模式,需要解决一个问题。我们知道,HTTP的底层是TCP/IP协议,而TCP/IP是一种无状态连接的协议,那么如果我们的模型发生了变化,就无从通知视图。Struts采用了在“JSP规范v0.92”中提到的MVC Model 2,这是对MVC在Web上应用的修订版。图示如下:


图表 1:MVC Model 2(From Malcolm Davis)

Struts应用有3个主要部件:一个Servlet Controller(由Struts提供,org.apache.action.ActionServlet,以下简称controller)及负责具体业务处理的Action类(org.apache.action.Action的基类);Jsp页面(viewer);应用的业务逻辑封装(model)。Struts 的中心控制器(ActionServlet)接受所有来自客户端的请求,并根据系统的配置(Struts-config.xml)路由HTTP请求到其他Action对象(开发者实现的org.apache.struts.action.Action的子类),在这些Action对象中会进行所有的业务操作,比如插入一条订单,修改一条记录。处理完毕,由Struts的ActionServlet转向到JSP页面,将处理结果返回给客户端。从这儿可以看出在Struts中ActionServlet担任了重要的角色,由它控制所有的程序流转,是MVC三个相对独立的部分协调工作,提供系统的完善功能。从下图可见Struts是MVC Model 2的一个典型应用。

图表2:Struts工作机理(From Malcolm Davis)
在Struts启动时,controller会读入一个配置文件struts-config.xml,其中定义了前端请求的url与相应的Action类及使用的Form类的映射关系,下面是一个struts-config.xml中的片断:

<action    path="/logon"
       type="org.apache.struts.webapp.example.LogonAction"
       name="logonForm"
       scope="request"
       input="/logon.jsp">
</action>


从中可以看出,这个action会响应url类似于/logon的请求(在后面我们会看到,这儿的实际的url要根据在web.xml中配置,比如可能为/logon.do或/logon.other之类的带后缀的url),负责处理这个请求的action类是org.apache.struts.webapp.example.LogonAction,使用的FormBean是logonForm,scope界定了这个FormBean存在的范围是只在当前request中存在。

struts会读入这些设置,生成相应的org.apache.action.ActionMapping对象。controller正是使用这些mapping来把HTTP请求转发到应用的actions。一个ActionMapping指定了

  • 一个请求URI
  • 对应的类(Action的子类)
  • 需要的属性

对于一个DB应用,

  • 一个商业逻辑Bean用于连接、查询数据库
  • 这个Bean返回结果到Action
  • Action将这些结果存储到request的form bean中
  • Jsp显示


标签:Struts,概览,视图,Framework,MVC,Action,org,action
From: https://blog.51cto.com/u_16147814/7030994

相关文章

  • jQuery学习之:jqGrid表格插件——从Struts2获得数据
    jQuery学习之:jqGrid表格插件——从Struts2获得数据 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://polaris.blog.51cto.com/1146394/264465之前谈到了jqGrid与Serlvet/JSP集......
  • Django REST framework
    简介在Django框架基础之上,进行二次开发用于构建RestfulAPI简称为DRF框架或RESTframework 特性提供了强大的Serialize序列化器,可以高效进行序列化与反序列化操作提供了极为丰富的类视图、Mixin扩张类、ViewSet视图集提供了直观的We......
  • JavaSE概览
    一、JavaSE基础day01#day011.Java语言发展史2.Java语言跨平台原理3.JRE和JDK4.常用DOS命令5.HelloWorld案例6.注释7.关键字8.常量9.数据类型10.变量11.变量使用的注意事项12.标识符13.类型转换day02#day021.算数运算符2.字符的+操作3.字......
  • ios 自制Framework 获取指定bundle并读取里面的资源
    原文地址:https://zhanglei.blog.csdn.net/article/details/121673288目录一、前言二、访问应用资源三、Framework中的资源存放四、访问Framework中指定的bundle五、访问bundle中的资源六、建议Framework与bundle分开存放一、前言应用中某些模块需要组件化,组件化后的工程最后会......
  • 使用Entity Framework Core进行数据库操作
    当使用EntityFrameworkCore(EFCore)进行数据库操作时,你需要首先设置数据库上下文(DbContext),定义实体类(Entity),然后通过上下文来执行CRUD(创建、读取、更新和删除)操作。下面是一个简单的示例,演示如何使用EFCore进行数据库操作。安装EFCoreNuGet包:首先,你需要在项目中安装Entity......
  • Cannot resolve org.springframework.boot:spring-boot-starter-parent:2.4.3
    环境IDEA:2020-1-3MAVEN:3.6.2Spring-boog:2.3.4问题描述在pom.xml中写入所需依赖后,通过MAVEN加载依赖无法完成,报错异常信息Cannotresolveorg.springframework.boot:spring-boot-starter-parent:2.4.3问题原因应该是本地仓库中有之前由于网速不好未下载完成的文件,M......
  • 探索ASP.NET Framework WebAPI的简介与应用
    一、什么是WebAPI?1.1-什么是WebAPI?WebAPI是一种用开发系统接口、设备接口API的技术,基于Http协议,请求和返回格式默认是Json格式。比WCF简单、更通用;比WebService更节省流量,更简洁。1.2-WebAPI的特点?Action方法直接返回对象,专注于数据更符合Restful的风格有利于独立于IIS部署Action可......
  • 探索ASP.NET Framework WebAPI的简介与应用
    一、什么是WebAPI?1.1-什么是WebAPI?WebAPI是一种用开发系统接口、设备接口API的技术,基于Http协议,请求和返回格式默认是Json格式。比WCF简单、更通用;比WebService更节省流量,更简洁。1.2-WebAPI的特点?Action方法直接返回对象,专注于数据更符合Restful的风格有利于独立于IIS部......
  • Django Rest Framework 教程及API向导
    DjangoRestFramework教程及API向导。一、请求(Request)REST_FRAMEWORK中的Request扩展了标准的HttpRequest,为REST_FRAMEWORK增加了灵活的request解析和request认证。1、请求.data:获取请求的主体,相当于request.POST和request.FILES.query_params:  request.GET的重命名.p......
  • 数据仓库概览
    数据仓库概览1.基本概念1.数据仓库架构数据仓库环境包括操作型系统和数据仓库系统两个部分。操作型系统的数据由各种形式的业务数据组成,这些数据经过抽取、转换和装载(ETL)过程进入数据仓库系统。架构方法数据集市架构Inmon企业信息工厂架构Kimball数据仓库架构混合型数据......