Struts2中在Action里面向前端页面传值的方法总结
由于在Action中并不能直接诶访问Servlet API,但它提供了相关类ActionContext来访问HttpServletRequest、HttpSession和ServletContext,所以在向前端页面传值的方法就出现了多样化。一般我们经常使用的就是通过request、session来传值,至于Application范围这一级别的基本上用的少。
1. 首先如果变量是Action的全局变量,并且定义了Setter方法,那么此时无须做任何更多工作,只要它有值在前端页面就可以取到。此时取值的方法大概有这几种:
- 使用Java代码:<%= request.getParameter(“str”)%>, <%=request.getAttribute(“str”)%> 这两种方式通常不推荐,原则上html代码不用掺杂Java代码;
- 使用EL表达式:${str};
- 使用Struts2标签:<s:property value=”str” /> ;
- 使用OGNL表达式:<s:property value=”#request.str”/>.
2. 对应方法体内的局部变量,我们可以放在request里面,也可以放在session里面。但是,只有在必要的时候才放在session里面。
(1)放在request里面:
a. 直接调用ActionContext提供的put方法:ActionContext.getContext().put(key, value);此时的取值方式有:
- 使用Java代码:<%=request.getAttribute("str") %>,同样不推荐;
- 使用EL表达式:${str };
- 使用Struts2标签:<s:property value=”str”/>;
- 使用OGNL表达式:<s:property value=’'#request.str”/>.
b. 使用ActionContext提供的get方法:Map request = (Map)ActionContext.getContext().get("request"); request.put(key, value);此时的取值方式有:
- 使用Java代码:<%=request.getAttribute("str") %>,同样不推荐;
- 使用EL表达式:${str };
- 使用OGNL表达式:<s:property value=’'#request.str”/>.
c. 使用ServletActionContext访问HttpServletRequest得到Servlet中的request:HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute(key, value);此时的取值方式有:
- 使用Java代码:<%=request.getAttribute("str") %>,同样不推荐;
- 使用EL表达式:${str };
- 使用OGNL表达式:<s:property value=’'#request.str”/>.
(2)放在session里面:
a. 使用ServletActionContext访问HttpServletRequest得到Servlet中的request,再由request得到session:HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession(); session.setAttribute(key, value);或session.putValue(key, value);(已过时,不推荐使用),此时的取值方式有:
- 使用Java代码:<%=session.getAttribute("str") %>或<%=session.getValue("sstr") %>(与putValue对应,已过时,不推荐使用);
- 使用EL表达式:${str };
- 使用OGNL表达式:<s:property value=’'#session.str”/>.
b.直接使用ActionContext.getContext().getSession():这种方式取值与上面的完全一样,不再赘述。
Struts2中在Action里面向前端页面传值的方法总结的更多相关文章
- struts2中,Action通过什么方式获得用户从页面输入的数据,又是通过什么方式把其自身的数据传给视图的?
struts2中,Action通过什么方式获得用户从页面输入的数据,又是通过什么方式把其自身的数据传给视图的? 解答: 1)可以直接通过与表单元素相同名称的数据成员(需要存在符合命名规范set和get ...
- 在Struts2中配置Action
在Struts2中配置Action <package>: 1.定义Action使用<package>标签下的<action>标签完成,一个<package&g ...
- Asp.net 页面传值的方法
ASP.NET页面传值的方法 From:Refresh-air 在面试的时候,经常会遇到这样的问题,其实我们会对其中的几种方法比较熟悉,因为项目中经常使用.但是要全面的回答ASP.NET中页面传值的方 ...
- ASP.NET页面传值的方法
ASP.NET页面传值的方法 From:Refresh-air 在面试的时候,经常会遇到这样的问题,其实我们会对其中的几种方法比较熟悉,因为项目中经常使用.但是要全面的回答ASP.NET中页面传值的方 ...
- struts2中把action中的值传递到jsp页面的例子
例子: RegistAction的代码: package com.wss.action; import javax.servlet.http.HttpServletRequest; import or ...
- struts2中关于jsp页面向action传值出现乱码问题
在JSP页面输入中文并传给后台的时候,常常会出现乱码问题,产生乱码的原因:java在进行传值的时候,默认用的是iso-8859-1的编码形式进行传输,而我们jsp页面常用的则是utf-8的编码形式.所 ...
- 详解struts2中配置action的方法
如何解决action太多的问题??我们因为需要不同的方法,所以往往建立很多不同的类,但是每个类中往往仅仅几行代码,不仅浪费了时间,而且配置起来也很繁琐,所以,建立一个共有的类,然后根据以下方式来操作, ...
- 07. struts2中对Action的管理方式
web.xml配置文件的常用代码 <filter> <filter-name>struts2</filter-name> <filter-class>o ...
- mvc中在Action里调用另一个Action
今天做东西时发现一个新东西.即在一个Action调用另一Action.前提是同一个控制器.(没在一个控制里的没试过) 调用方法: public ActionResult Test1(){ //to ...
随机推荐
- ENOVIA 基础
Part 零件 Part Master PM 如何表示零件:每当创建一个Part(给定一个Part Number),都回创建一个Part Master Part Master管理每个Part的最本质的 ...
- PHP截取汉字乱码问题解决方法mb_substr函数的应用
首先 1.确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从你Php安装目录extensions里拷入Windows/system32里面. 2.在wind ...
- Joomla JEvents 组件
JEvents http://extensions.joomla.org/extensions/extension/calendars-a-events/events/jevents Getting ...
- python Tkinter 全屏显示
#! /usr/bin/env python # -*- coding: utf-8 -*- import Tkinter as tk class FullScreenApp(object): def ...
- bash 变量使用技巧
- SQL Server 查看备份集元数据的 4 种方法。
方法 1. restore labelonly 方法 2. restore headeronly 方法 3. restore filelistonly 方法 4. restore verifyonly ...
- select自动选中
//筛选 var typeid = "<!--{$typeid}-->"; var bigclassid = "<!--{$bigclassid}--& ...
- JavaEE Tutorials (26) - 批处理
26.1批处理介绍391 26.1.1批处理作业中的步骤391 26.1.2并行处理392 26.1.3状态和判定元素392 26.1.4批处理框架功能39326.2Java EE中的批处理394 2 ...
- getgrent
http://baike.baidu.com/link?url=JNyoNvukL-LP7ayYlNNWLv2gPOzn-bjiwuX1CE_QwUTyrRGCWu4NhDW-JznHQoG4aIfw ...
- ExecuteReader(),ExecuteNonQuery(),ExecuteScalar(),ExecuteXmlReader()之间的区别
本文来自:http://www.cnblogs.com/zhouxiaxue/archive/2006/05/12/398266.html http://www.cnblogs.com/yaoxc/a ...