뉴렉처 JSP [21 ~ 32]

김상복·2022년 4월 4일
0

뉴렉처JSP

목록 보기
2/5
post-thumbnail

21, 22. 과제 해결

1. 먼저 html 파일에서 form의 method="post"기능을 통해서 add에 데이터를 전송한다
2. Java파일에서 어노테이션 @WebServlet을 통해서 /add라는 형식의 데이터를 받아온다
3. request.getParameter을 통해 해당 name을 가지는 변수의 데이터를 가져온다 단, String 형식으로 파일을 가져오기 때문에 Integer.preseInt를 통해서 정수 형태로 바꿔준다
4. 출력한다

23. 다수의 Submit 활용

1. submit에 name으로 데이터명을 설정해서 java로 post 해준다
2. java파일에서 opreation이라는 데이터를 가져와서 확인 후 if문을 통해서 분배한다
3. 결과 출력 성공

중요한 점은 다수의 확인 버튼을 통해서도 name 옵션을 활용하면 다양한 결과를 출력할 수 있다는 점이다.

24. 입력데이터를 배열로 보내기

수 많은 데이터를 입력 받을 때 name을 정하기도 힘들기에 배열로 받는것이 좋다


[사용법]
<input type="text"/ name="num">
<input type="text"/ name="num">
<input type="text"/ name="num">
일 때
(java 파일)
에서
String num[ ] = request.getParameterValues("num");
이라고 하면 데이터가 저장 되는 걸 알 수 있다

25. 상태 유지의 필요성

데이터를 저장할 때 유지를 해야할 필요가 있음
1. application
2. session
3. cookie
4. hidden input
5. querystring

26. application

데이터를 저장할 수 있는 저장소의 개념

	ServletContext application = request.getServletContext();

의 코드로 객체를 생성하고

    application.setAttribute("value", v);
	application.setAttribute("op", op);
         

의 코드로 데이터를 저장

    int x = (Integer) application.getAttribute("value");

의 방법으로 데이터를 저장해서 사용한다

27. Session 객체로 상태 값 저장(apprication과의 차이점)

application과 같은 데이터를 저장하는 저장소

	HttpSession session = request.getSession();
    

의 코드로 객체를 생성하고

    session.setAttribute("value", v);
	session.setAttribute("op", op);
         

의 코드로 데이터를 저장

    int x = (Integer) session.getAttribute("value");

의 방법으로 데이터를 저장해서 사용한다

그렇다면 application과 session의 차이점은 뭘까?

차이점은 application은 전역에서 사용할 수 있고 session은 session의 범위안에서만 사용이 가능하다는 차이점이 존재한다. 즉, session은 사용자별로 사용할 수 있는 공간이 따로 존재하고 달라진다는 의미이다

예를 들면, application에서 크롬과 엣지를 사용해서 각각의 페이지에서
크롬에서 5 +를, 엣지에서 4 = 을 입력시 application은 전역이기에 9라는 결과를 보여주지만
session에서 사용하면 브라우저 별로 다른 사용자의 session을 부여해서 오류가 발생된다

28. Session 을 구분하는 방식

Session은 브라우저에서 데이터를 가져올 때 고유한 번호를 가지고 가져와서 해당 번호를 반환, application은 고유한 번호 없이 데이터를 가져와서 고유한 번호를 가지고 반환한다

[메소드 정리]

1. void setAttribute(String name, Object value) : 지정된 이름으로 객체 설정
2. void getAttribute(String name) : 지정한 이름의 객체를 반환
3. void invalidate( ) : 세션에서 사용되는 객체들을 바로 해제
4. void setMaxInactiveInterval(int interval) : 세션 타임아웃을 초 단위로 설정
5. boolean isNew( ) : 세션이 새로 생성되었는지 확인
6. Long getCreationTime( ) : 세션이 시작된 시간 반환
7. Long getLastAccessedTime( ) : 마지막 요청 시간

29. Cookie를 이용해 상태값 유지

Application : 누구나 사용 가능한 공간
Session : 특정한 사람만 사용할 수 있는 공간
Cookie : 자신이 원하는 정보를 보내고 가져올 때 사용

  • Cokkie에 저장하는 값은 문자열만 가능함

[메소드]

[쿠키 저장하기]
1. Cookie cookie = new Cookie("c",String.valueOf(result))
2. response.addCookie(cookie)
result의 값을 문자열로 변화하여 c라는 변수에 대입하여 쿠키에 저장한 후 웹페이지에 전송

[쿠키 읽기]
1. Cookie cookies[ ] = request.getCookies( );
2. String c = " ";
3.
if(cookies != null)
for(Cookie cookie : cookies)
if("c".equals(cookie.getName( ) ) )
c
= cookie.getValue( );
getCookies를 통해서 다수의 데이터를 쿠키 배열에 입력 한 후 c라는 스트링에 데이터를 넣어 확인 후 저장해줌, 쿠키에는 다양한 변수가 있을 수 있기 때문에 데이터를 확인해 줘야한다.

메소드 옵션 정리

1. Cookie변수명.setPath("/") : 모든 경우 사용자에게 전달 셋팅한다, 예를들어 "/"를 "/content/"이면 content라는 url 경로를 포함하는 경우에는 쿠키를 가져온다

31. Cookie의 maxAge 옵션

[메소드 정의]
Valuecookie.setMaxAge(60*60);
위의 메소드의 의미는 Valuecookie를 60초 만큼 60번 즉, 60분동안 저장한다는 의미다
해당 setMaxAge를 설정하지 않는 쿠키는 브라우저가 닫이면 사라진다

[Application]
사용 범위 : 전역 범위에서 사용하는 저장공간
생명 주기 : WAS가 시작해서 종료할 때 까지
저장 위치 : WAS 서버의 메모리

[Session]
사용 범위 : 세션 범위에서 사용하는 저장 공간
생명 주기 : 세션이 시작해서 종료할 때 까지
저장 위치 : WAS 서버의 메모리

[Cookie]
사용 범위 : Web Browser별 지정한 path 범주 공간
생명 주기 : Browser에 전달한 시간부터 만료시간까지
저장 위치 : Web Browser의 메모리 또는 파일

profile
초보 개발자

0개의 댓글