JAVA

[JAVA / jsp] ํŒŒ์ผ๋ช…์ด ํ•œ๊ธ€๋กœ ๋œ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ํ•˜๋ฉด, OO.jsp ๋กœ ๋‹ค์šด๋จ.

๋ฐฐ๊ณ ํŒŒ์š” 2023. 7. 13. 14:50
728x90

๐Ÿ“ 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://kldp.org/node/151410

 

https://zincod.tistory.com/102

 

https://okky.kr/questions/32941

 

https://rainny.tistory.com/269

 

 

https://oingdaddy.tistory.com/449

 

https://hotwolf.tistory.com/5

 

1.Jsp ํŽ˜์ด์ง€์—์„œ ๋‹ค์šด๋กœ๋“œ ๊ตฌํ˜„ํ• ๋•Œ ์ฃผ์˜ ํ• ์ .

์ผ๋ฐ˜์ ์œผ๋กœ ํ™”๋ฉด์€ JSP์— ๊ตฌํ˜„ํ•˜๊ณ  ๊ธฐ๋Šฅ์€ JAVA ํŒŒ์ผ์— ๊ตฌํ˜„ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ข…์ข… JSP์— ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๋งŒ์•ฝ ์ด๋•Œ ๋‹ค์šด๋กœ๋“œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด ์ฃผ์˜ ํ• ์ . out.clear();out = p

hotwolf.tistory.com


๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ์œ„ํ•œ ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค. 

์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”! 

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

728x90