文档章节

Java-学习笔记

吃兔纸不吐毛
 吃兔纸不吐毛
发布于 2016/12/09 16:08
字数 787
阅读 3
收藏 0

一、IO方面:

1.文件上传-用Spring方法

public void uploadFile3(MultipartHttpServletRequest multipartRequest, String xml) throws IOException {
		MultipartFile xmlFile = multipartRequest.getFile("xmlFile");
		
		InputStreamReader reader = new InputStreamReader(xmlFile.getInputStream());
		BufferedReader br = new BufferedReader(reader);
		StringBuilder sb = new StringBuilder();
		while (br.ready()) {
			sb.append(br1.readLine().trim());// 每次循环用readLine()读取下一行
		}
    }

注意:前端JSP的form表单要加这个属性和值,<form enctype="multipart/form-data">,让Spring知道这是一个文件上传的表单。

 

2.用IO流读取文件

public void uploadFile3(String xml) throws IOException {
		String pathname = "C:\\Software\\SFA_TEST_pic\\surveyImageDetail.xml";
		File xmlFile = new File(pathname);
		InputStreamReader reader = new InputStreamReader(new FileInputStream(xmlFile)); // 建立一个输入流对象reader
		BufferedReader br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言
		StringBuilder sb = new StringBuilder();
		while (br.ready()) {
			sb.append(br.readLine().trim());// 每次循环用readLine()读取下一行
		}
    }

 

3.页面提交表单(参数),下载文件(excel)

@RequestMapping("/downloadFile")
@ResponseBody
public void downloadFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	String fileName = "QC_Difference_Photo";
	response.reset();
	response.setContentType("application/vnd.ms-excel");
	// 设置Content-disposition通知浏览器以下载方式打开文件
	response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xls");
	OutputStream out = response.getOutputStream();
    
	// 应用OutputStream的代码
	WritableWorkbook wwb = Workbook.createWorkbook(out);
	// 此处具体代码
	// ………………………………
	// 用好了输出并关闭
	wwb.write();
	wwb.close();
}

 

三、其他

1. 取小数点后几位

import java.text.DecimalFormat;

DecimalFormat df=new DecimalFormat(".####");// 取小数点后4位
df.format(totalErrorRate);// 参数:double类型的值,返回:String类型的值

2. 后台配合EasyUI-datagrid传值

分页工具:

import java.lang.reflect.Field;
import java.util.List;

public class PageUtil {

	public static List<Integer> paginate(List<Integer> list, int rows, int page) {
		int total = list.size();
		if (total < rows) {
			return list;
		} else if (page * rows > total) {
			return list.subList((page - 1) * rows, total);
		} else {
			return list.subList((page - 1) * rows, page * rows);
		}
	}

	public static List paginateList(List list, int rows, int page) {
		int total = list.size();
		if (total < rows) {
			return list;
		} else if (page * rows > total) {
			return list.subList((page - 1) * rows, total);
		} else {
			return list.subList((page - 1) * rows, page * rows);
		}
	}

	@SuppressWarnings("unchecked")
	public static <T> T initObject(Object obj) {
		try {
			for (Field f : obj.getClass().getDeclaredFields()) {
				f.setAccessible(true);

				if (f.getGenericType().equals(String.class)) {
					f.set(obj, "");
				}
			}

		} catch (Exception e) {
			return null;
		}
		return (T) obj;
	}

}

service接口实现调用分页工具:

@Override
public Map<String, Object> getAuditRecordListInPage(Map params, int rows, int page) {
	Map<String, Object> pageData = new HashMap<String, Object>(10);
    List<Integer> auditRecordIds = new ArrayList<Integer>();
    List<Map<String, Object>> allIds = auditSelectNonLevelMapper.getAuditRecordIdList(params);
    for (Map<String, Object> map : allIds) {
        if (map.get("ID") != null) {
        	auditRecordIds.add(NumberUtils.toInt(map.get("ID").toString()));
        }
    }
    pageData.put("total", auditRecordIds.size());
    if (auditRecordIds.size() == 0) {
        pageData.put("rows", new ArrayList<PropertyMgmt>());
    } else {
        params.put("ids", PageUtil.paginate(auditRecordIds, rows, page));
        if(rows == 0 && page == 0){
        	params.put("ids", auditRecordIds);
        }
        
        pageData.put("rows", auditSelectNonLevelMapper.getAuditRecordList(params));
    }
    return pageData;
}

传入参数是:
params:页面的参数,作为数据库查询条件的(request.getParameter(""))
rows:页面datagrid的参数,表示一页显示*条数据
page:页面datagrid的参数,表示第*页

返回值是:
HashMap<K, V>类(HashMap中有三个key,返回给前端EasyUI会自动识别):
    total:Integer类,表示总共有*条数据
    page:Integer类,表示当前页面是第*页
    rows:ArrayList<E>类(当前一页的数据,比如说前端定了20条,这里就是根据参数查找对应的20条数据):
        每一个ArrayList里都是一个HashMap<K, V>类:
        key:数据库查出来的字段名,和前端表格绑定的<th data-options="field:'key的名字'">

 

四、页面请求

1. Java传值给AJAX success方法

// java后台
import java.io.PrintWriter;

response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = null;
out = response.getWriter();
out.print("timeout");
out.flush();
$.ajax({
	success: function(data){
        // 这个data的值就是'timeout'
    }
});

2. Java传值给AJAX error方法

// Java后台
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
response.setHeader("sessionStatus", "timeout");
// 前端JS
$.ajax({
	error: function(jqXHR, textStatus, errorMsg){
		var sessionStatus = jqXHR.getResponseHeader('sessionStatus');// 值 = 'timeout'
	}
});

 

 

© 著作权归作者所有

共有 人打赏支持
上一篇: JSTL 学习笔记
下一篇: XStream
吃兔纸不吐毛
粉丝 2
博文 61
码字总数 30280
作品 0
杭州
私信 提问
给大家分享一个JAVA技术大牛的课程笔记

目前,Java语言已经广泛应用于生活中的各个领域,无论是网络编程还是数据库编程,甚至是web开发都有Java语言的身影 很多小伙伴想学习java却布置从何学起,现在给大家分享一个JAVA大神课程笔记...

dadaxiaoxiao
2015/12/31
304
1
111 多线程JUC包下代码分析

Java多线程系列目录(共43篇) AtomicLongFieldUpdater:通过反射+CAS实现对传入对象的指定long字段实现类似AtomicLong的操作 http://www.cnblogs.com/skywang12345/p/javathreadscategory.ht...

素雷
2017/10/31
0
0
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
08/08
0
0
全新互联网Java后端开发技术思维导图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/82714797 图文里的技术如何学习,有没有免费资料? 对Java的技术,架构技术...

JAVA高级架构v
09/15
0
0
BAT等大厂Android面试书单和知识点清单

java是Android开发的基础,在BAT的初面中,会涉及到比较多的java基础知识,所以比较重要,下面我介绍的书籍内容是由浅到深。 1.Thinking in java:这本书被称为Java的三大圣经之一,虽然书比...

android自学
07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
29分钟前
2
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
54分钟前
6
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
6
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
5
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部