HTTP 응답코드, XML 에러페이지 설정 error-page, error-code, location, exception-type, errorPage, EL, ${속성값} - div, mod, gt, ge, lt, le, eq, ne, empty, input File 업로드 - enctype multipart/form-data, cos.jar

2019. 5. 7. 19:17웹(JSP)

------------------------------에러페이지 설정---------------------------------

HTTP 응답코드
            1XX
                        - 현재는 사용하지 않는 응답코드
                        - 서버가 응답을 받았고 요청을 처리중이라는 정보를 전달할 때 사용한다.
            2XX
                        - 클라이언트의 요청을 성공적으로 처리했다.
                        - 200 OK : 요청이 성공적으로 처리했을때 사용된다. 가장 기본적인 응답코드
                        - 206 Partial Content : 컨텐츠의 일부분만 제공할 때 사용된다.
            3XX
                        - 요청이 완료된 후 리다이렉션이 이루어져야할 때 사용된다.
                        - 302 Found : 다른 페이지로 이동할 때 사용된다.
                        - 304 Not Modified : 브라우져에 캐시되어 있는 내용을 사용할 때 응답코드다.
            4XX
                        - 클라이언트의 요청이 올바르지 않을 때 사용된다.
                        - 400 Bad Rquest         .: 요청이 잘목되었을 때 사용되는 응답코드
                        - 401 Unauthorized       : 인증이 필요한 페이지에 인증없이 접근했을 때 사용되는 응답코드
                        - 403 Forbidden           .: 서버가 요청을 거부했을 때 사용되는 응답코드
                        - 404 Not Found           : 페이지를 찾을 수 없을 때 사용되는 응답코드
                        - 408 Request Timeout  .: 요청처리 중 시간이 초과되었을 때 사용되는 응답코드
            5XX
                        - 올바른 요청에 대해서 서버가 요청을 처리중 에러가 발생했을 때 사용된다.
                        - 500 Internal Server Error : 서버에서 요청처리중 에러가 발생했을 때 사용되는 응답코드






XML에 에러페이지 설정하기

1. 에러코드에 해당페이지 설정하기
            - error-code, error-page, location을 통해 xml에 설정한다.
            (우선순위 3번째)
                        error-page
                                error-code 에러코드 /error-code
                                location 해당 에러코드에 열 파일명 /location
                        /error-page


위의 파일에 아래처럼 작성을 한다.

                
그럼 아래처럼 demo11파일을 못찾고 demo10_404파일이 열린다.

 




2. 해당 예외에 페이지 설정하기
            - 1번의 에러코드에 해당페이지를 설정하는것보다 우선순위가 높다
            (우선순위 2번째)
                       error-page
                    exception-type 에러처리할 예외상황 /exception-type
                    location 해당 예외에 열 파일명 /location
                        /error-page





3. 페이지내에서 에러페이지 지정하기
            - 지정한 페이지에서 설정하면 에러가 생길때 특정페이지가 열리게 할 수 있다.
            (우선순위 1번째)

            에러가 일어날 페이지 설정
            <%@ page 끝에 errorPage="에러시 열릴 페이지"

            에러 발생시 보여줄 페이지 설정
            <%@ page 끝에 isErrorPage="true" 로한다. (false가 기본값)







--------------------------------EL (Expression Language)------------------------

