for(Map<String, Object> params : list) {//遍历List集合list
Collection<Object> col = params.values();
// System.out.println("删除前"+params.toString());
while(true == col.contains(null)) {//删除Map的value为null值
col.remove(null);
}
// System.out.println("删除后"+params.toString());
}
public boolean equals(Object st) { //自定义判断条件
IBExceLitemBank tempcar= (IBExceLitemBank) st;
if (ltem_bank==tempcar.ltem_bank) return true;
else return false;
}
public int hashCode() { //返回条件与判断条件保持一致
return ltem_bank.hashCode();
}
@RequestMapping("/indexrfgre")
@ResponseBody
public Map<String,Object> cancellfrffeation(@RequestParam("file") MultipartFile file) {
FileOutputStream fos = null;
InputStream fis = null;
try {
fis= file.getInputStream();
String s = file.getOriginalFilename();
System.out.println(s);
String output = util.getProperties("imageUrl", "config")+util.getRandomFileName()+s;
//创建一个文件的输入流和输出流
fos = new FileOutputStream(output);//输出到目的地
byte[] b = new byte[2048]; ;
int len;
while( (len = fis.read(b)) != -1){
//复制文件
fos.write(b,0,len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//关闭流
try {
fis.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这里需要注意小细节遍历存值时需要在循环体里new Map;这样每次存的是新map不会导致每次存值都一样
List<Map<String,Object>> idlist = new ArrayList<>();
for(String ar : arr) {
Map<String,Object> idmap = new HashMap<>();
idmap.put("item_bank_id", maps.get("id"));
idmap.put("student_examination_paper_id", ar);
idlist.add(idmap);
}
// 第一种方法:设定指定任务task在指定时间time执行 schedule(TimerTask task, Date time)
public static void timer1() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
}
}, 2000);// 设定指定的时间time,此处为2000毫秒
}
// 第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行
// schedule(TimerTask task, long delay, long period)
public static void timer2() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
}
}, 1000, 1000);
}
// 第三种方法:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。
// scheduleAtFixedRate(TimerTask task, long delay, long period)
public static void timer3() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
}
}, 1000, 2000);
}
// 第四种方法:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行.
// Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
public static void timer4() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制时
calendar.set(Calendar.MINUTE, 0); // 控制分
calendar.set(Calendar.SECOND, 0); // 控制秒
Date time = calendar.getTime(); // 得出执行任务的时间,此处为今天的12:00:00
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
}
}, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行
}
String[] rctimes = util.getIntercept(params.get("rctime").toString(), ":");
long rctime = 0l;
for(int i=0;i<rctimes.length;i++) {
try {
if(i==0) {
rctime = Integer.parseInt(rctimes[i])*60*60*1000;
}
if(i==1) {
rctime += Integer.parseInt(rctimes[i])*60*1000;
}
if(i==2) {
rctime += Integer.parseInt(rctimes[i])*1000;
}
} catch (Exception e) {
map.put("status", -1);
map.put("msg", "时间格式错误");
return map;
}
}
String:字符串类;
StringBuffer:就是为了解决大量拼接字符串时产生很多中间对象问题而提供的一个类,提供append和add方法,可以将字符串添加到已有序列的末尾或指定位置,它的本质是一个线程安全的可修改的字符序列,把所有修改数据的方法都加上了synchronized。但是保证了线程安全是需要性能的代价的。
StringBuilder:在很多情况下我们的字符串拼接操作不需要线程安全,这时候StringBuilder登场了,StringBuilder是JDK1.5发布的,它和StringBuffer本质上没什么区别,就是去掉了保证线程安全的那部分,减少了开销。
String str = "aa"+"bb"+"cc";
StringBuffersb=new StringBuffer();
sb.add("aa");
sb.add("bb");
sb.add("cc");
String str=sb.toString();
StringBuilder sb=new StringBuilder();
sb.append("aa");
sb.append("bb");
sb.append("cc");
String str=sb.toString();
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.8</version>
</dependency>
public Map<String, Object> getUserList(Map<String, Object> params) {
map.clear();
Integer pageNumber=Integer.parseInt(params.get("page")+"");//页数
Integer pageSize=Integer.parseInt(params.get("limit")+"");//每页数据量
//分页
PageHelper.startPage(pageNumber, pageSize);
//封装分页
Page<?> page=(Page<?>) userDao.getuserList(params);
map.put("code",0);
map.put("count",page.getTotal()); //总记录数量
map.put("data",page.getResult()); //数据列表
return map;
}
//退出
@RequestMapping("/cancellations")
public ModelAndView cancellations(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = Util.getSession();
if(session==null){
return null ;
}
session.removeAttribute("User");
request.getSession().invalidate();
return new ModelAndView("login");
}
<bean id="loadReSource" class="ssm.spring.controller.MESPublicAllDelete" init-method="MesPublicAllDelete"></bean>
class:对应启动加载类
method:执行类中的哪一个方法
/**
* 文件下载
* @throws IOException
*/
@RequestMapping(value="/download",method=RequestMethod.GET)
public void download(@RequestParam(value="filename")String filename,
HttpServletRequest request,
HttpServletResponse response) throws IOException {
InputStream bis = null;
BufferedOutputStream out = null;
try {
//模拟文件,myfile.txt为需要下载的文件
String path = Util.getProperties("imageUrl")+filename.substring(Util.getProperties("imageRead").length(),filename.length());
System.out.println("path:"+path);
//获取输入流
bis = new BufferedInputStream(new FileInputStream(new File(path)));
//转码,免得文件名中文乱码
filename = URLEncoder.encode(filename,"UTF-8");
//设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + filename);
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
out = new BufferedOutputStream(response.getOutputStream());
byte[] b = new byte[4096];
int len;
while( (len = bis.read(b)) != -1){
//复制文件
out.write(b,0,len);
out.flush();
}
} finally {
try {
out.close();
bis.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
BufferedReader streamReader = new BufferedReader( new
InputStreamReader(httpServletRequest.getInputStream(), "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null)
responseStrBuilder.append(inputStr);
System.out.println(responseStrBuilder.toString());