Struts2 “.”和“[]”操作符:获取ActionContext中的所有内容
Struts2 框架在 OGNL 的基础上得到了增强,提高了 Struts2 对数据的访问能力。在 Struts2 框架中,OGNL 上下文作用于 Struts2 中的 ActionContext 对象,ActionContext 对象是 Struts2 框架中的一个核心对象。
在 Struts2 框架中,当接收到一个 Action 请求时,Struts2 框架会创建 ActionContext 对象并示例化值栈等对象,由于 OGNL 上下文作用于 ActionContext 对象,因此通过 OGNL 表达式可以获取 ActionContext 中的所有内容,而获取这些内容时使用的是“.”和“[]”操作符。
上述代码分别相当于调用了 application.getAttribute("name")、request.getAttribute("name")、session.getAttribute("name")、request.getParameter("name")方法。
创建 OgnlAction.action 文件,在其中定义变量和编写 get 方法和 set 方法。
创建 index.jsp 文件,应用“#”获取相应资源的属性,关键代码如下:
request.userName:这个属性来自request
session.userName:这个属性来自session
application.userName:这个属性来自application
在 Struts2 框架中,当接收到一个 Action 请求时,Struts2 框架会创建 ActionContext 对象并示例化值栈等对象,由于 OGNL 上下文作用于 ActionContext 对象,因此通过 OGNL 表达式可以获取 ActionContext 中的所有内容,而获取这些内容时使用的是“.”和“[]”操作符。
语法:
#application|request|session|attr|parameters.name
或#application|request|session|attr|parameters.['name']
这两个操作符用于获取 ActionContext中 的所有内容,即获取 application、request、session、attr 和 parameters。上述代码分别相当于调用了 application.getAttribute("name")、request.getAttribute("name")、session.getAttribute("name")、request.getParameter("name")方法。
示例
本示例使用“#”来读取 ActionContext 对象中的一些数值,然后将获取的数据输出到页面中。创建 OgnlAction.action 文件,在其中定义变量和编写 get 方法和 set 方法。
创建 index.jsp 文件,应用“#”获取相应资源的属性,关键代码如下:
<body>//使用“#”获取属性 <p>request.userName:<s:property value="#request.userName"/></p> <p>session.userName:<s:property value="#session.userName"/></p> <p>application.userName:<s:property value="#application.userName"/></p> <p>attr.userName:<s:property value="#attr.userName"/></p> </body>}运行结果如下:
request.userName:这个属性来自request
session.userName:这个属性来自session
application.userName:这个属性来自application
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算