EL(Expression Language)
            - 표현언어
            - JSP 스크립트요소(스크립트릿과 표현식)를 보안하기 위해서 만들어졌다.
            - 가능한 작업
                     - PageContext, HttpServletRequest, HttpSession, ServletContext에 
                       속성으로 저장된 값을 표현할 수 있다.
                     - pageContext.setAttribute("속성명", 값);      --> ${속성명}    ${pageScope.속성명}
                       request.setAttribute("속성명", 값);             --> ${속성명}    ${requestScope.속성명}
                       session.setAttribute("속성명", 값);             --> ${속성명}    ${sessionScope.속성명}
                       applocation.setAttribute("속성명", 값);       --> ${속성명}    ${applicationScope.속성명}

                                    기본자료형이 속성값으로 저장된 경우
                                                ${속성명}
                                    VO객체 속성값으로 저장된 경우
                                                ${속성명.필드명},  ${속성명["필드명"]}
                                    Map객체가 속성값으로 저장된 경우
                                                ${속성명.키},  ${속성명["키"]}
                                    배열 혹은 List(ArrayList, Vector, LinkedList)가 저장된 경우
                                                ${속성명[인덱스]}

                        - 사칙연산자, 비교연산자, 논리연산자를 이용해서 간단한 연산을 수행할 수 있다.
                                    사칙연산자
                                                + - * /         %
                                                      div      mod
                                    비교연산자
                                                >    >=    <   <=   ==   !=
                                               gt     ge    lt    le     eq   ne
                                    논리연산자
                                                &&    ||    !
                                                and   or   not
                                    기타연산자
                                                empty
                        - 요청파라미터, 초기화파라미터, 요청헤더, 쿠키 등의 값을 표현할 수 있다.
                        - 자바클래스의 메소드를 호출해서 그 결과값을 표현할 수 있다.
                        
            - 형식
                        ${EL표현식}
                        ${EL표현식 연산자 EL표현}
                        ${연산자 EL표현식}
                        ${속성명.변수명}       <---- "속성명"으로 찾아진 값이 VO객체인 경우
                                                             해당값을 담고있는 필드를 .연산자와 함께 적는다.
                                                            예시) ${movie.title} 근데 ${movie["title"]} 해도 된다.


예시)





예시2) 속성으로 받아오기





예지3) 속성안에 속성을 받아오기





예시4) map속성으로 받아오기






예사5) Arraylist및 배열 속성 받아오기






예시6) EL의 연산자 사용하기





예시7) empty 및 not empty 사용하기






예시8) EL 요청 파라미터값과 param 사용하기






예시9) initParam 값 조회하기 web.xml의 파일을 조회할 수 있다.

web.xml



demo8.jsp

 









-----------------------------input File 업로드 (파일 업로드하기)---------------------
            
파일 업로드하기
            - input type을 file로 한다.
                        

<input type="file" >

 


            - form에 enctype="multipart/form-data"설정을 추가한다.

enctype 속성
            - 폼에 입력된 값을 서버로 전달할 때 어떤 형식으로 값들을 변환해서 정달할 것인지를 
              지정하는 속성이다.
            - 지정하지 않으면 "application/x-www-form-urlencoded"가 기본값으로 설정된다.
            - enctype="application/x-www-form-urlencoded"은 폼의 입력값을 URL의 쿼리스트링과 
              같은 형태로 만들어서 서버로 전송한다.
              * username=홍길동&userid=hong&userpwd=zxcv1234&useremail=hong@gmail.com 
            - enctype="application/x-www-form-urlencoded"은 첨부파일을 서버로 전송할 수 없다.

            - 첨부파일이 업로드되는 경우에는 enctype="multipart/form-data"로 반드시 설정해야 한다.
            - boundary에 지정되어 있는 문자열(브라우져가 작동으로 생성함)을 이용해서 폼의 입력값이나 
              파일 데이터를 구분지어서 서버로 전송한다.
            - 이런형식으로 전달되는 요청을 "멀티파트요청" 이라고 한다.
               * 멀티파트요청은 첨부파일이 서버로 업로드되는 요청을 말한다.
               * 멀티파트요청을 JSP나 서블릿에서 처리하기 위해서는 외부라이브러리나 서블릿3.0이상에서
                 지원하는 API가 필요하다.
               * cos.jar나 commons-fileupload library 등이 필요하다. 

※. cos.jar WEB-INF/lib에 넣기
       cos.jar파일 다운로드 : http://www.servlets.com/cos/


예시) 파일 업로드 해보기



예시 2) 파일사이즈 제한, 파일이름 중복 정책 추가

 

 




예시 3)