멍발자의 개발
Jsp&Servlet (2) 본문
* 뉴렉처 Jsp&Servlet 강의를 듣고 공부한 내용입니다.
웹 서버 프로그램이란?
Servlet : 사용자의 요청을 처리하는 단위를 나눈 것이다. 그 단위는 클래스로 분리해 놓고 있다.
요청자 = 클라이언트
제공자 = 서버
GET : list/reg/edit/del
톰캣 9 context 사이트 추가하기
Context 사이트 추가
= http://IP(or hostname):Port/context/리소스들
Servlet 객체 생성과 실행
-톰캣에 의해서 서블릿 코드 실행되도록 코드 배치와 요청
서블릿이 실행되는 시점과 방식
GET: 1/2/3/4
URL과 매핑된 Servlet 코드를 찾아서 실행
요청에 해당되는 서블릿 클래스를 찾는다.
- WEP-INF 폴더는 외부에서 직접 요청할 수 있는 디렉토리가 아니기 때문에
설정할 코드를 넣는다.
- 약속된 방식으로 매핑 처리를 한다.
컨텍스트 매핑(디렉토리)은 server.xml
서블릿(class)매핑은 web.xml에 한다.
<servlet>
<servlet-name>na</servlet-name>
<servlet-class>Nana</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>na</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
서블릿(Servlet) 문자열 출력
주석 처리 단축키 : 주석 원하는 범위 드래그 후 -> ctrl + shift + /
한글 형식으로 출력하기
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8"); 추가
사용자 입력을 통한 GET 요청
post : 보완문제점이 있을 수 있고, url 길이제한으로 인해 post 메서드로 전달한다.
request.getParameter("title"); //name값이 key값이고, value를 얻어온다.
상태 유지를 위한 5가지 방법
1) application
2) session
3) cookie
4) hidden input
5) querystring
6) application 객체 Application 저장소 : 서블릿 컨텍스트(Context)
=> application은 일반적으로 통용되는 전역개체 이름인 Application의 인스턴스이고,
그것이 서블릿에서는 ServletContext 객체로로 실현되어 있다.
setAttribute ("키", 값);
Session 객체로 상태 값 저장하기WAS가 현재사용자 (Session)을 구분하는 방식세션 메소드
void setAttribute(String name, Object value) //지정된 이름으로 객체를 설정
Object getAttribute(String name) //지정한 이름의 객체를 반환
void invalidate() //세션에서 사용되는 객체들을 바로 해체
void setMaxInactiveInterval(int interval) //세션 타임아웃을 정수(초)로 설정
boolean isNew() //세션이 새로 생성되었는지를 확인
Long getCreationTime() //세션이 시작된 시간을 반환, 1970년 1월 1일을 시작으로 하는 밀리초
Long getLastAccessedTime() // 마지막 요청 시간, 1970년 1월 1일을 시작으로 하는 밀리초
Cookie를 이용해 상태값 유지하기
application = 누구나 저장할 수 있는 공간
session = 자기만 저장할 수 있는 공간
쿠키 값으로 보내는 건 정수형이 아니라 무조건 String으로 변환
Cookie의 maxAge 옵션
setMaxAge(만료시간 설정)
쿠키의 만료 날짜를 설정하게 되면 클라이언트의 디스크에 저장이 되고
설정하지 않으면 클라이언트의 램에 저장된다.
Application/Session/Cookie의 차이점 정리
Application
사용범위 : 전역 범위에서 사용하는 저장 공간
생명주기 : WAS가 시작해서 종료할 때까지
저장위치 : WAS 서버의 메모리
Session (서버 낭비)
사용범위 : 세션 범위에서 사용하는 저장 공간
생명주기 : 세션이 시작해서 종료할 때까지
저장위치 : WAS 서버의 메모리
Cookie
사용범위 : Web Browser별 지정한 path 범주 공간
생명주기 : Browser에 전달한 시간부터 만료시간까지
저장위치 : Web Browser의 메모리 또는 파일
서버에서 페이지 전환해주기 (redirection)
동적인 페이지 (서버 페이지)의 필요성
html은 정적인 페이지라 버튼을 눌러도 페이지에 동적으로 반영이 힘들기 때문에 요청이 들어오면
서버에서 동적인 문서를 만들어서 그것을 사용자에게 보내야 한다.
JSP 내장 객체
내장 객체 request : HttpServletRequest
getParameterNames() //사용자가 전달한 키들을 Enumeration 객체로 반환
getParameter(name) //사용자가 전달한 name과 일치하는 값을 반환
getParameterValuew(name) //사용자가 전달한 name과 일치하는 값을 배열형식으로 전환
getCookies() 클라이언트에서 전달한 쿠키를 배열 형식으로 변환
getMethod() //현재 요청 방식이 GET인지 POST인지 문자열로 반환
getSession() //현재 세션 객체를 반환
getRemoteAddr() // 클라이언트의 IP주소를 반환
getProtocol() // 현재 서버의 프로토콜을 문자열로 반환
setCharacterEncodint()// 현재 JSP로 전달되는 내용을 지정한 문자셋으로 변환해준다
getHeaderNames()//현재 요청이 가지는 헤더의 이름들을 반환
getHeaders(name)// 현재 요청한 헤더에서 지정한 이름의 모든 값들을 반환
getQueryString()// 현재 요청에 포함된 쿼리 문자열을 반환
내장 객체 response : HttpServletResponse
setContentType(type) //컨텐트 형식을 설정
setHeader(name, value) 클라이언트에게 헤더로 전달할 값을 설정
setDateHeader(name, date) //클라이언트에게 헤더로 전달할 날짜를 설정
sendError(status, msg) //클라이언트에게 에러코드와 메시지를 전달
sendRedirect(url) //클라이언트 요청을 다른 페이지로 전달
addCookie(cookie) //클라이언트에게 전달할 쿠키를 설정
encodeURL(url) //URL로 유효하지 않은 문자를 인코딩
setStatus(sc) //상태 코드를 설정
내장 객체 out : javax.servlet.jsp.JspWriter
getBufferSize() //output buffer의 크기를 byte로 알려준다.
getRemaining() //남아있는 버퍼의 크기 중 사용가능한 비율을 알려준다
clearBuffer() //버퍼에 있는 콘텐츠를 모두 지운다
flush() //버퍼를 비우고 output stream도 비운다
close() //output stream을 닫고 버퍼를 비운다
println(content) // content의 내용을 newline과 함께 출력한ㄷ
print(content) //content의 내용을 출력한다
내장 객체 session : javax.servlet.http.HttpSession
getID() //각 접속에 대한 세션 고유의 id를 문자열형태로 반환
getCreationTime() //세션이 생성된 시간을 밀리세컨드값으로 반환
getLastAccessedTime() //현재 세션으로 마지막 작업한 시간을 밀리세컨드 값으로 반환
getMaxInactiveInterval() //세션 유지 시간을 초로 반환
setMaxInactiveInterval(t) //세션 유효시간을 t에 설정된 초 값으로 설정
invalidate() //현재 세션을 종료. 세션과 관련한 값을 모두 지움
getAttribute(attr) // 문자열 attr로 설정된 세션값을 object형태로 반환
setAttribute(name,attr) //문자열 name으로 설정된 attr을 설정
removeAttribute(name) //세션에 설정한 속성 값을 삭제
내장 객체 application : javax.servlet.ServletContext
setAttribute(name, value) //application 범위의 값 설정
getAttribute(name) // application 범위의 값 얻기
getRealPath(path) // 실제 물리 경로를 반환
getResourse(path) // path 경로의 리소스를 가리키는 URL을 반환
getServerInfo() // 현재 요청 방식이 GET인지 POST인지를 문자열로 반환
getSession() // 현재 세션 객체를 반환
getRemoteAddr() // 클라이언트의 IP 주소를 반환
getProtocol() // 현재 서버의 프로토콜을 문자열로 전환
setCharacterEncoding() //현재 JSP로 전달되는 내용을 지정한 문자셋으로 변환해준다.
MVC model 1
코드 블럭을 최소화하고자 함
위에는 입력 코드, 아래에 출력 코드를 모아두는 방식
입력과 제어를 담당 : Controller[자바코드]
출력 담당 : View [HTML 코드]
출력 데이터 : Model
자바코드와 출력코드를 최대한 분리하는 것이 중요.
model 1 : 컨트롤러와 뷰가 물리적으로 분리되지 않은 방식
model 2 : 컨트롤러와 뷰가 물리적으로 분리된 방식
MVC model2 : Dispatcher를 집중화하기 전의 모델
forward : 이전 과정에 기반한 요청
redirect : 새로운 요청
EL
EL(Expression Language)
저장 객체에서 값을 추출해서 출력하는 표현식
${} = > 값을 꺼내서 출력까지 해준다
EL의 저장소
저장 객체에서 값을 추출하는 순서
page > request > session > application
클라이언트의 입력값 추출 (내장 객체와 설명)
pageScope //Page 영역의 생명 주기에서 사용되는 저장소
requestScope //Request 영역의 생명 주기에서 사용되는 저장소
sessionScope //Session 영역의 생명주기에서 사용되는 저장소
applicationScope //Application 영역의 생명주기에서 사용되는 저장소
param // 파라미터 값을 저장하고 있는 저장소
paramValues // 파라미터 값을 배열로 저장하고 있는 저장소
header // Header 정보를 저장하고 있는 저장소
headerValues // Header 정보를 저장하고 있는 저장소
cookie // 쿠키 정보를 저장하고 있는 저장소
initParam // 컨텍스트의 초기화 파라미터를 저장하고 있는 저장소
pageContext //페이지 범위의 컨텍스트 저장소
JSTL (JSP Standard Tag Library)
태그 라이브러리의 표준화
1. Core
2. Formating
3. Functions (문자열 조작)
4. SQL
5. XML
중간 요약 정리
서블릿 > 자바 웹 프로그램이다 (자바 웹 서버 프로그램이다)
웹 입/출력 = request /response
request - 입력 설정 / 입력값 읽기
response - 출력 설정 / 출력 스트림 > 웹문서 출력 > 문서 기반(jsp)의 코드블록 > 스파게티 >
MVC > View에서 코드 블록이 꼭 필요한 이유 > EL, JSTL(제어)
forEach의 속성 사용하기
(JSTL이 가지고 있는 태그)
${st.current} // 현재 반복되는 아이템
${st.index} // 현재 반복되는 반복 인덱스 (0부터 시작함)
${st.count} // 현재 반복 횟수
${st.first} // 현재 아이템이 첫번째 아이템인지를 알려줌 (true or false)
${st.last} // 현재 아이템이 마지막 아이템인지를 알려줌 (true or false)
${st.begin} //begin 속성에 설정한 값
${st.end} //end 속성에 설정한 값
${st.step} //반복되는 인덱스의 증가치
JSTL로 Pager 번호 만들기
startNum = page - (page-1)%5;
ex) page = 3 -> 3-(3-1)%5 - > 1
page = 21 -> 21-(21-1)%5 -> 21
page = 14 -> 14-(14-1)%5 -> 11
'STUDY > JSP & Servlet' 카테고리의 다른 글
Jsp&Servlet (1) (0) | 2022.07.04 |
---|