45DAY / JSP지시어

2017. 6. 8. 09:17

JSP지시어 (Directive)

 

<%@ page langauge = "java" %>

JSP파일 내에서 사용 될 스크립트 언어 지정


<%@ page extends = "클래스명" %>

상속할 부모 클래스 지정


<%@ page import = "패키지명.클래스명" %>

Java의 import와 같은기능


<%@ page session = "true" %>

JSP내에서 세션사용

*세션(Session) : HTTP의 Stateless특성으로 인해 커넥션을 매번 새로 생성해야하기 때문에 동일한 클라이언트에 대해 정보를 유지할 필요가 있는 경우, 정보유지가 가능하도록 만드는 가상의 커넥션


<%@ page buffer = "8kb" %>

JSP페이지가 서블릿으로 변환되어 응답을 생성해 클라이언트에 전송할 때 사용되는 버퍼의 크기 지정

none으로 설정 할 경우 버퍼를 사용하지 않는다


<%@ page autoFlush = "true" %>

buffer속성에서 지정한 버퍼가 다 채워졌을경우

true : 클라이언트에게 전송 후 버퍼비운다

false : Exception발생시킨다


<%@ page isThreadSafe = "true" %>

다중스레드에 의한 동시접근을 차단한다


<%@ page info = "페이지설명%>

페이지전체에 대한 주석의 역할


<%@ page errorPage = "errorpage.jsp" %>

예외가 발생했을 때 에러페이지를 지정해 에러페이지에서 예외처리함


<%@ page contentType = "text/html" %>

JSP페이지가 전송할 응답의 MINE형식 지정 대분류/소분류 순으로 명시한다


<%@ page isErrorPage = "false" %>

현재 페이지가 다른 페이지에서 발생한 예외처리할 페이지 일때 지정한다


<%@ page pageEncoding = "euc-kr" %>

JSP페이지 문자셋 인코딩방식을 지정

 



액션태그


파일 업로드

<form method="post" enctype="multipart/form-data">

</form>


enctype 속성을 multipart/form-data  지정하지 않으면 파일객체가 아닌 파일이름 이 문자열형태로 전송된다.



예제 / 단일 파일 업로드 


<form action="./partUplaodPro1" method="post" enctype="multipart/form-data">

<label for ="writer">작성자</label>

<input type=text name="writer" id="writer"><br>

<label for ="partFile1">업로드 파일</label>

<input type="file" name="partFile1" id="partFile1">

<input type="submit" value="업로드">



 

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.util.UUID;

 

import javax.imageio.ImageIO;

import javax.servlet.ServletException;

import javax.servlet.annotation.MultipartConfig;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.Part;

 

 

@WebServlet("/partUplaodPro1")

@MultipartConfig(

            fileSizeThreshold=0 ,

            location = "d:/upload"

            )

public class partUploadPro1 extends HttpServlet {

     

      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

           

            request.setCharacterEncoding("utf-8");

            String writer = request.getParameter("writer");

            System.out.println(writer);

            Part part = request.getPart("partFile1");

            String contentDisposition = part.getHeader("content-disposition");

           

            String contentType = part.getHeader("content-type");

            System.out.println(part);

           

            if(contentType.equals("image/gif")

                  || contentType.equals("image/jpeg")

                  || contentType.equals("image/png")){

                 

           

            System.out.println(contentDisposition);

            int dotPosition = contentDisposition.lastIndexOf(".");

            String temp = contentDisposition.substring(dotPosition,contentDisposition.length()-1);

            UUID uuid = UUID.randomUUID();

            String fileName = uuid.toString()+temp;

            part.write(fileName);

            File srcFile = new File("d:\\upload\\"+fileName);

            File destFile = new File("d:\\upload\\_"+fileName);

          

            BufferedImage srcbi = ImageIO.read(srcFile);

            BufferedImage destbi = new BufferedImage(50, 50, BufferedImage.TYPE_3BYTE_BGR);

            Graphics2D g = destbi.createGraphics();

            g.drawImage(srcbi, 0, 0, 50, 50, null);

            ImageIO.write(destbi, temp.substring(1), destFile);

           

            }

            else{

                  response.sendRedirect("./partUploadForm1.jsp");

            }

                  

      }

 

 

}

 

코드설명 /

@MultipartConfig 는 서블릿에서  multipart/form-data 형태로 전송된 데이터를 처리할 수 있게 지정한다.

파일이 최종 저장될 경로는 d:/upload 이고

업로드된 파일이 0바이트보다 커지면 임시 디렉토리에 저장된다.


파일이 gif,jpeg,png형식이 아닐경우 partUploadForm1.jsp로 돌아가고 맞을경우엔 흰화면


+ Recent posts