1. 질의 문자열
- 클라이언트가 웹서버에 정보를 요청할때 사용하는 문자열
- 규칙
. name = value 형식으로 전달
. 여러개의 쌍으로 전달될때는 &를 구분자로 한다.
. 영문자 숫자, 일부 특수문자는 그대로 전달가능하지만,
. 그외의 문자(한글) 등은 %기호와 함께 전달된다.(서버에서 복원 처리를 해줘야한다.)
. 공백문자는 + 기호로 변경되어 전달된다.
. url은 공백을 포함할수 없는 특징을 갖고 있다면 공백앞까지를 URL로 인식한다.
2. JSP에 내장되어 있는 객체
- request : 클라이언트의 요청정보에 대한 객체 - ServletRequest 클래스
- response : 웹서버에서 클라이언트에 보내는 응답정보객체 - ServletResponse 클래스
- pageContext : 페이지에대한 정보관리 객체 (JSP 페이지당 1개 1:1대응) - PageContextJSP 클래스
- session : 세션정보관리 - HTTPSession 클래스
* HTTP프로토콜의 특징 중 하나로 무상태성(Statless)가 있다.
- 한번 요청하고 한번응답 받으면 접속이 끊기는 것.
* 세션이란 쿠키를 기반으로 일정시간동안 동일한 브라우저로 부터 들어오는 요청을
하나의 상태로보고 그상태를 유지하는 기술이다.
- application : 웹어플리케이션에 대한 정보관리 - ServletContext 클래스
- exception : 예외처리에 이용되는 객체, 오직 에러페이지에서만 import하여 사용할수있다. - Throwable 클래스
3. Request객체 : 클라이언트에 관련된 정보, 서버에 관련된 정보, 클라이언트가 요청한 데이터, 쿠키정보 등 - ServletRequest 클래스
1)클라이언트 정보
. 클라이언트 IP주소 - getRemoteAddr( ) ip v4, ip v6
. 요청한 정보의 길이 - getcontentLength( )
. 요청할때 사용한 문자열 인코딩 - getCharacterEncoding( )
. 요청받은 문자열 인코딩 설정 - setCharacterEncoding("utf-8")
. 전송할때 사용한 문서타입 - getContentType( )
. 전송할떄 사용한 전송방식 - getMethod( )
. 전송할때 사용한 URL경로 - getRequestURL( )
2) 서버관련정보
. 서버의 주소 - getServerName( )
. 연결한 포트번호 - getServicePort( )
3) 클라이언트가 웹서어베 전송한 데이터
. 폼의 name값 읽기 - getParameter( ) >>String
. 폼에서 복수의값을 읽기 - getParameterValues( ) >> String[ ]
. 웹브라우저가 전송한 파라미터의 name들 읽기 - getParameterNames( ) >> Enumeration
4) request객체에 데이터 저장관리
. 데이터 저장 - setAttribute(String name, Object obj)
. 데이터 읽기 - getAttribute(String name) >> object
. 전체 데이터읽기 - getAttributeNames( ) >> Enumeration
. 데이터 삭제 - removeAttribute(String name)
5) 세션
. 요청한 클라이언트가 사용한 session객체를 읽기, 만약 반환한 session객체가 없으면 생성해서 반환해준다. - getSession( )
. 요청받은 서버가 그전에 클라이언트에게 보냈던 모든 쿠키 읽기 - getCookies( ) - cookie[ ]
6) 서블릿(servlet)객체
. 서버가 시작될때 웹애플리케이션 단위로 생성되는 ServletContext 객체의 주소를 반환 - getServletContext( ) - ServletContext 클래스
4. response 객체
1) 응답전송방식과 상태/오류
. HTTP응답상태 코드결정 -sendStatus(int 상태코드)
. 응답할 내용의 MIME타입설정 - setContentType(String type)
. MIME타입 읽기 - getContentType( )
. 응답할 문자 인코딩방식 설정 - setCharterEncoding( )
. 응답할 문자 인코딩방식 읽기 - getCharterEncoding( )
. 에러응답을 클라이언트에 전송 - sendError(int status_code)
2) 출력버퍼설정
. 출력버퍼 크기 설정 - sendBufferSize(int size)
. 버퍼크기 알아보기 - getBufferSize( )
. 버퍼내용 클라이언트에 전송 - flushBuffer()
3) 페이지 전환
. 현재 페이지를 다른 페이지로 이동 - sendRedirect(String location)(vs. forward)
5. Forward와 Redirect 차이
1) Forward
. URL이 변경되지 않는다.
. request, response가 유지된다.
. request에 들어있는 값이 유지된다.
. 데이터 유지를 위해서 setAttribute( ), getAttribute( )를 활용한다.
. request.froward(location)
2) Redirect
. 웹서버가 웹브라우저에게 다른 페이지로 이동하라고 지시하는것을 의미한다.
. URL이 변경된다.
. 요청시시마다 request, response객체가 생성된다.
. getAttribute( )를 사용 할 수없다. getParameter( )를 사용해야한다.
. 주소줄에 한글/특수문자가 존재한다면 반드시 URLEncode를 해서 전송해야 한다.
. response.sendRedirect( )
6. 요청방식에 따른 처리 : 최초요청 >> init( )실행 >> 요청시(요청정보 ~ 응답정보 생성) 마다 request객체생성/response객체생성
---------------------------------------------------------------------
(요청 메시지) (응답 메시지)
요청방식 Reauest - URI HTTP버전 ~~~~~ HTTP버전 상태코드 상태텍스트
헤 더 헤 더
Accept, Accept-Encoding Cache-Control, Connection
Accept-language, user-Agent Content-Encoding, content-type
cache-Control Date, Server
바 디 바 디
(post방식 내용)
*Get /book/A HTTP/1.1 HTTP/1.1 200 OK
-----------------------------------------------------------------------
* 서버자원정보(URI)
- URL에서 포트번호 다음부터가 URI이다.
>> URI 정보로 웹서버에서 클라이언트가 요청한 문서를 찾아서 실행후 결과(또는 파일)을 클라리언트에 응답한다.
1)Get - 검색
. URL로 데이터를 넣어 요청할때
. <a href="">태그를 클릭하여 요청하는 경우
. 폼 태그에 method속성을 생략할 경우
. 255바이트 미만, 노출되어도 상관없는 것, 속도가 빠르다.
. 질의 문자열을 요청줄에 포함하여 전달한다.
2)Post - 초기화 / 추가 / 생성
. 요청 정보를 바디에 포함하여 전달한다.
. 데이터의 길이 제한이 없다.
. 속도는 상대적으로 느리다.
. form태그를 사용해야만 요청 할 수있다.
3)Put - 수정(update)에 주로 사용
4)Delete - 서버에서 리소스를 삭제하는 경우
7. 상태코드 : 요청처리 결과를 숫자세자리로 나타낸다. 즉, 클라이언트 요청에 대한 처리결과를 의미한다.
. 1XX : 조건부응답
. 2XX : 성공
. 3XX : 리다이렉션 완료
. 4XX : 요청보류
. 5XX : 서버오류에 관한 코드
- 200 : 클라이언트의 요청처리 성공
- 400 : 클라이언트의 문법적인 오류등 잘못된 요청으로 서버가해석불가
- 401 : 클라이언트가 잘못된 인증정보를 헤더에 넣었을 경우
- 403 : 사용자 허가모드 오류 - 페이지접근제한 거부
- 404 : 요청한 문서가존재하지않음 - 경로확인
- 405 : 서비스요청방식 지원 X
'JAVA > JSP' 카테고리의 다른 글
Redirect와 Forward (0) | 2023.05.13 |
---|---|
JSP Enumeration 이용해서 입력받은 정보 한번에 출력하기 (2) | 2023.05.11 |
HTML에서 입력받아 JSP에서 처리후 웹페이지로 출력하기 (0) | 2023.05.10 |
servlet 작성법 (0) | 2023.05.10 |
JSP(Java Server Pages) 기본 개념 (0) | 2023.05.10 |
댓글