JSP에서 기억하고 싶은 내용
JSP의 요청과 응답이란
요청: 클라이언트가 웹 서버에게 특정 페이지 전송 요구
응답: 웹 서버가 클라이언트에게 결과 전송
request 내장 객체
클라이언트의 요청 표현하는 JSP 내장 객체
내장 객체 기능
- 클라이언트가 서버 관련 정보 읽기
- 클라이언트가 전송한 파라미터 읽기
- 클라이언트가 전송한 헤더, 쿠키 정보 읽기
- 데이터 공유
내장 객체 사용 예시
<li>클라이언트 주소: <%=request.getRemoteAddr() %></li>
<li>요청 정보 길이: <%=request.getContentLength() %></li>
<li>인코딩: <%=request.getCharacterEncoding() %></li>
<li>문서 타입: <%=request.getContentType() %></li>
<li>프로토콜: <%=request.getProtocol() %></li>
<li>전송방식: <%=request.getMethod() %></li>
<li>요청 URI: <%=request.getRequestURI() %></li>
HTML Form
- 유저가 데이터를 입력하기 위한 틀
- 요청과 함께 서버로 데이터 전송 가능
- 입력된 정보는 파라미터로 전송된다
- request 객체를 이용해서 파라미터 읽고 처리 가능
요청 파라미터 읽기
- 인코딩 해주고
<% request.setCharacterEncoding("UTF-8") %>
1. 값 읽기 첫 번째 방법(파라미터 이름 알고 있을 때)
<%=request.getParameter("name") %>
2. 값 읽기 두 번째 방법(파라미터 이름 몰라도 됨)
Enumeration<String> p = request.getParameterNames()
while(p.hasMoreElements){
}
3. 값 읽기 세 번째 방법(파라미터 이름 몰라도 됨)
Map<String, String[]> m = request.getParameterMap()
for(String name: m.keySet()) {
String[] values = m.get(name)
...
}
Get과 조금 다른 Post 방식
- body에 데이터 전달
- 길이 제한 없고 보안이 Get 보다 유리
- 게시글 포스팅, 암호, 신용카드 정보 보낼 때
- 히스토리가 안남아서 북마크 불가
response 내장 객체
- 응답 헤더 정보 설정: setHeader()
- 쿠키 추가: addCookie()
- 상태코드 설정: setStatus()
- 응답 body 만들기 위해 출력 스트림 객체 제공
: getWriter(), getOutputStream() - 다른페이지 강제 이동: sendRedirect()
웹 서버가 웹 브라우저한테 다른 페이지로 이동하라고 지시
상태 코드 302면, 응답 헤더에 있는 Location에 있는 URL로 이동
<jsp:forward>와 비슷하지만 조금 다르다
이동 URL에 특수 문자나 한글 인코딩 필요
URLEncoder.encode(String s, "UTF-8") 사용
응답시 캐시 사용
서버에 요청하지 않고 캐시에 있는 데이터를 사용해서 응답
장점
- 빠른 응답 가능
- 서버 로드와 네트워크 사용 감소
주의점
- 변경이 빈번하면 잘못된 결과 응답 가능
'Web Dev > JSP' 카테고리의 다른 글
JSP 7강 :: include, forward, 모듈화, 파라미터 보내기 (0) | 2022.10.17 |
---|---|
JSP 6강 :: 주요 내장객체, 페이지간 데이터 공유 방법 (0) | 2022.10.10 |
JSP 4강 :: JSP 처리 과정, 출력 버퍼 (1) | 2022.10.03 |
JSP 3강 :: JSP 문서 구성요소 (0) | 2022.10.03 |
JSP 1강 :: 웹 앱 구성요소, JSP, 서블릿, CGI vs WAS (0) | 2022.09.28 |