쓸만한 JSP 홈페이지 만들기

web.xml설정 - ExcludeServlet

엉으니 2019. 5. 1. 16:12

HttpServlet를 상속받아 ExcludeServlet을 만들것이다.

ExcludeServlet은 web.xml에서 resourceServlet서블릿으로 등록할 것이다.

함수는 init(), doGet(), destroy()가 있는데 doGet()만 구현할것이다.

파일처리에 대한 내용이나, 자세히는 잘 모르겠으니 추후에 이에 대한 내용을 추가하고자 한다.

 

○ doGet()

...더보기
public void doGet(HttpServletRequest req,
                 HttpServletResponse resp)
         throws ServletException, IOException
{
	ServletContext sc = getServletContext();
	  String path=req.getRequestURI().substring(req.getContextPath().length()+1, req.getRequestURI().length());
	     String filename = sc.getRealPath(path);
	     
	     // Get the MIME type of the image
	     String mimeType = sc.getMimeType(filename);
	     
	     // Set content type
	     resp.setContentType(mimeType);

	     // Set content size
	     File file = new File(filename);
	     resp.setContentLength((int)file.length());

	     // Open the file and output streams
	     FileInputStream in = new FileInputStream(file);
	     OutputStream out = resp.getOutputStream();

	     // Copy the contents of the file to the output stream
	     byte[] buf = new byte[1024];
	     int count = 0;
	     while ((count = in.read(buf)) >= 0) {
	         out.write(buf, 0, count);
	     }
	     in.close();
	     out.close();
   
}

- 파라미터는 request, response (HttpServletRequest, HttpServletResponse 형식)이다.

- mimeType을 추출하여 resp.setContentType에 set해준다. (왜 하는걸까??잘 모르겠음)

- 첨부파일의 realPath를 추출하여 String형 filename변수에 저장한다.

- File형 객체 file을 생성자로 filename으로 만든다.

- resp.setContentLengsth에 file길이를 set

- FileInputStream으로 객체 만들어서 생성자로 file을 넣는다.

- OutputStream은 기존 만들어져있던 resp를 이용하여 getOutputStream으로 만듦.

- file을 스트림 처리

- in.close(), out.close()로 스트림 닫아준다.

**참고 : https://coding-factory.tistory.com/281

 

ExcludeServlet.java 끝

 

web.xml에 다음처럼 서블릿 등록해준다.

  <servlet>
    <servlet-name>resourceServlet</servlet-name>
    <servlet-class>com.youngeunweb.www.common.interceptor.ExcludeServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

 

서블릿 설정 끝.

반응형