Struts2 架构和OGNL(Object-Graph Navigation Language)表达式语言

1,Struts2 概述

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。

2,Struts2 框架的优点

在这里插入图片描述

3,Struts2 框架的缺点

在这里插入图片描述

4,Struts 2的工作原理图

从一个高水平角度看,Struts2 是一个MVC拉动的(或MVC2)框架,Struts2 的模型-视图-控制器模式是通过以下五个核心部分进行实现的:
操作(Actions)
拦截器(Interceptors)
值栈(Value Stack)/OGNL
结果(Result)/结果类型
在这里插入图片描述

5,Struts2 MVC架构

模型(Model)-视图(View)-控制器(Controller),通常简称MVC,是一种开发web应用程序的软件设计模式。MVC设计模式由以下三部分组成:  
模型——属于软件设计模式的底层基础,主要负责数据维护。  
视图——这部分是负责向用户呈现全部或部分数据。 
控制器——通过软件代码控制模型和视图之间的交互。
在这里插入图片描述

6,Struts2 HelloWorld示例

创建一个Maven的web项目,配置Struts依赖的jar包
注1:保持电脑联网状态

  <dependency>
		<groupId>org.apache.struts</groupId>
		<artifactId>struts2-core</artifactId>
		<version>2.5.13</version>
	</dependency>

在这里插入图片描述
配置好就是以下的样子
在这里插入图片描述

7,添加struts2支持

将struts.xml文件拷贝到项目的src目录下,如图
在这里插入图片描述
注1: struts.xml(核心配置文件)

8,Struts2 Actions动作

1,Actions是Struts2框架的核心,因为它们适用于任何MVC(Model View Controller)框架。 每个URL映射到特定的action,其提供处理来自用户的请求所需的处理逻辑。
2, Struts2中actions的唯一要求是必须有一个无参数方法返回String或Result对象,并且必须是POJO。
在这里插入图片描述
注1:可以扩展ActionSupport类,该类可实现六个接口,包括Action接口。
注2:extends 继承 namespace 虚拟路径

9,创建POJO对象

1,POJO(Plain Ordinary Java Object)简单的Java对象,POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表。
2,POJO有一些private的参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口,如图:
在这里插入图片描述
在这里插入图片描述

10,Struts2 值栈/OGNL

值栈是一组对象,按照提供的顺序存储以下这些对象:
1,Temporary对象
实际中存在各种在页面执行期间创建的temporary对象。例如,JSP标签循环集合的当前迭代值。
2,Model对象
如果在struts应用程序中使用Model对象,则当前Model对象放在值堆栈上的action之前。
3,Action对象
这是指正在执行的当前action对象。
4,命名对象
这些对象包括#application,#session,#request,#attr和#parameters以及所引用的相应的servlet作用域。
在这里插入图片描述
注1:值栈可以通过为JSP,Velocity或Freemarker提供的标签进行访问。我们将在单独的章节中学习到用于获取和设置struts2 值栈的各种标签。你可以在action中获取值栈对象,如上所示:
注2:使用以下方法来操纵值栈对象
1,方法名:Object findValue(String expr)
说明:通过在默认搜索顺序中对值栈评估所给定的表达式来查找值。
2,方法名:CompoundRoot getRoot()
说明:获取将对象推入值栈的CompoundRoot。
3,方法名:Object peek()
说明:获取值栈顶部的对象而不改变值栈。
4,方法名:Object pop()
说明:获取值栈顶部的对象,并将其从值栈中删除。
5,方法名:void push(Object o)
说明:将对象放在值栈的顶部。
6,方法名:void set(String key,Object o)
说明:使用给定的key在值栈上设置一个对象,使其可通过findValue(key,…)检索。
7,方法名:void setDefaultType(Class defaultType)
说明:设置在获取值时要转换的默认类型。
8,方法名:void setValue(String expr,Object value)
说明:尝试使用由默认搜索顺序给定的表达式在值栈的bean上设置属性。
9,方法名:int size()
说明:获取值栈中的对象数。
在这里插入图片描述

11,Struts2 结果类型

1,results标签在Struts2 MVC框架中扮演视图的角色。Action负责执行业务逻辑,下一步就是使用results标签显示视图。如图使示
在这里插入图片描述
以下是js.jsp页面
在这里插入图片描述
点击测试
在这里插入图片描述
结果页面
在这里插入图片描述
注1:最后注意jsp是在webapp创建的
在这里插入图片描述
这里是报假错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值