- class
package : member.dto
class name : MemberDTO

 

- listener class
package : member.listener
name : DriverLoadingListener

 

 

- web.xml 등록하기

 

- 톰켓 실행 결과

 

Posted by 조은성
,

 

1. Eclipse for Java EE 실행

2. Eclipse 하단의 Data Source Explorer탭 선택

 

3. Database Connections 우클릭 하여 new 선택

 

4. Drivers : 의 우측의 +모양 버튼(new driver definition)을 클릭

 

5. Oracle 선택(다른 DB의 경우는 해당 DB 선택)후 Next

 

6. Oracle 버전을 선택 (다른 DB는 해당 버전 선택)

 

7. JAR List 탭에서 .jar 파일을 선택후 우측의 Edit JAR/Zip ... 클릭

 

8. Java가 설치된 경로로 이동하여 JAR파일을 선택해 줌(ojdbc_14.jar)

 

9. SID / Host / Port Number / User name / Password 등을 작성후 Test Connection 클릭

 

10. 다음과 같은 화면이 출력되면 제대로 설정 된 것

 

11. Finish를 클릭

Posted by 조은성
,

dynamic web project
   - member_servlet

 

 

 

 

 

 

SID : XE
Host :127.0.0.1
Port number 1521
user name : scott
password : tiger

Catalog: ALL

 

Posted by 조은성
,

class
package : servlet.session
class : WriteServlet      - /session_wirte
           ShowServlet    - /session_show
           RemoveServlet - /session_remove

 

 

 

WebContent
file : session
html : write_write_form.html

 

 

- 실행 결과

 

 


 

* 한컴퓨터에서 웹프라우저를 여러개 띄워도 jSessionId가 같은 값이 들어가서 동일한 결과가 나온다.(chrom을 띄우면 프로세스가 달라서 값이 나온다)

- JsessionId값 받아오는 ShowServlet  test

 

 

 

- 세션값 삭제하기

 

 

 

 

 

 

 

 

 - 결과

- 기존에 입력된 데이터에서 모든 입력글 삭제를 누르면 attribute가 지워지고 다시 폼 가기 가서 값을 입력하게 되면 새로 입력한 attribute 값만 들어가는 것을 볼 수 있다.  

 

 

Posted by 조은성
,

 

* HttpSession을 이용한 Session관리

- 클라이언트의 상태값을 서버측에 저장하여 Session관리
- javax.servlet.http.HttpSession 객체를 이용하여 관리한다.
   - 클라이언트의 상태값은 Attribute로 관리됨

- 장점
   - 관리할 수 있는 상태값(클라이언트 데이터)의 종류나 크기나 개수의 제한이 없다.
   - 서버에 저장되므로 cookie에 비해 보안상 유리

- 단점
   - 서버에 부담

- HttpSession 객체 생성
   - HttpServletRequest객체.getSession() 
      - 기존 Session이 있으면 기존 Sesstion객체를 없으면 새로 생성하여 리턴
         (ex : 로그인시 세션정보를 얻어옴)
   - HttpServletRequest객체.getSession(false) - jsp와 연동하면 의미가 없어진다.
      - 기존 Session이 있으면 기존 Session객체를, 없으면 null을 return

→ But, Servlet과 jsp를 같이 사용하는 코드에서는 두 가지를 비교할 의미가 없다. (오직 Servlet만 사용할때 사용)

- HttpSession 객체의 주요 메소드
   - setAttribute(String name, Object value);
   - getAttribute(String name) : Object value
   - removeAttribute(String name)
   - getAttributeNames() : Enumeration
   - invalidate() : session객체를 소멸 시킨다. (로그아웃시 사용)
   - setMaxInactiveInterval(int 초) : 클라이언트가 마지막 요청을 한 뒤 인수로 받은 시간 만큼 지나도 요청이 안들어 오면 session을 소멸 시킨다. (활동하지 않은 간격의 최대치를 얻어온다.클라이언트가 마지막 요청을 한 뒤에 int초 만큼 시간이 지나도 들어오지 않으면 session을 소멸시킨다.)
   - getId() : String - jSessionId 값 return 
     (session객체에 있는 id값을 조회 할 수 있다.)

 

Posted by 조은성
,

* cookie정보 관리(한글처리 및 필요한 키 정보 뽑기)

