文档章节

Java-学习笔记

吃兔纸不吐毛
 吃兔纸不吐毛
发布于 2016/12/09 16:08
字数 787
阅读 2
收藏 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'
	}
});

 

 

© 著作权归作者所有

共有 人打赏支持
吃兔纸不吐毛
粉丝 1
博文 56
码字总数 29223
作品 0
杭州
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
BAT等大厂Android面试书单和知识点清单

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

android自学
07/25
0
0
2018年暑假第一周周总结报告

一眨眼,暑假第一周过去了。这一周大部分时间都是在学校度过的。在7月14日之前,我在学校宿舍待着,便开始刷我的网络课程。虽然这些课看上去不是太重要,但从中也学到了不少知识。 周一,我对...

寂天风
07/15
0
0
2018-3-29 Linux学习笔记

16.1 Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jd...

XiaoluHuang
06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
2
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
13
3
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部