Struts2 后台数据传输到页面(域对象传值,值栈(狭义值栈和广义值栈))
来源:互联网 发布:有淘宝开店条件 编辑:程序博客网 时间:2024/06/06 01:15
Struts2 后台数据传输到页面(域对象传值,值栈(狭义值栈和广义值栈))
域对象传值:
域对象: 范围对象,Action类中获取域对象的方式有IOC方式和非IOC方式,详细细看:http://blog.csdn.net/benxiaohai888/article/details/78374307
application---ServletContext
session---HttpSession
request---HttpServletRequest
response--HttpServletResponse
简单的示例:
Action类(LoginAction.java)
package cn.sz.action;import java.util.Date;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import cn.sz.vo.User;public class UserAction {// 域对象传值方法(非IOC方式)public String insert() {//非IOC方式获取域对象ServletContext application = ServletActionContext.getServletContext();HttpServletRequest request = ServletActionContext.getRequest();HttpSession session = ServletActionContext.getRequest().getSession();HttpServletResponse response = ServletActionContext.getResponse(); //可以取值String id = (String) application.getAttribute("id");String name = (String) request.getAttribute("name");String sessionvalue = (String) session.getAttribute("session");System.out.println(id + "," + name + "," + sessionvalue); //可以设置值application.setAttribute("key", "application");session.setAttribute("key", "session");request.setAttribute("key", "request");return "insert";}}
显示页面(index.jsp):
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title></head><body><h1>登录成功后的index界面</h1><p>EL表达式获取值</P>${applicationScope.key }${requestScope.key }${sessionScope.key }</body></html>
值栈传值:
1.什么是值栈?
是存放value值的内存空间,具备先进后出的特点(FILO LIFO).
2. 在struts中有两类值栈,狭义值栈和广义值栈
广义值栈ActionContext,线程安全,值栈中可以设置在当前请求下的key-value
狭义的值栈ValueStack(接口),OGNLValueStack(实现),狭义值栈实现OGNLValueStack对象,线程安全,存储action中的
设置了set方法的属性和值,通常用于与OGNL表达式和struts标签结合使用,狭义的值栈属于广义值栈的一部分.
通常意义上,所说的值栈是指广义值栈
3.后台获得值栈
getContext()---获取广义值栈
get("request")---获取狭义值栈
getValueStack()--获取狭义值栈
getParameters()---获取url之后的key-value对
put()----设置值
自定义拦截器也可以获取值栈:
public String intercept(ActionInvocation invocation) throws Exception {// 这个操作也可以获取广义值栈ActionContext ac = invocation.getInvocationContext();// 如果返回值是null,那么表示此拦截器没有通过;如果返回值不是null,表示可以通过拦截器String invoke = invocation.invoke();return invoke;}
示例代码:
Action类:
public class LoginAction implements Action{@Overridepublic String execute() throws Exception {// 演示用于广义值栈和狭义值栈将后台的数据传输到页面// 获取广义值栈ActionContext ac = ActionContext.getContext();//直接将值放在值栈中,页面可以使用OGNL表达式中的 <s:property value="#attr.attr1" /> 获取内容ac.put("attr1", "attr");// 通过广义值栈获取Session域Map<String, Object> session = ac.getSession();// 这里演示将一个集合数据推送到值栈ArrayList<User> list = new ArrayList<>();User u1 = new User(1, "张三");User u2 = new User(2, "李四");User u3 = new User(3, "王五");list.add(u1);list.add(u2);list.add(u3);session.put("users", list);// 演示将时间推送到值栈中session.put("currentdate", new Date());// 可以用广义值栈来获取狭义值栈ValueStack vs = ac.getValueStack();// 保存要推送到值栈的内容vs.push("string");vs.set("str", "我是狭义值栈要推送到页面的内容");return "success";}}
显示页面index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!-- 引入struts标签库 --><%@taglib uri="/struts-tags" prefix="s"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title></head><body><h1>登录成功后的index界面</h1><!-- struts调试--><s:debug></s:debug>EL表达式:${sessionScope.currentdate }<br><!-- 用于OGNL表达式获取从后台传输过来的数据 --><s:property value="str" /><br><!-- #表示ActionContext.getContext(). #session表示ActionContext.getContext().getSession() --><s:property value="#session.currentdate" /><br><!--遍历后台传输过来的list集合 --><s:iterator value="#session.users" var="user"><s:if test="#user.id==1"><p style="color: red;"><s:property value="#user.id" /><s:property value="#user.name" /></p></s:if><s:elseif test="#user.id==2"><p style="color: blue;"><s:property value="#user.id" /><s:property value="#user.name" /></p></s:elseif><s:else><p style="color: yellow;"><s:property value="#user.id" /><s:property value="#user.name" /></p></s:else></s:iterator><br><s:property value="#attr.attr1" /><br><s:property value="#session.users.{$#this.id==1}.{id}" /><br><br></body></html>
- Struts2 后台数据传输到页面(域对象传值,值栈(狭义值栈和广义值栈))
- SpringMVC后台传递数据到页面(Model来传参和域对象传参)
- 狭义的和广义的软件测试
- Strus2 页面传输数据到后台(普通属性传值,模型驱动传值,域对象传值,OGNL表达式传值)
- jsp页面获取struts2后台的值
- 说说狭义(xiao)创业和广义(da)创业
- struts2怎么实现页面到页面之间的传值?
- struts2 不使用值栈ValueStack 实现 由后台向页面值得传递
- Struts2的值栈和对象栈
- jsp 页面传值 到后台 中文乱码解决方法
- jsp 页面传值 到后台 中文乱码解决方法
- 页面传值对象 到controllerjs写法
- Struts2数据传输机制:ValueStack(值栈)
- Struts2 后台action接收 jsp页面中checkbox中的值
- struts2后台Action接收jsp页面的值
- struts2数据传输到jsp页面方法的总结
- Struts2 Action中传List值到jsp页面
- SpringMVC:页面传值到后台,后台获取页面传值
- Python 安装scikit-learn
- spring学习笔记
- Android源码学习
- javascript 中关于call方法的详解。
- 四种常见的 POST 提交数据方式
- Struts2 后台数据传输到页面(域对象传值,值栈(狭义值栈和广义值栈))
- Quartz报错:java.lang.ClassNotFoundException: org.quartz.jobs.FileScanListener
- 安卓notifyDataSetChanged无效 解决方法
- 人性都是懒惰的
- 百度编辑器ueditor,服务器端config.json配置,上传文件图片视频的保存路径等
- pitch yaw roll是什么
- ubuntu16.04安装最新版本的wine
- 谷歌推Android 8.1开发者预览版,Pixel 2神秘芯片终于派上用场了
- 寒武纪讯飞京东等合搞AI芯片评测标准,作者包括陈云霁陈天石