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
-----------------------------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)