728x90
이 주간은 JSP와 Servlet을 학습했다.
학습 내용
- 로그인 ~ 로그아웃까지의 상태 유지 기술 학습
- http 기본 기질은 client 의 접속 상태를 절대 유지하지 않음
- http://www.naver.com/
http://shopping.naver.com/home/p/index.naver
http://swindow.naver.com/style/fashionbrand/list/category
http 기본 기질은 3개의 link를 개별적으로 직접 호출로 간주
어떤 화면에서 click 해서 화면이동등에 대한 인지를 안 함
개발자들이 상태 유지 및 기록은 100% 코드로 책임
- 세션 tracking
* web page 이동 기술과 무관하게 client의 상태 유지하는 기술
1. 종류
1. 세션
- client의 상태값을 서버 메모리에 저장
- 저장하는 데이터 타입은 제한이 없음
(단, 객체 타입만 가능)
- javax.servlet.http.HttpSession
- 생성 or 이미 생성된 세션 반환
HttpSession 변수 = request.getSession();
- 세션에 데이터 저장
- setAttribute()로 다수의 데이터들 저장가능
변수.setAttribute("key", 객체타입다가능);
- 세션에 특정 데이터 삭제
변수.removeAttribute("key")
- 세션에 저장된 데이터(Object) 반환
변수.getAttribute("key")
- 세션 무효화
invalidate()
2. 쿠키
- client의 상태값을 client 시스템 메모리에 저장
- ms window의 ms 브라우저로 실행시에는 쿠키 폴더에 저장
- ms window상에서 타 회사의 브라우저 사용시 브라우저 자체 메모리에 저장
- 저장하는 데이터 타입 제한있음
- 단순 문자열
- 헨젤과 그래텔 동화책의 컨셉
- javax.servlet.http.Cookie
생성 -> 시간 설정 -> client 시스템에 저장
Cookie c1 = new Cookie("key", "value");
c1.setMaxAge(초);
response.addCookie(c1);
활용
Cookie [] 변수 = request.getCookies();
반복문 통해서 Cookie 획득
String getName() - key값 반환
String getValue() - value 값 반환
client 시스템에서 이미 저장된 쿠키 삭제시
동일한 key로 값이 없는 Cookie객체를 다시 재전송 필수
2. 실습 구조
login.html -> LoginValidate.java(유효성/redirect) : 이름도 추가 저장 -> Welcome.java -> Logout.java
2-1. 쿠키 개발 방식
login.html
LoginValidate.java
- 유효하다면 Cookie 생성
- 데이터 쿠키에 저장
쿠키에 새로운 정보가 저장 & client 시스템에 쿠키 정보 저장
- redirect로 Welcome 으로 이동
Welcome.java
- 저장된 쿠키를 client 시스템으로 부터 획득
- 로그아웃 "버튼" 클릭하면서 Logout.java로 이동
Logout.java
- client 시스템에 저장된 쿠키 정보 삭제
3. 추가 학습
1. path의 dept를 적용
http://ip:port/project명/login.html
http://ip:port/project명/encore/playdata
http://ip:port/project명/succ
2. 경로 표현
1. 절대 경로
c://
d://
http://..
현 위치가 중요하지 않고 표현법만으로 해당 위치를 절대적으로 인식할수 있는 경로 표현법
2. 상대 경로
.. 표현식으로 현 위치를 기준으로 설정하는 경로
http://ip:port/project명/a/b/c/index.html
http://ip:port/project명/a/b/c/test.html
index.html -> test.html로 이동시
<a href="test.html ">이동</a>
http://ip:port/project명/a/b/c/index.html
http://ip:port/project명/a/b/test.html
index.html -> test.html로 이동시
<a href="../test.html ">이동</a>
http://ip:port/project명/a/b/c/index.html
http://ip:port/project명/a/test.html
index.html -> test.html로 이동시
<a href="../../test.html ">이동</a>
=======================================================
[JSP 학습]
1. JSP
java server page의 약어
view단 개발을 위한 스펙
html tag/jsp tag/css/java script
java 데이터를 활용가능한 스펙
확장자 *.jsp
servlet과 달리 타입과 변수 선언 없이도 내장 객체가 자동 생성
- request/response/session/out ...
최초 client가 호출시에 jsp -> servlet으로 web server가 자동 변환
-> 컴파일 -> byte code를 server 메모리에 로딩 -> servlet객체 생성후 service()/doGet()/doPost() 실행
2. JSP tag
- 브라우저 화면에 데이터 출력 용으로 주로 사용
- 권장 : jsp는 가급적 순수 자바코드는 지양!!!
- 종류
1. jsp scripting tag
- 5가지로 구성 / java 코드 위주로 개발하게 되는 tag
2. jsp action tag
- <jsp:tag명>
2-1. <jsp:forward> : forward(dispatcher) 방식으로 웹 페이지 이동 tag
: forward tag로 이동되는 최종 jsp에서의 출력 로직은 화면에 실행되나
이 코드가 구현된 jsp는 실행되기는 하나 브라우저에 출력은 안됨
결론 : 보이는 화면에 출력하는 내용들은 forward로 이동된 jsp에서 작업하셔야 함
2-2. <jsp:include> : forward(dispatcher) 방식으로 웹 페이지 이동 tag
: page속성에 설정한 jsp 또는 servlet 내용을 현 page에 포함
결론 : 두 파일 모두 화면단에 출력
3. EL
- 데이터 출력 tag
- ${}
- request or session에 저장된 데이터값들을 뽑아서 브라우저 화면에 출력
- jsp에서만 사용되는 코드(html에선 사용 불가)
- 브라우저에 출력하고자 하는 데이터가 없을 경우
즉 null인 경우 화면에 blank로 처리
4. JSTL
- 자바 코드를 tag화 시키는 최적의 tag
- 조건 tag/반복 tag
- <c:tag명>
- EL tag와 호환해서 사용
- 추가로 library 셋팅 필수
: 설치된 tomcat 내부에 sample 예제로 구성있는 경로 내용 활용
http://tomcat.apache.org 사이트에서 다운로드 가능
버전 이슈가 발생 가능
실습시 사용되는 tocmat에서 사용되는 library 발췌해서 셋팅
tomcat-9.0.58\webapps\examples\WEB-INF\lib\*
- tag
1. <c:if test="조건식">
- el tag 활용해서 조건 비교등 수행
- else tag 없음
- 다중 조건에 따른 when tag 사용
* 참고
1. web server[Web Application Server(WAS)]
2. tomcat 이라는 제품
3. 명칭
web server=web container=servlet engine ...
4. 주용도
servlet 즉 java 기반의 web 서비스 서버
5. html tag
- tomcat 관점 : html/css/javascript 모두 다 순수 문자열
- 브라우저 관점 : 각각의 interpreter 즉 해석 및 실행 엔진 내장
server는 문자열로 응답
단 브라우저 html/css/javascript 즉 코드로 문법 검증 후 실행
6. JSP
-> Servlet으로 자동 변경
-> server도 결국에 자바
java 코드는 java 실행환경에서 실행
jdk + tomcat 실행 환경에서 실행 후에 결과값만 문자열로 브라우저 응답
jsp tag들은 server 단에서 실행 후 결과만 브라우저로 응답
* 고려사항
1. jsp 코드 수정후에 갱신된 내용으로 service 하려 하는데 갱신이 안 되는 상황이 발생될 때의 해결책
C:\20220103_lab\03.Web1\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\step04_JSP\org\apache\jsp
jsp가 servlet으로 변환되어 저장된 위치에서 servlet 삭제 후에 jsp 재 실행
Connection Pooling 학습
1. CP
- 최대수 제한
- Connection 재사용
- jdbc API Connection close() 시에 메모리에서 삭제였으나
CP 사용시에는 Connection Pool 메모리에 반환 (재사용)
2. DB 시스템의 동시 접속자 수 제어하는 기술
3. 필요성
- 시스템 다운 방지를 위한 접속수 제어
4. 방식
1. 서버 벤더사 메뉴얼에 맞게 설정
2. 메카니즘은 전 세계 모든 IT 업계에선 필수 설정
3. was에 Connection 수 제한
3-1. 처음부터 최대 사용 가능한 Connection을 사전에 미리 만들어 놓음
3-2. 최소 수와 최대 수 설정해서 최소개수 만큼 Connection 생성 후에
그 수 초과 유저가 접속시 최대수 이하로 Connection 생성
5. 설정 파일 부연 설명
<Resource
name="jdbc/myoracle" : 설정의 고유한 이름
auth="Container" : 설정 관리 및 권한은 container(web server, servlet engine..)
type="javax.sql.DataSource" : cp 기능을 자바 소스에서 사용 가능하게 제공해주는 API
driverClassName="oracle.jdbc.OracleDriver" : db driver
url="jdbc:oracle:thin:@127.0.0.1:1521:mysid" : db 접속 설정 url
username="scott" password="tiger"
maxTotal="20" : Connection의 최대 동시 접속 개수
maxIdle="10" : 아무런 접속자가 현 상태에 없다 하더라도 대기 객체 수
maxWaitMillis="-1"/> : 20명 이상의 접속자들은 대기시간 설정속성
-1 은 대기시간 별도로 설정 하지 않겠다는 의미
6. 실행 원리
1. was 설정에 등록
- context.xml에 등록
2. 자바 코드로 was의 설정 정보 활용 가능한 객체 생성
- Context : project명으로도 사용되는 용어, 즉 project 자체를 의미
- 자원의 이름으로 특정 db 선별해서 반환 받음
- 설정 정보
java:/comp/env
java 환경 내부에 재사용 가능한 요소들
component - 부품/재사용성이 있는 부품
env - environment의 약어
환경 내부의 자원 검색해서 사용하겠다는 설정
3. 설정 정보 활용 가능하게 하는 객체에게 자원(특정 db의 cp 정보)검색 및 요청
4. Connection 객체 활용 및 반환
3일 정도는 위와 같은 지식을 학습했고, 남은 2일 간은 프로젝트를 진행했다. 해당 프로젝트에 대한 내용은 아래 링크를 통해 확인 할 수 있다.
https://paabaep.tistory.com/37
ps. 매우 정신 없는 주간이었다. 배우는 것도 많았고, 프로젝트도 진행하느라 힘들었지만, 그만큼 얻는것도 많아서 좋았다. 혜경 강사님과의 마지막 주였고, 매우... 아쉬웠다... 디엠으로 질척여야지...
728x90
반응형
'부트캠프수업정리' 카테고리의 다른 글
8주차 정리(2/21~2/25) (0) | 2022.03.02 |
---|---|
7주차 정리(2/14~2/18) (0) | 2022.02.21 |
5주차 정리(2/3~2/4) (0) | 2022.02.04 |
4주차 정리(1/24~1/28) (0) | 2022.01.28 |
3주차 정리(1/17~1/21) (0) | 2022.01.21 |