J2EE下传递数据的方式

来源:互联网 发布:防闪退软件下载 编辑:程序博客网 时间:2024/04/30 10:35

J2EE下传递数据的方式


1.   采用JSON数据交换

(用到了SpringMVC框架)

如果采用JSON形式来传送数据,一个办法就是利用AJAX和JS/JQUERY的方法去传递。

可以把请求的数据封装到data里面,请求转接到另外一个地方的时候,我们就可以对请求的数据操作了。

比如:

前台请求SQL数据到页面进行展示

页面加载,响应事件

$(function(){

var GetGroupsAndCars = function() {

       $.ajax({

              url:"/webcar/GetGroups",

              type:"get",

              dataType:"json",

              success:function(data){

                     groupStore= data.carGroupList;

                     userGroupId= data.groupId;

                                   },

              error:function(){

                     showalert("获取信息失败");

              }

       });

});

 

对应的请求到了:

@RequestMapping({ "/GetGroups" })

       @ResponseBody

       publicGroupsAndCarsResult getGroupsAndCars(HttpServletRequest request) throws Exception{

              intgroupId = PreHandle.userGroup(request);

 

              List<CarGroup>carGroupList = this.carInforService.getCarGroupsWithGroupId(groupId);

             

              GroupsAndCarsResultresult = new GroupsAndCarsResult();

              result.setCarGroupList(carGroupList);

              result.setGroupId(groupId);

              returnresult;

       }

 

返回的结果明显是GroupsAndCarsResultde类对象数据,里面包含有成员数据

private List<CarGroup> carGroupList;

private int groupId;

 

通过SpringMVC的@ResponseBody功能可以直接把类对象打包成JSON数据。

JS部门指定datatype就可以直接解析好封装的JSON数据

 

附注:像下面的这个帖子中,就是省去了datatype这个参数,所以需要eval()去解析下

http://www.open-open.com/lib/view/open1398244486406.html

 

存储前台提交的数据到后台SQL和上面的一样的道理,只不过是数据过程是逆过来而已。

 

2.      EL表达式来传递数据

 

E LExpression Language目的:为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript XPath表达式语言,它提供了在 JSP中简化表达式的方法。

EL 存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如找不到,再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null,当然EL表达式还会做出优化,页面上显示空白,而不是打印输出NULL。

属性范围(jstl名称)

EL中的名称

Page

PageScope

Request

RequestScope

Session

SessionScope

Application

ApplicationScope

 

 

我们也可以指定要取出哪一个范围的变量:

范例

说明

${pageScope.username}

取出Page范围的username变量

${requestScope.username}

取出Request范围的username变量

${sessionScope.username}

取出Session范围的username变量

${applicationScope.username}

取出Application范围的username变量

其中,pageScope、requestScope、sessionScope和applicationScope都是EL 的隐含对象,由它们的名称可以很容易猜出它们所代表的意思,例如:${sessionScope.username}是取出Session范围的username 变量。这种写法是不是比之前JSP 的写法:

Stringusername = (String) session.getAttribute("username");容易、简洁许多.

参考:http://www.cnblogs.com/Fskjb/archive/2009/07/05/1517192.html

 

EL表达式的用法:

某些场合下,可以选择前台el表达式显示数据

例如:可以把对象,put 入获取的Map对象中,传到对应的视图:

@RequestMapping(value= "login", method = RequestMethod.POST)

publicString testParam(User user, Map model) {

               model.put("user",user);

               return "view";

}

 

在返回的view.jsp中,就可以根据key来获取user的值(通过EL表达式,${user }即可);

 

个人理解是:EL表达式适合需要传递的参数数据小的情况下;

如果需要传递的数据比较多,ajax比较好。

 

注明:传递数据指的是传递后台的SQL数据,不是传递参数。

 

 

0 0
原创粉丝点击