struts2数据处理_动力节点Java学院整理
发布时间 - 2026-01-11 03:07:57 点击率:次Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理。值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言。

值栈:ValueStack一种数据结构,操作数据的方式为:先进后出
OGNL : Object-GraphNavigation Language(对象图形导航语言)将多个对象的关系使用一种树形的结构展现出来,更像一个图形,那么如果需要对树形结构的节点数据进行操作,那么可以使用 对象.属性 的方式进行操作,OGNL技术底层采用反射实现。
一:数据的提交方式
,<form>表单提交
<form action="/user/login_Login.action" method="post" >
用户代码:<inputnameinputname="usercode" type="text" ><br>
用户密码:<inputnameinputname="userpswd" type="password"><br>
<inputtypeinputtype="submit" value="登录">
</form>
2,url的方式
http://localhost.egov.com/user/login_Login.action?usercode=admin&userpswd=admin
3,超链接
<a href="/user/delete.action?usercode=admin" rel="external nofollow" >删除</a>
4,异步提交
ajax异步提交数据
二:数据存储
数据的存储依赖于框架提供的拦截器功能,拦截器可以对请求进行拦截,获取所有的请求参数,循环遍历设置到值栈中。框架默认将被请求的Action对象存放到值栈的栈顶。Struts2框架提供三种方式将参数存入值栈
1,属性驱动模式
Action中需要提供参数名称的set方法,框架会通过拦截器将请求参数获取到之后,会循环遍历将参数设置到值栈(栈顶对象)中。
<input name="usercode" type="text" >
Ognl.setValue("usercode",action,"admin");//此时根对象是action
2,模型驱动模式
必须要实现模型驱动接口,属于侵入性开发方式,不推荐使用
需要定义数据模型的类,将属性封装到数据模型类中,Action中只需要定义模型对象的类型属性(必须创建对象赋值),模型对象的get/set属性并不是必须的。
Action类需要实现ModelDriven接口,重写getModel()方法。
<inputnameinputname="usercode" type="text" ><br>表单依然是模型对象的属性名称作为参数名称
Ognl.setValue("usercode",user,"admin");//此时根(栈顶)对象是user对象
3,域驱动模式
与属性驱动的原理是类似,也是通过参数拦截器,将请求参数获取后循环设置到值栈中。
在Action对象中定义模型对象属性,并提供get/set方法;
在表单元素中增加模型对象属性的名称;
<inputnameinputname="user.usercode" type="text" >
Ognl.setValue("user.usercode",action,"admin");//此时根对象是action
三:数据的传递
框架将Http对象和包装后的Map集合对象都存放到ActionContext上下文对象集合中。所以可以根据ActionContext来获取想要使用的对象。
1,获取HTTP对象
ActionContext ac = ActionContext.getContext(); //上下文对象相当于request范围
HttpServletRequest request =(HttpServletRequest)ac.get(StrutsStatics.HTTP_REQUEST);
HttpSession session = request.getSession(false);
ServletContext application = session.getServletContext();
ServletContext application = ac.get(StrutsStatics.SERVLET_CONTEXT);
HttpServletRequest request = ServletActionContext.getRequest(); (推荐使用)
HttpServletResponse response =ServletActionContext.getResponse();
Action类实现ServletRequestAware,或ServletResponseAware (属于侵入性开发方式,不推荐使用)
private HttpServletRequest request ; //set注入
private HttpServletResponse response ;
@Override
public void setServletRequest(HttpServletRequest request) { //实现该方法,该方法由框架调用,传递参数。
this.request= request ;
}
@Override
public void setServletResponse(HttpServletResponse response) {
this.response= response ;
}
2,获取Map集合
ActionContext ac = ActionContext.getContext();
Mapsession = ac.getSession();
Mapsession2 =(Map)ac.get("session");
Mapsession3=(Map)ac.get(ActionContext.SESSION);
Mapapplication = ac.getApplication()
Mapapplication = ac.get(ActionContext.APPLICATION);
Mapapplication = ac.get("application");
3, 获取值栈对象以及参数集合对象
ActionContext ac = ActionContext.getContext(); ValueStack vs = ac.getValueStack(); Map paramts = ac.getParameters();
四:数据的显示
用El表达式的形式,取request对象中的值
${requestScope.username }
而这种表达式的方式可以表示成java代码的方式:
<%
Stringusername =(String)request.getAttribute("username");//被重写的方法,底层是通过ognl查询值栈中的数据
out.print(username);
%>
从request返回取数据,实质上底层是通过Ognl语言操作值栈中的数据。 ActionContext对象的集合和OgnlValueStack值栈的集合为同一个集合对象,所以从值栈的Map集合中取数据,就相当于从ActionContext上下文中取数据。
总结
以上所述是小编给大家介绍的struts2数据处理_动力节点Java学院整理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# struts2数据处理
# Java struts2 package元素配置及实例解析
# Java框架Struts2实现图片上传功能
# Java中的Struts2框架拦截器之实例代码
# Java框架学习Struts2复选框实例代码
# struts2简介_动力节点Java学院整理
# struts2标签总结_动力节点Java学院整理
# struts2拦截器_动力节点Java学院整理
# Java struts2请求源码分析案例详解
# 推荐使用
# 表单
# 拦截器
# 遍历
# 重写
# 小编
# 中取
# 象中
# 是一种
# 多个
# 在此
# 数据结构
# 给大家
# 三种
# 将被
# 数据处理
# 只需要
# 可以使用
# 可以根据
# 以对
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
如何在服务器上三步完成建站并提升流量?
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
如何快速完成中国万网建站详细流程?
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
历史网站制作软件,华为如何找回被删除的网站?
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
如何在云指建站中生成FTP站点?
Laravel如何自定义错误页面(404, 500)?(代码示例)
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
,网页ppt怎么弄成自己的ppt?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
如何用JavaScript实现文本编辑器_光标和选区怎么处理
黑客如何通过漏洞一步步攻陷网站服务器?
如何做网站制作流程,*游戏网站怎么搭建?
Python函数文档自动校验_规范解析【教程】
如何基于PHP生成高效IDC网络公司建站源码?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何正确下载安装西数主机建站助手?
新三国志曹操传主线渭水交兵攻略
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
网站页面设计需要考虑到这些问题
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
昵图网官网入口 昵图网素材平台官方入口
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
bootstrap日历插件datetimepicker使用方法
网站制作软件有哪些,制图软件有哪些?
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
如何确认建站备案号应放置的具体位置?
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
如何在万网自助建站平台快速创建网站?
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel如何配置Horizon来管理队列?(安装和使用)
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何在香港免费服务器上快速搭建网站?
上一篇:可信计算技术在车联网领域的应用
下一篇:服务器配置如何优化网站生成效率?
上一篇:可信计算技术在车联网领域的应用
下一篇:服务器配置如何优化网站生成效率?

