18.02.21,web学习第六十天,bos第六天,文件下载,分页查询死循环,指定hib对象封装形式
2018-02-21 11:10
435 查看
60.bos第六天
1. 分区分页查询(没有过滤条件)
页面:WEB-INF/pages/base/subarea.jsp 第一步:修改jsp页面中datagrid的URL地址 第二步:在SuareaAction中提供分页查询方法pageQuery 第三步:修改subarea.hbm.xml |
2. 分区分页查询(带有过滤条件)
datagrid提供的方法:用于重新发送ajax请求,并且可以提交参数 第一步:提供一个工具方法,可以将指定的form表单中所有的输入项转为json数据,用于参数提交 //定义一个工具方法,用于将指定的form表单中所有的输入项转为json数据{key:value,key:value} $.fn.serializeJson=function(){ var serializeObj={}; var array=this.serializeArray(); $(array).each(function(){ if(serializeObj[this.name]){ if($.isArray(serializeObj[this.name])){ serializeObj[this.name].push(this.value); }else{ serializeObj[this.name]=[serializeObj[this.name],this.value]; } }else{ serializeObj[this.name]=this.value; } }); return serializeObj; }; 第二步:为查询窗口中查询按钮绑定事件 $("#btn").click(function(){ //将指定的form表单中所有的输入项转为json数据{key:value,key:value} var p = $("#searchForm").serializeJson(); console.info(p); //调用数据表格的load方法,重新发送一次ajax请求,并且提交参数 $("#grid").datagrid("load",p); //关闭查询窗口 $("#searchWindow").window("close"); }); |
ce29
封装形式,使用
dc时如何使用hql语句。
/** * 分页查询 */ public String pageQuery(){ DetachedCriteria dc = pageBean.getDetachedCriteria(); //动态添加过滤条件 String addresskey = model.getAddresskey(); if(StringUtils.isNotBlank(addresskey)){ //添加过滤条件,根据地址关键字模糊查询 dc.add(Restrictions.like("addresskey", "%"+addresskey+"%")); } Region region = model.getRegion(); if(region != null){ String province = region.getProvince(); String city = region.getCity(); String district = region.getDistrict(); dc.createAlias("region", "r"); if(StringUtils.isNotBlank(province)){ //添加过滤条件,根据省份模糊查询-----多表关联查询,使用别名方式实现 //参数一:分区对象中关联的区域对象属性名称 //参数二:别名,可以任意 dc.add(Restrictions.like("r.province", "%"+province+"%")); } if(StringUtils.isNotBlank(city)){ //添加过滤条件,根据市模糊查询-----多表关联查询,使用别名方式实现 //参数一:分区对象中关联的区域对象属性名称 //参数二:别名,可以任意 dc.add(Restrictions.like("r.city", "%"+city+"%")); } if(StringUtils.isNotBlank(district)){ //添加过滤条件,根据区模糊查询-----多表关联查询,使用别名方式实现 //参数一:分区对象中关联的区域对象属性名称 //参数二:别名,可以任意 dc.add(Restrictions.like("r.district", "%"+district+"%")); } } subareaService.pageQuery(pageBean); this.java2Json(pageBean, new String[]{"currentPage","detachedCriteria","pageSize", "decidedzone","subareas"}); return NONE; } 修改BaseDao中的分页查询方法 |
不能使用ajax因为ajax页面不刷新 需使用window.location.href=””.(普通的get请求) 1.1 页面调整 为页面中导出按钮绑定事件 1.2 服务端实现 第一步:查询所有的分区数据 第二步:使用POI将数据写到Excel文件中 第三步:使用输出流进行文件下载 /** * 分区数据导出功能 * @throws IOException */ public String exportXls() throws IOException{ //第一步:查询所有的分区数据 List<Subarea> list = subareaService.findAll(); //第二步:使用POI将数据写到Excel文件中 //在内存中创建一个Excel文件 HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个标签页 HSSFSheet sheet = workbook.createSheet("分区数据"); //创建标题行 HSSFRow headRow = sheet.createRow(0); headRow.createCell(0).setCellValue("分区编号"); headRow.createCell(1).setCellValue("开始编号"); headRow.createCell(2).setCellValue("结束编号"); headRow.createCell(3).setCellValue("位置信息"); headRow.createCell(4).setCellValue("省市区"); for (Subarea subarea : list) { HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1); dataRow.createCell(0).setCellValue(subarea.getId()); dataRow.createCell(1).setCellValue(subarea.getStartnum()); dataRow.createCell(2).setCellValue(subarea.getEndnum()); dataRow.createCell(3).setCellValue(subarea.getPosition()); dataRow.createCell(4).setCellValue(subarea.getRegion().getName()); } //第三步:使用输出流进行文件下载(一个流、两个头) String filename = "分区数据.xls"; String contentType = ServletActionContext.getServletContext().getMimeType(filename); ServletOutputStream out = ServletActionContext.getResponse().getOutputStream(); ServletActionContext.getResponse().setContentType(contentType); //获取客户端浏览器类型 String agent = ServletActionContext.getRequest().getHeader("User-Agent"); filename = FileUtils.encodeDownloadFilename(filename, agent); ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename="+filename); workbook.write(out); return NONE; } |
1.3 页面调整
1.3.1 使用combobox展示取派员数据
第一步:修改定区页面中combobox下拉框URL地址第二步:在StaffAction中提供listajax方法,查询所有未删除的取派员,返回json
/**
* 查询所有未删除的取派员,返回json
*/
public String listajax(){
List<Staff> list = staffService.findListNotDelete();
this.java2Json(list, new String[]{"decidedzones"});
return NONE;
}
第三步:在BaseDao中扩展一个通用查询方法
第四步:在StaffService中扩展方法,查询未删除的取派员
1.3.2 使用datagrid展示分区数据
第一步:修改页面中datagrid的URL地址第二步:在SubareaAction中提供listajax方法,查询所有未关联到定区的分区,返回json
第三步:在SubareaService中扩展方法,查询未关联到定区的分区
1.3.3 为保存按钮绑定事件提交表单
问题一:提交的表单中存在多个id参数
解决方案:将datagrid的filed由id改为subareaid
问题二:提交的表单中subareaid参数的值为null
解决方案:在分区类中提供getSubareaid方法
1.4 服务端实现
创建定区的Action、Service、DaoService代码:
配置struts.xml
2 定区分页查询
第一步:修改定区jsp页面中datagrid的URL地址第二步:在定区Action中提供pageQuery方法
第三步:在Decidedzone.hbm.xml中修改,查询定区对象时需要立即加载关联的取派员对象
3 分页查询死循环问题
1、页面不需要展示关联数据时解决:将关联对象属性排除掉
2、页面需要展示关联数据时
解决:将关联对象改为立即加载,并且将关联对象中的属性排除
相关文章推荐
- 显示指定文件夹中的所有文件并提供下载[WEB学习实例]
- JavaWeb之Servlet学习-----实现文件动态下载功能 手写servlet 手动构建web程序
- Web 在线文件管理器学习笔记与总结(9)下载文件
- 简单分页查询(web基础学习笔记十三)
- 递归计算指定目录下的文件及文件总个数,并封装为ztree对象数据
- WEB下载指定文件(文本文件、压缩包等)
- 如何实现web应用下载文件时不弹出文件保存对话框,而是直接保存到指定的文件中
- web16天学习文件的上传和下载
- 17.12.26,web学习第三十三天,还有一年,努力吧青年 商城项目第六天 ajax,文件上传
- 文件上传与下载学习笔记(2)---多文件、单文件、多个单文件函数封装
- 18.01.06,web学习第三十八天,还有一年,努力吧青年 hibernate第四天 HQL,Criteria,离线对象,查询策略
- Servlet 学习笔记 从自己的Servlet下载各种形式的文件
- hibernate学习教程-封装分页查询
- Javaweb 学习笔记之文件上传和下载-01
- 用python如何将Web服务器上的指定文件下载下来
- 将指定的HTTP网络资源在本地以文件形式存放(下载)
- 文件上传与下载学习笔记(2)---多文件、单文件、多个单文件函数封装
- 使用os.popen/commands.getoutput查询指定端口号的服务 分类: python 小练习 open()文件读写 python基础学习 2013-09-17 17:49 798人阅读 评论(0) 收藏
- java_web 学习记录(六):文件上传和下载
- web 项目中资源下载出错,或者下载的文件对应的形式不对应,web 项目下载的文件自动打包为一个压缩包