- cookie의 단점 : text만이 값으로 저장된다. (id, 이름, 나이, 성별 이라 하면 4개의 객체가 저장이 되고, 이것을 문자열로 만들게 되면 객체는 하나가 되지만 각각의 값을 뽑아오기 힘들다. 따라서 session이 attribute로 관리를 하고 server에 저장을 하므로 보안적 측면에서도 좋아서 많이 사용한다. 자바 스크립트단에서는 cookie를 많이 쓴다.(ex : 경고창(하루동안 보이지 않겠습니다.)

* SetCookieServlet2

- servlet class
package : servlet.cookie
name : SetCookieServlet2

url : /setcookie2

 

- GetCookieServlet

 

 

 - 실행 결과

'프로그래밍 > JSP Programming' 카테고리의 다른 글

2012-4 27 session scope[실습]  (0) 2012.04.27
2012-4-27 session이용하여 정보 유지하기  (0) 2012.04.27
2012-4-27 cookie 사용  (0) 2012.04.27
2012-4-26 cookie 실습  (0) 2012.04.26
2012-4-26 session 관리  (0) 2012.04.26
Posted by 조은성
,

* 쿠키 관리 : 로그인과 같이 일정한 시간이나 웹브라우저가 켜져 있는 동안 데이터를 유지해야 할 때 서버에서 여러개의 쿠키 값을 생성하고 클라이언트에 데이터를 저장해 두었다가 필요할 때 마다 서버로 데이터값을 가져와 사용 하는 것이다.

- 쿠키 생성
- javax.servlet.http.Cookie 사용 - 하나의 쿠키 값을 가지는 객체
- HttpServletResponse.addCookie(Cookie c) : 쿠키를 client로 전송
ex) Cookie c = new Cookie("name","value");
response.addCookie(c);
- 쿠키 값 조회
- HttpServletRequest.jetCookies() : Cookie[]
ex) Cookie[] c = request.getCookies();
- Cookie 클래스 주요 메소드
- getName() : String - name 값 조회
- getValue() : String - value 값 조회
- setMaxAge(int 초) - 쿠키가 web browser에 저장될 시간 설정
초 : 양수 - 저장될 시간
음수 - web browser가 살아있는 동안(기본)
0 - 삭제(그 이름의 쿠키를 삭제)

 

* setCookieServlet1을 위와 같이 해두고, getCookieServlet을 실행해보면 1시간동안은 쿠키 정보가 유지되는 것을 볼 수 있다.

* 1시간 후에 다시 실행해 보면 500서버 에러가 발생한 것을 볼 수 있다. (이유는 쿠키 저장 값이 client로 부터 사라져서 서버에서 쿠키 값을 읽어 올 수 없기 때문이다.

Posted by 조은성
,

* cookie 실습

- servlet class
package : servlet.cookie
name : SetCookieServlet1
          GetCookieServlet
url : /setcookie1
      /getcookie

 

- 결과

 

 

- SetCookieServlet1를 실행한 후에 웹브라우저를 다 닫고 GetCookieServlet다시 실행하면 쿠키 값이 웹브라우저에서 사라져서 500 서버에러를 낸다. 웹브라우저가 하나라도 살아 있으면 쿠키정보를 가지고 있어서 정상 작동 된다.

Posted by 조은성
,

 

 

* session이란?
client가 어플리케이션의 사용을 시작해서 끝날 때까지를 session이라 한다.

session관리 : 프로그램의 시작부터 끝날 때까지 데이터를 관리하는 것.(데이터가 끝날 때까지 데이터를 유지 ex : login~logout)

* Http protocal은 상태에 대한 데이터를 유지 할 수 없다. (요청하고 응답하면 데이터가 사라진다.)

 

* session관리

- Http 프로토콜은 stateless 한 특징을 가진다.
- stateless - 상태유지를 못한다.-> 클라이언트의 데이터를 유지 하지 못함

- Session
   - 하나의 클라이언트가 프로그램을 시작해서 종료할때 까지
   - 하나의 세션동안 여러번의 요청과 응답이 반복 될 수 있다.
   - 하나의 세션동안 클라이언트의 데이터는 유지 되어야 한다.

- Session 관리 개념
   - Http 프로토콜의 특징이 클라이언트의 상태를 유지 못하므로 CGI에서 지원
   - 방식
      - Cookie를 이용
      - Session을 이용
      - URLRewriting을 이용

* Cookie를 이용한 Session관리
   - 쿠키
      - 서버가 브라우저(client)로 전송하는 text 데이터
      - 쿠키는 클라이언트의 정보를 유지하기 위한 데이터로 Web Browser에 저장된다. - > 클라이언트 단에 저장
      - key-value 형태로 관리됨
      - 저장 데이터의 종류는 문자열만 가능
      - Web Browser는 쿠키를 사이트 별로 관리한다. 
- 장점
   - 서버에 부하를 줄일 수 있다.
- 단점
   - 관리할 수 있는 데이터의 종류, 크기에 제약
   - 보안상 문제
- 구문
   - 쿠키 생성
      - javax.servlet.http.Cookie 사용 - 하나의 쿠키 값을 가지는 객체
      - HttpServletResponse.addCookie(Cookie c) : 쿠키를 client로 전송
      ex) Cookie c = new Cookie("name","value");
            response.addCookie(c);
   - 쿠키 값 조회
      - HttpServletRequest.jetCookies() : Cookie[]
      ex) Cookie[] c = request.getCookies();
- Cookie 클래스 주요 메소드
   - getName() : String - name 값 조회
   - getValue() : String - value 값 조회
   - setMaxAge(int 초) - 쿠키가 web browser에 저장될 시간 설정
                                   초 : 양수 - 저장될 시간
                                         음수 - web browser가 살아있는 동안(기본)
                                         0 - 삭제(그 이름의 쿠키를 삭제)

 

Posted by 조은성
,

 

* lock flag : 한 프로세스가 작업을 끝내기 전에 다른 프로세스가 접근 하는 것을 막는 것.

* 동기화블럭 실행 예제

1. synchronized가 있을 때 예제
- 하나의 요청이 있는 동안 다른 하나의 요청이 대기하다가 하나의 요청이 끝나면 다른 요청이 실행된다.

- 결과 

 

- 동기화블럭 전 count
1. synchronized가 없을 때 실행
하나의 요청이 있는 동안 다른 요청이 들어와서 동시에 같은 결과를 받아 데이터 문제가 발생 된다.

 

- 실행결과

 

Posted by 조은성
,