转+总结!! 关于jsp页面取值方式
1. 前台往后台传值,通过提交表单,在后台有set,get方法,可以直接取到。如果通过request.getParameter(paramName) 去获取通过会报空指针异常。 其中request是HttpServletRequest的实例。解决的方法是,在后台action类里面定义request的get/set方法。其中get方法要这样写:
public HttpServletRequest getRequest() {
if (request == null)
request =ServletActionContext.getRequest();
return request;
}
这时,通过getRequest().getParameter(paramName)就可能成功的获取前台传过来的请求参数值。
顺便提一句,并不是前台提交表单的每个表单域都会生成请求参数的,而是有name属性的表单域才生成请求参数。如果有多个表单域有相同的name属性,则多个表单域只能生成一个请求参数,只是该参数有多个值。如果某个表单域设置了disabled=“disabled”,则该表单域不再生成请求参数。
2. 对于表单内,属性有name的表单域,只要在后台有这个name属性的值一样的成员变量的get/set方法。该表单域的值就可以自动获取了。比如<input name=”ask” type=”text” value=””/>, 在后台action里面定义了一个成员变量ask,且有setAsk() 和getAsk()方法,<inputname=”ask” type=”text” />的value就可以动态从后台设置获取。
3. 第二种获取值的方法:EL表达式:${param}。不管是后台传来的值,还是其他前端页面传来的值,都可以通过${}获取到。后台传过来的属性值(也就是在后台通过setAttribute()方法设置的属性)也可以通过EL表达式取得。顺便提一下。在前端页面通过request.setAttribute()设置的属性值,在后台,以及跳转页面都获取不到(原理不熟,不过感觉不应该,但尝试下是这样的情况)。
4. 通过struts2标签获取:<s:property value=””/>。其中这里需要注意一点:value属性取值,什么时候要加“#”,什么时候不用加?
回答:如果取ValueStack中的值时,是不需要带#的,可以直接取。比如Action实例的属性值是存储在ValueStack中的,所以取Action中的属性是不需要带#号的。注意在使用<s:iteratorid="it" value="attrName">时,后使用it去取对象属性时,是需要加#号的。取Stack Context里面的值,都需要加#。
可能有读者不知道ValueStack和Stack Context分别存储什么。
这里在帮大家贴出网上别人给出的答案:(常见的)
valuestack:action所有成员变量,fieldErrors,actionErrors,actionMessage,exception以及你自定义的拦截器或action里自己写进去的变量
eaPriceJsonStr是action中的属性(有set/get方法)
<div >1---${eaPriceJsonStr }---</div>
<div >2---${action.eaPriceJsonStr }---</div>
<div >3---<s:property value="eaPriceJsonStr"/>---</div>
<div >4---<s:property value="#action.eaPriceJsonStr"/>---</div>
<div >5---<s:property value="#request.eaPriceJsonStr"/>---</div> 都可以
Stack Context:parameters、request、session、application、pageContext这些web容器内置对象,还有就是页面通过<s:set/><s:iterator/>等标签设置的临时变量.
一、用struts标签获取:<s:property value="#session.sessionid"/>
二、<%=request.getSession.getAttribute("sessionid");> session也是内置对象之一,可以直接用session,比request.getSession方便多了,也可以写成<%=session.getAttribute("sessionid");>
三、el表达式获取:${sessionScope.sessionid}
最直接的查看的方法是在页面添加<s:debug></s:debug>.然后在浏览器中打开该页面就可以看到[Debug]这样的链接。点进去就可以看到这两个里面究竟存储了什么。非常方便。
使用<s:debug></s:debug>可以发现,在Stack Context里面有三个key:action、request、attr.
我们也可以通过这三个key,在web前端获取值。比如,在action里面有参数值param.在页面除了这样获取:
${param}、
${action.param}、
<s:property value="param"/>、
<s:property value=“#action.param”/>,
<s:property value=“#request.param”/> 但是不可这样${ request.param}
特别注意:EL表达式不能在struts2标签中使用:<s:property value="${param} "/>是错误的:Accordingto TLD or attribute directive in tag file, attribute value does not accept anyexpressions。
5. 通过JSP输出表达式。
参数:
<%=request.getParameter(paramName)%>。
属性值:
<%=request.getAttribute("attributeName")%>
转+总结!! 关于jsp页面取值方式的更多相关文章
- jsp 页面取值
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- jsp页面取值
一般就用el表达式 ${recordList[4].baseRate8.split("/")[0] } <s:date name="recordList[#id]. ...
- springMVC在JSP页面取map值
在springmMVC中.jsp页面取得map值. 在controller层: Map<String, Object> map = new HashMap<String, Objec ...
- struts2的@Result annotation 如何添加params,并且在页面取值
http://www.bubuko.com/infodetail-2492575.html .............................................. 标签:lai ...
- JSP页面跳转方式
JSP页面跳转方式 1.利用按钮+javascript进行跳转 <input type="button" name="button2" value=&qu ...
- loadrunner 参数化取值方式详解
参数化对话框中与参数取值方式有关的区域如下: 改变参数化的取值方式,关键在于Select next row和Update value on这两个选项. Select next row包括以下选项: S ...
- Thymeleaf前后端传值 页面取值与js取值
参考: Thymeleaf前后端传值 页面取值与js取值 Thymeleaf 与 Javascript Thymeleaf教程 (十二) 标签内,js中使用表达式 目的: 后端通过Model传值到前端 ...
- mybatis中两种取值方式?谈谈Spring框架理解?
1.mybatis中两种取值方式? 回答:Mybatis中取值方式有几种?各自区别是什么? Mybatis取值方式就是说在Mapper文件中获取service传过来的值的方法,总共有两种方式,通过 $ ...
- httprequest存储的是字符内容 而文本内容是以字节形式上传的;所以普通的取值方式无法从httprequest取到值
httprequest存储的是字符内容 而文本内容是以字节形式上传的;所以普通的取值方式无法从httprequest取到值
随机推荐
- 多线程-Thread与Runnable源码分析
Runnable: @FunctionalInterface public interface Runnable { /** * When an object implementing interfa ...
- atitit.html5动画特效----打水漂 ducks_and_drakes
atitit.html5动画特效----打水漂 ducks_and_drakes 1. 原理 1 2. fly jquery插件 1 3. ---------code 2 4. 参考 4 1. 原理 ...
- iOS9新特性
本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级 ...
- Powershell对象条件查询筛选
在 Windows PowerShell 中,与所需的对象数量相比,通常生成的对象数量以及要传递给管道的对象数量要多得多.可以使用 Format cmdlet 来指定要显示的特定对象的属性,但这并不能 ...
- Activiti(一)--安装配置具体解释
有一段时间没有更新文章了,尽管有一直在写文章,但是一直没有更新到博客内,这段时间写的文章大多还是以技术为主. 接下来的系列文章将会来讨论企业工作流的开发,主要是来研究开源工作流Activiti的使用. ...
- [J2EE]MyBatis HelloWorld
一.MyBatis简单介绍 iBatis是apche的一个开源项目.2010年迁移到google code后改名为MyBatis,2013年前已到github.MyBatis是一个基于java的持久层 ...
- Django 图片路径问题
在 django 中不像PHP那样有根目录的概念 而取而代之的是包的概念, 通过URLS.PY 来提供每个URL 对应的DJANGO的 函数来显示页面 在包的 temolates目录中 的html页面 ...
- VC编译的时候因为加载符号导致编译过程异常缓慢的处理
之前调试console程序用了一下Ctrl+C,弹出的异常处理选择框自己点了什么忘记了,结果之后再调试,发现特别慢,最下面一直在走着一系列dll的加载符号.让我特别二呼的是断网的话就没事了,联网就一直 ...
- Oracle的REGEXP_INSTR函数简单使用方法
REGEXP_INSTR函数让你搜索一个正則表達式模式字符串. 函数使用输入字符集定义的字符进行字符串的计算. 它返回一个整数,指示開始或结束匹配的子位置.这取决于return_option參数的值. ...
- C++Primer学习笔记《2》
数组是一种复合类型,由类型名+数组名+维度组成. 数组定义中的类型能够是C++基本内置类型.也能够是类类型的.数组元素的类型能够是除了引用类型以外的其它不论什么类型.没有全部的元素都是引用的数组. 数 ...