Today I Learned
[JSP] 페이지출력하는 방법, Cookie와 Session 본문
+자바스크립트도 사용 가능
- 자바스크립트의 변수에 값 할당시 double qoute(“”)로 감싸줘야함 : 이유는 쿼터로 감싸져 있지 않으면 에러가 발생하는데 문자열로 인식하지 못하고, 변수나 숫자나 boolean 등 다른 걸로 인식 (java,java script 등의 언어에 모두 해당)
- 소스 확인 가능해서 보안상의 문제로 잘 사용하지 않음
- h는 자바 변수니까 자바출력문 <%= %> 써주기
- 쿼터로 감싸주기 : 문자열로 인식하도록
- join메서드 : 배열에서 하나하나 꺼내옴, ','로 구분하겠다.
페이지 출력을 하는 방법
1.response(내장객체) : 응답전용 객체
- 요청에 대해 응답 페이지를 전달해주는 객체
- 특정 페이지로 이동하는 것도 가능
- 페이지를 만드는(write) 객체
- 페이지 출력(그리기) 를 할 수 있음
- response는 응답전용 이기 때문에 가장 빠름
<% response.getWriter().write("<p>세번째, response객체를 이용하는 방법</p>"); %>
2. scriptlet 사용
<%="<p>첫번째 스크립틀릿 출력문을 사용하는 방법</p>" %>
3. out 객체 사용
- response로 부터 나온 객체로 내장객체 이다.
- response 로 부터 한번 추출한 객체를 사용하므로 가장 느리다.
<% out.print("<p>두번째, out객체를 이용하는 방법</p>"); %>
*주의할 점*
- 페이지 출력하는 방법을 혼용해서 썼을 때 순서가 바뀔 수 있어서 출력문을 사용할 때 하나만 쭉 쓰는게 좋다.
- 간편하고 간결한 out객체를 많이 씀
- Out객체 속도가 가장느림 성능 문제가아니라 그냥 제일 순서가 늦게 찍힘
sendRedirect()
- 특정페이지로 튕겨보낼 때 / 특정한 페이지를 거쳐갈 때 /
- Response는 sendredirect를 가장 많이 씀
- Sendredirect 메서드는 한번밖에 못씀. 조건당 한문장만 : 예를들어 두번쓰게 된다고하면 이페이지로 이동하고 이페이지로 이동해! 라고 하는 것은 어디로 가란말인거야 이 경우엔 이 페이지로 가! 이렇게 하나만 지정해줘야지
Cookie & Session
: 웹에서 만들어지는 특정한 데이터를 저장하고 싶은 경우 Cookie & Session이라는 저장객체를 사용
(다른페이지에서도 데이터가 공유 되야함)
Cookie & Session의 차이점
: 저장 위치가 달라 사용법과 보안수준이 다름
- Cookie
- client(사용자 pc)에 저장
- 클라이언트(pc)에 저장되므로 request로 가져오고 response로 저장한다.(<-사용자의 pc에 저장되기 위해 )
- 브라우저를 닫거나 서비스를 종료해도 정보가 남음
- 공공장소에서 사용하는 pc의 경우 쿠키에 저장된 내용을 누구든지 사용 가능하게됨
- Java script 로도 제어 가능 - 보안 취약
- 보안에 취약 (브라우저에서 쿠키내용 확인 가능함 - 그래서 이름을 알수없게 설정함)
- 팝업, 국제화 설정 시 한국사이트인지 영문사이트인지 등 - 보안상에 문제가 없는 경우를 저장한다
- 쿠키는 기본적으로 (String,String 형태) 이다. 저장할 수 있는게 한계가 있다. (key,value)
- 쿠키는 보통 한 개 이상이기 때문에 request로 가져올 때 배열로 받는다.
- 브라우저 끼리 저장된 내용은 공유되지 않는다.(크롬 쿠키에 저장하면 다른 브라우저에서는 해당안하는거지)
쿠키 메서드
이름 : getName()
값 : getValue()
만료시간확인 :getMaxAge()
request.getCookies() : 쿠키를 불러올 때. 한개가 아니기 때문에 배열로 받음
예시는 코드를 보기! 05_Cookie - exam 폴더
-Session (로그인을 생각해보자)
- server 에 저장
- 서버를 껐다 켜면 없어짐. 브라우저가바뀌어도 유지가 안됨 브라우저 껐다 키면 남아있지 않음
- 즉 저장되는 영역이 쿠키보다 좁다 : 쿠키는 껐다 켜도 저장이 되어있음(뭘?서버를?)
- Server side program 으로만 제어 가능
- 보안성 우수
- cookie보다 다루기 편함
- 많은 세션에 저장하면 메모리에 문제 > 주요 정보만 저장
- Session은 (String, object) : Value 에 다들어감 클래스 배열 map 등등 객체타입 : 쿠키보다 활용도 좋음
Session을 사용하는 이유
- 보안성이 좋음
- 쿠키보다 사용이 쉬움
세션 사용시 유효기간 설정 이유
1.메모리를 차지하기 때문에 계속 들고있는 것은 안좋다
2. 보안상 문제로(은행어플)
세션 메서드
session. setAttribute(String, Object); : 세션을 저장
session.getAttribute(); : 가져올 때
session.getId() : 세션 아이디 확인 (세션이 만들어지면 이름이 생김)
session.setMaxInactiveInterval(n); : 유효기간 설정 / 설정안할 경우 기본값 30분
session.getMaxInactiveInterval(); : 세션 만료시간 확인
session.removeAttribute(String); : 그 key에 해당하는 값을 삭제 : 세션에 특정한 속성만 삭제하고 싶을 때
- session.invalidate(); : 세션을 초기화(세션 객체를 아예 지웠다가 다시 만든다.)
(세션 초기화는 잘 하지 않음
세션 자체를 없애버리는 거라서 모든게 초기화되기 때문에 조심해야함 -> 세션 아이디가 바뀜
브라우저를 닫으면 로그인상태가 계속 쭉 저장되는게 아니고 로그아웃되기때문에 초기화하는 경우는 드뭄 )
<에러>
- js나 프론트엔트 에러는 element console에서 확인
- nullpointexception 은 값이 안왔다는/없다는 뜻 / 폼에서 값을 입력안한거지
- 서버오류(500) : sts 에서 서버다루니까 sts콘솔창 확인하기 - 파란색글씨 찾아보기
- 404 : 페이지 못찾음 : 페이지명 확인하기
*form 태그 method속성의 Get 방식과 post방식의 차이
Post : 파라메터값이 보내는 데이터 크기 제한이 없음 속도느림 주소창에? url에 노출안됨 - 보안상 좋음
Get : 보내는 데이터가 한정적, 입력된 내용이 주소창에 노출 - 보안상안좋음
'JSP' 카테고리의 다른 글
[Jsp] Scope, action tag, Model1과 Model2, El tag, JSTL (0) | 2022.12.06 |
---|---|
JSP개념,Tomcat, Scriptlet (0) | 2022.05.15 |