Java web从数据库导出数据数据量较少的时候没有关问题但是数据多了就出错
Java web从数据库导出数据数据量较少的时候没问题但是数据多了就出错
代码
@Controller
@RequestMapping("qy/sjdc")
public class SjdcController {
private Logger logger = LoggerFactory.getLogger(SjdcController.class);
@Resource
SjdcService service;
@RequestMapping("sjdc.json")
@ResponseBody
public void doSjdc(HttpServletRequest request, HttpServletResponse response) throws ServiceException, IOException{
ResponseModel model = new ResponseModel();
String path="D:\\";
OutputStream out=null;
InputStream in=null;
String fn="ss.zip";
String filename=null;
response.setHeader("Content-Disposition", "attachment;filename=ss.zip");
try {
String qhdm=request.getParameter("qhdm");
//从数据库导出数据的函数
filename=service.sumExport(qhdm, path);
in=new FileInputStream(path+filename);
int len=0;
byte buffer[]=new byte[1024];
out=response.getOutputStream();
while ((len=in.read(buffer))>0) {
out.write(buffer,0,len);
}
}catch (Exception e) {
logger.error("Controller:发生异常!");
}
finally{
try{
in.close();
out.flush();
out.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
错误提示:
java.lang.NullPointerException
十月 09, 2014 4:54:01 下午 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor processChildren
SEVERE: Exception invoking periodic operation:
java.lang.OutOfMemoryError: Java heap space
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:414)
at java.io.File.getCanonicalPath(File.java:589)
at org.apache.naming.resources.FileDirContext.file(FileDirContext.java:793)
at org.apache.naming.resources.FileDirContext.getAttributes(FileDirContext.java:429)
at org.apache.naming.resources.BaseDirContext.getAttributes(BaseDirContext.java:747)
at org.apache.naming.resources.ProxyDirContext.getAttributes(ProxyDirContext.java:840)
at org.apache.catalina.loader.WebappClassLoader.modified(WebappClassLoader.java:986)
at org.apache.catalina.loader.WebappLoader.modified(WebappLoader.java:500)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:421)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1361)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
at java.lang.Thread.run(Thread.java:722)
at com.rk.controller.qyxt.SjdcController.doSjdc(SjdcController.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
代码
@Controller
@RequestMapping("qy/sjdc")
public class SjdcController {
private Logger logger = LoggerFactory.getLogger(SjdcController.class);
@Resource
SjdcService service;
@RequestMapping("sjdc.json")
@ResponseBody
public void doSjdc(HttpServletRequest request, HttpServletResponse response) throws ServiceException, IOException{
ResponseModel model = new ResponseModel();
String path="D:\\";
OutputStream out=null;
InputStream in=null;
String fn="ss.zip";
String filename=null;
response.setHeader("Content-Disposition", "attachment;filename=ss.zip");
try {
String qhdm=request.getParameter("qhdm");
//从数据库导出数据的函数
filename=service.sumExport(qhdm, path);
in=new FileInputStream(path+filename);
int len=0;
byte buffer[]=new byte[1024];
out=response.getOutputStream();
while ((len=in.read(buffer))>0) {
out.write(buffer,0,len);
}
}catch (Exception e) {
logger.error("Controller:发生异常!");
}
finally{
try{
in.close();
out.flush();
out.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
错误提示:
java.lang.NullPointerException
十月 09, 2014 4:54:01 下午 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor processChildren
SEVERE: Exception invoking periodic operation:
java.lang.OutOfMemoryError: Java heap space
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:414)
at java.io.File.getCanonicalPath(File.java:589)
at org.apache.naming.resources.FileDirContext.file(FileDirContext.java:793)
at org.apache.naming.resources.FileDirContext.getAttributes(FileDirContext.java:429)
at org.apache.naming.resources.BaseDirContext.getAttributes(BaseDirContext.java:747)
at org.apache.naming.resources.ProxyDirContext.getAttributes(ProxyDirContext.java:840)
at org.apache.catalina.loader.WebappClassLoader.modified(WebappClassLoader.java:986)
at org.apache.catalina.loader.WebappLoader.modified(WebappLoader.java:500)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:421)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1361)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
at java.lang.Thread.run(Thread.java:722)
at com.rk.controller.qyxt.SjdcController.doSjdc(SjdcController.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)