web前后台的参数交互方式

本文主要探讨了Web开发中前后台数据交互的过程,特别是控制器层如何将数据传递给JSP页面。在Struts框架下,数据通过特定的对象传递,以便在页面上展示。
摘要由CSDN通过智能技术生成

做web开发,很重要的一个环节就是前后台的数据的交互,数据从页面提交到contoller层,数据从controler层传送到jsp页面来显示。这2个过程中数据具体是如何来传送的,是本节讲解的内容。

   首先说一下数据如何从后台的contorller层传送到页面jsp上。




如上图,在使用struts的情况下上图就是我们在jsp页面上能获取到的对象,我们想将后台数据传到jsp必须将这些数据放到这些对象中才行。

那么我们就有2种方法了,一种是放到request对象里面作为一个属性,例如:request.setAtribute(“别名”,对象名);

还有一种方法 就是存放到valueStack里面去。 我们只需要在外面的action里面设置一个属性值,写上set和get方法,在我们进行业务逻辑处理的时候为该属性值赋值,那么stutrts就会自动将我们这个action中的属性值放到valueStack里面去,并最终传送到jsp页面上。


到了jsp后,我们如何显示呢?


以前有通过java代码来显示的,但那样不好,jsp 2.0以后就不允许直接在jsp页面上写java 代码了,取而代之的是EL,也就是表达式语言。


下面具体聊聊jsp中用于显示的EL。
jsp 2.0 EL:
jsp  2.0的EL 规定,可以在jsp页面上通过${属性名}这样的语法来访问传送到页面上的对象的属性值。
并且提供了内置的一些对象方便用户访问不同范围内的属性值:



 
 
 
如果在不同的属性范围内,保存了同一个属性的话,按照page-request-session-application进行优先顺序输出级别最高的那个


例如,url 后面接的参数,在页面上可以通过${param.*}获取到。
在后台通过request.setAttribute("all",all);设置的值,在页面上可以通过${all[0]}得到(假设all是一个list类型),如果是map则使用
,如果只是一个对象,那么可以使用
${all.属性}.

内置的11个隐含对象:

为方便的获得WEB应用程序的相关数据,EL表达式语言定义了一些隐含对象。隐含对象共有11个对象,(JSP中具有9个隐含对象,EL比JSP中具有更多的隐含对象,这样EL比JSP更方便的获取数据) 使用这些对象可以很方便的访问Web 程序数据。

隐含对象包括Session(获得当前web程序的Session值),cookie(获得WEB程序的Cookie值),header,headerValues(获得用户的Http数据访问头部信息),Param和ParamValues(获得用户提交数据参数)等。

使用${隐含对象名称["元素"]} 就可以获得这个值了,例如${header("host")} 可以显示http头部中host的值,${param("username")},可以获得显示用户表单提交的用户. 使用${empty(param("username")} 可以判断用户提交表单是否为空等。(这样比jsp1.2中使用request.getParamter("username") 要简化和方便很多了)

----------------------------

隐含对象及隐含对象访问实例

EL 表达式定义了11个隐含对象,使用这11个对象可以很方便的读取到session,cookie,HttpHeader,用户提交表单(param)等

隐含对象 内容

applicationScope 应用程序范围内的scoped变量组成的集合

cookie 所有cookie组成的集合

header HTTP请求头部,字符串

headerValues HTTP请求头部,字符串集合

initParam 全部应用程序参数名组成的集合

pageContext 当前页面的javax.servlet.jsp.PageContext对象

pageScope 页面范围内所有对象的集合

param 所有请求参数字符串组成的集合

paramValues 所有作为字符串集合的请求参数

requestScope 所有请求范围的对象的集合

sessionScope 所有会话范围的对象的集合

下面是获取HTTP访问头部数据和用户提交数据的示例

EL表达式 运算结果

${header["host"]} 这里得到HTTP连接头部的host值

${header["accept"]} 这里获得HTTP头部的accept值

${header["user-agent"]} 这里获得HTTP头部的user-agent值

---------------&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值