Java-学习笔记
Java-学习笔记
吃兔纸不吐毛 发表于1年前
Java-学习笔记
  • 发表于 1年前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

一、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'
	}
});

 

 

共有 人打赏支持
粉丝 2
博文 43
码字总数 27602
×
吃兔纸不吐毛
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: