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 L(Expression 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数据,不是传递参数。