๐ jsp ์์ java ์ฌ์ฉํด์ ํ์ผ์ ๋ค์ด๋ก๋ ํด์ผ๋๋๋ฐ ์ ๋จ?
- "๋ค์ด๋ก๋" ๋ฒํผ์ ๋๋ฅด๋ฉด, ํด๋น ํ์ผ์ด ๋ค์ด๋๋ ๊ฒ ์๋๊ณ
- ๋ด๊ฐ ๋ค์ด๋ก๋๋ฅผ ํ๊ธฐ ์ํด ๋ง๋ค์ jsp ํ์ผ์ด ๋ค์ด๋ก๋ ๋จ...;;;;
๐ ๊ฐ๋ต ์ค๋ฅ ๋ด์ฉ.
- org.apache.catalina.core.StandardWrapperValve.invoke ๊ฒฝ๋ก []์ ์ปจํ ์คํธ ๋ด์ ์๋ธ๋ฆฟ [jsp]์(๋ฅผ) ์ํ Servlet.service() ํธ์ถ์ด, ๊ทผ๋ณธ ์์ธ(root cause)๊ณผ ํจ๊ป, ์์ธ [java.lang.IllegalStateException: ์ด ์๋ต์ ์ํด getOutputStream()์ด ์ด๋ฏธ ํธ์ถ๋์์ต๋๋ค.]์(๋ฅผ) ๋ฐ์์์ผฐ์ต๋๋ค.
- ์ค๋ฅ ์ ์ฒด.
13-Jul-2023 13:49:33.195 ์ฌ๊ฐ [ajp-nio-221.132.82.110-8009-exec-7] org.apache.catalina.core.StandardWrapperValve.invoke ๊ฒฝ๋ก []์ ์ปจํ
์คํธ ๋ด์ ์๋ธ๋ฆฟ [jsp]์(๋ฅผ) ์ํ Servlet.service() ํธ์ถ์ด, ๊ทผ๋ณธ ์์ธ(root cause)๊ณผ ํจ๊ป, ์์ธ [java.lang.IllegalStateException: ์ด ์๋ต์ ์ํด getOutputStream()์ด ์ด๋ฏธ ํธ์ถ๋์์ต๋๋ค.]์(๋ฅผ) ๋ฐ์์์ผฐ์ต๋๋ค.
java.lang.IllegalStateException: ์ด ์๋ต์ ์ํด getOutputStream()์ด ์ด๋ฏธ ํธ์ถ๋์์ต๋๋ค.
at org.apache.catalina.connector.Response.getWriter(Response.java:569)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:190)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:118)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:111)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:167)
at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:120)
at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
at org.apache.jsp.custom.budget.budget_005fatt_005fopen_jsp._jspService(budget_005fatt_005fopen_jsp.java:948)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at co m.hs.common.filter.CharsetFilter.doFilter(CharsetFilter.java:82)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:673)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:422)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
๐ ์์ค์ฝ๋ ๋ด์ฉ
<%@ page contentType="text/html;charset=utf-8" %>
<%@ page import="java.net.*"%>
<%
request.setCharacterEncoding("UTF-8");
String file_path = request.getParameter("file_path");
String fn = request.getParameter("fn");
String file_name = "";
System.out.println("##### req_file_path : " + file_path);
if(!"".equals(file_path)) {
for(StringTokenizer st = new StringTokenizer(file_path, "/"); st.hasMoreTokens();) {
file_name = st.nextToken();
}
int filesize = 0;
file_path = file_path;
File sz = new File(file_path);
filesize = (int)sz.length();
// โ
โ
โ
์ค์ 2.
// !!! ์ฌ๊ธฐ์ ํ๊ธ์ ์ธ์ฝ๋ฉํด์ ํ๊ธ๋ก ๋ ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ ์ ์๊ฒ ํ๋ค. !!!!
fn = URLEncoder.encode(file_name, "utf-8"); //.replaceAll("\\+", "%20");
// ์ค์ 2. โ
โ
โ
/*
System.out.println("##### --file_path : " + file_path);
System.out.println("##### --file_name : " + file_name);
System.out.println("##### --fn : " + fn);
*/
response.setHeader("Content-Disposition", "attachment;filename="+ fn +";");
response.setContentType("Content-type:application/octet-stream");
response.setContentLength(filesize);
byte b[] = new byte[filesize];
// โ
โ
โ
์ค์ 1.
out.clear();
out=pageContext.pushBody();
// ์ค์ 1. โ
โ
โ
ServletOutputStream fout = response.getOutputStream();
try
{
System.out.println("##### file_path2 : " + file_path);
File f = new File(file_path);
FileInputStream fin = new FileInputStream(f);
fin.read(b);
fout.write(b,0,filesize);
}
catch(FileNotFoundException e){}
finally { fout.close(); }
} else {
%><script language="javascript">alert("File Not Found!");</script><% }%>
์ค๋ฅ ๋ด์ฉ.
13-Jul-2023 14:22:27.169 ๊ฒฝ๊ณ [ajp-nio-221.132.82.110-8009-exec-7] org.apache.coyote.ajp.AjpProcessor.prepareResponse The HTTP response header [Content-Disposition] with value [attachment;filename=ํ
์คํธํ์ผ.txt;] has been removed from the response because it is invalid
java.lang.IllegalArgumentException: code point [53,580]์ ์์นํ ์ ๋์ฝ๋ ๋ฌธ์ [ํ
]์(๋), 0์์ 255๊น์ง์ ํ์ฉ ๋ฒ์ ๋ฐ๊นฅ์ ์์ผ๋ฏ๋ก ์ธ์ฝ๋ฉ๋ ์ ์์ต๋๋ค.
at org.apache.tomcat.util.buf.MessageBytes.toBytesSimple(MessageBytes.java:290)
at org.apache.tomcat.util.buf.MessageBytes.toBytes(MessageBytes.java:261)
at org.apache.coyote.ajp.AjpMessage.appendBytes(AjpMessage.java:164)
at org.apache.coyote.ajp.AjpProcessor.prepareResponse(AjpProcessor.java:979)
at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:375)
at org.apache.coyote.Response.action(Response.java:209)
at org.apache.coyote.Response.sendHeaders(Response.java:434)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:291)
at org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:250)
at org.apache.catalina.connector.CoyoteOutputStream.close(CoyoteOutputStream.java:153)
at org.apache.jsp.custom.budget.budget_005fatt_005fopen_jsp._jspService(budget_005fatt_005fopen_jsp.java:928)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at co m.hs.common.filter.CharsetFilter.doFilter(CharsetFilter.java:82)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:673)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:422)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
๐ ?
- ใ ใ
์ถ์ฒ :
https://zincod.tistory.com/102
https://okky.kr/questions/32941
https://rainny.tistory.com/269
https://oingdaddy.tistory.com/449
1.Jsp ํ์ด์ง์์ ๋ค์ด๋ก๋ ๊ตฌํํ ๋ ์ฃผ์ ํ ์ .
์ผ๋ฐ์ ์ผ๋ก ํ๋ฉด์ JSP์ ๊ตฌํํ๊ณ ๊ธฐ๋ฅ์ JAVA ํ์ผ์ ๊ตฌํํ๋ค. ํ์ง๋ง ์ข ์ข JSP์ ์๋ฐ์ฝ๋๋ฅผ ์ ๋ ฅํ์ฌ ๊ตฌํํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ง์ฝ ์ด๋ ๋ค์ด๋ก๋ ๋ก์ง์ ๊ตฌํํ๋ค๋ฉด ์ฃผ์ ํ ์ . out.clear();out = p
hotwolf.tistory.com
๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ์ํ ๋ธ๋ก๊ทธ ์ ๋๋ค.
์ค๋ฅ๊ฐ ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
๊ฐ์ฌํฉ๋๋ค.

'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] file.mkdirs (:: ํ์ผ ๋๋ ํ ๋ฆฌ ์์ฑ ๊ด๋ จ) (0) | 2023.12.08 |
---|---|
[JSP] ๋ค์ค ํ์ผ ์ ๋ก๋๊ฐ ์๋จ... (0) | 2023.10.06 |
[JAVA] csvํ์ผ ์ฝ์ ๋, ํ๊ธ์ด ๊นจ์ง. (ํ์ผ ์ธ์ฝ๋ฉ ๋ฌธ์ ) (0) | 2023.02.14 |
[JAVA] ๊ธ์ ๊นจ์ง ๋ชจ์์ผ๋ก ์ธ์ฝ๋ฉ ๋ณํ์ ํ์ ํ๋ ๋ฒ (0) | 2023.02.14 |
[JAVA] ๋ฌธ์์ด ๋์ ์ฝค๋ง ์ ๊ฑฐํ๊ธฐ (0) | 2023.01.31 |