转+总结!! 关于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")%>

时间: 2024-08-10 06:31:39

转+总结!! 关于jsp页面取值方式的相关文章

jsp 页面取值

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="com.model.User" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.o

springMVC在JSP页面取map值

在springmMVC中,jsp页面取得map值. 在controller层: Map<String, Object> map = new HashMap<String, Object>(); map.put("key1", "我是map值1"); map.put("key2", "我是map值2"); map.put("key3", "我是map值3"); mv

struts2标签取值方式

1.标签取值方式一 通过<s:property value="" />取值 当Action的valueStack中有该属性的值时,只需直接使用该属性的名字即可: 当Action的valueStack中没有该属性的值时,比如在session,application范围中的属性值时,需要加#或者#attr.: 例子: 假设某Action中有person成员变量,在application中存在company属性 那么我们可以通过以下方法取值: <s:property val

SSH中各种形式的取值方式

现在这个项目是用SSH来开发的,遇到很多取值方式,在此总结一下,因为一直在用,很容易弄混,取值有问题: JSP通过url参数值取值: 例如:http://127.0.0.1:8080/portal/login!toAddPag.action?keyCode=1234555 通过以下语句取值: <% String keyCode=request.getParameter("keyCode"); %> 在页面中显示值:有以下两种方式: 第一: <%=keyCode  %&

js从jsp页面获得值

<input type="hidden" name="duan" value="<s:property value="#session.ipNumber"/>"/> 但下面不行 <input type="hidden" name="duan" value="<% session.getAttribute("ipNumber"

loadrunner脚本中写入脚本输出log到外部文件,分析参数取值方式

loadrunner脚本中写入脚本输出log到外部文件,分析参数取值方式 分类: 心得 loadrunner 我的测试 2012-04-01 12:52 2340人阅读 评论(0) 收藏 举报 脚本loadrunnerstreamfilestring测试 .controller中运行脚本时无法查看输出log,可以手动写入代码输出log到外部文件,通过查看该log获得相关信息: 以下脚本是为了分析场景中多用户运行时参数列表如何取值(id,groupid,sid,uname),设置集合点后通过查看时

Thymeleaf前后端传值 页面取值与js取值

参考: Thymeleaf前后端传值 页面取值与js取值 Thymeleaf 与 Javascript Thymeleaf教程 (十二) 标签内,js中使用表达式 目的: 后端通过Model传值到前端 页面通过Model取值显示 js通过Model取值作为变量使用 1.后台Controller @GetMapping("/message") public String getMessage(Model model){ model.addAttribute("message&q

SpringMVC在JSP页面取不到ModelAndView中的值

问题:在java代码中设置 了msg但是在jsp页面使用jstl取不出来 原因:创建maven工程时,idea自动添加的web.xml中的jsp页面头约束版本太低 解决方法:将“一”的代码替换为“二”的代码即可 “一” <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"

js页面取值的三种方式

<input id=""<radio <checkbox<div<img对于这些标签内参数取值,一般分为三种类型:一.有关id取值用 #:取id处的value值:id=$('#id名字').val();取id本身的值:id_value=$('#id名字').attr('id', );对于id中含有变量index的,比如id=mm${st.index}(中括号里面为变量):先定义可变量index,然后用$('#id名字'+index).val()取值:二.有