教学云WEB端的实现总结:
目标要求:根据第三方教学云提供的资源,可以在平台后端对教 学云资源筛选、加载查看。
1、初步的形成思想:
通过对教学云资源的获取,可以根据年级、科目以及出版社筛选来查询相应的资源信息。
2、实现过程出现的问题
(1)在最初的根据年级、科目和出版社来筛选时,因为要三个条件一块执行,没有做到通过点击该选项获取到对应的id。
◆在jsp页面:<a href="javascript:void(0)" class="now" GradeId="G04">一年级</a>
当点击哪个链接时,class=“now”就会在哪个链接下,从而确定所选择的id。
◆在加载年级时,根据div层下的ul的id,通过点击事件来获取li标签下的<a>超链接。
具体代码为:
$('#gradeList').on('click','li a',function(){
GradeId =$(this).attr('GradeId');//当点击时,获取当前的GradeId值;
loadSource(GradeId,CourseId,VersionId,ExtensionName);
});
注:GradeId为年级名称的id值。
◆科目、版本同年级一样。
◆在对资源格式进行筛选时,和年级不同的是,资源格式是改变而不是点击,使用的是 change.
(2)因为是从第三方教学云获取资源,所以在取资源的时候要根据第三方来取,通过在js中使用ajax
来获取资源。
◆ Map<String, String> paramMap = ActionUtil.getParameterMap();//获取前端返回的值
◆ HashMap<String,Object> paraMap = new HashMap<String,Object>();//声明一个HashMap
;
◆paraMap.put("JsonInfo", "{} "); //向paraMap中放值;
String returnjson = PostUtil.doPost(SystemConfig.getProperty("JIAOXUEYUN_URL"),paraMap);//根据条件取到资源;
◆ JSONArray jsonArray = JSONArray.fromObject(returnJson);//将json对象转化为json数组。
◆ List<SourceVO> list = new ArrayList<SourceVO>();
for (int i=0;i<jsonArray.size();i++) {
JSONObject jsonObject = (JSONObject) jsonArray.get(i);
SourceVO item = new SourceVO();
item.setSource_data(jsonObject.toString());
item.setSource_type(jsonObject.getString("ExtensionName"));
item.setSource_id(jsonObject.getString("ResourceId"));
item.setSource_name(jsonObject.getString("ResourceName"));
item.setUpdateTime(jsonObject.getString("UpdateTime"));
item.setResourceSize(jsonObject.getString("ResourceSize"));
item.setBrowse_count(jsonObject.getInt("Browse_count"));
item.setPraise_count(jsonObject.getInt("Praise_count"));
item.setDownload_count(jsonObject.getInt("Download_count"));
item.setFav_count(jsonObject.getInt("Fav_count"));
item.setResourceUrl(jsonObject.getString("ResourceUrl"));
list.add(item);
}
//用list来遍历取到的资源数据。
(3)分页查询,在分页查询中根据第三方提供的接口、字段,当IsCount_size为0时,统计记录大小,当IsCount_size为1时,不统计记录大小,因为0和1都要使用,所以在方法使用过程中,我所采用的是重新写了一个方法,是获取总记录数的,可是结果却不尽人意,虽然都可以获取到,但是在使用时,两个方法不能同时存在一个jsp页面中。
后来使用的方法是,在一个方法体中
paraMap.put("JsonInfo", "{} ");
String returnJson = PostUtil.doPost(SystemConfig.getProperty("JIAOXUEYUN_URL"),paraMap);
paraMap.put("JsonInfo", "{} ");
String totalJson = PostUtil.doPost(SystemConfig.getProperty("JIAOXUEYUN_URL"),paraMap);
JSONObject jsonObjectTotal = JSONObject.fromObject(totalJson);
ActionUtil.setTotal(jsonObjectTotal.getInt("Total"));//重点是这句,它是写好的,拿过来直接调用就可以了。可以直接获取到总记录数。
可悲的是我却不会,花了一上午写的还没这一句管用。。。。。
通过这个方法就可以获取到了,并且可以在一起使用。
附:源码