JSP - Cookie / Action tag
이 페이지는 다음에 대한 공부 기록입니다
JAVA(자바), Python(파이썬) 기반의
AI 활용 응용 소프트웨어 개발자 양성 과정
2021.11.10. ~ 2022.05.18.
찾으시는 정보가 있으시다면
주제별reference를 이용하시거나
우측 상단에 있는 검색기능을 이용해주세요
54일차 수업
Cookie
웹브라우저가 보관하는 데이터
브라우저가 웹서버에 요청하면 쿠키와 함께 전송
웹브라우저와 웹서버에서 모두 생성가능
-
웹서버 : jsp cookie 클래스
-
웹브라우저 : js의 cookie 객체
구성
- name, value, age, domain, path
보안
- domain : 쿠키를 생성한 사이트 외의 다른 사이트로 연결할 때는 쿠키를 전송하지 않음, 다른 도메인에서 사용하고자 할 때는 도메인을 지정해줘야함
cookie.setDomain(“.somehost.com”);
-
path : 기본적으로 쿠키를 생성하는 파일을 위치를 기준으로 해당 경로와 하위 경로에서만 쿠키를 전송, 다른 경로에 쿠키를 전달하기 위해서는 지정
-
age : 기본적으로 쿠키는 웹브라우저를 닫으면 자동 삭제한다
<%
<!-- 쿠키 생성 -->
Cookie c = new Cookie(“쿠키이름”, “쿠키값”);
<!-- 한글입력이 깨질 경우 URLEncoder.encode(인코딩대상, 인코딩 타입) method 로 인코딩 방식을 정할 수 있음-->
<!-- 쿠키 속성 지정 -->
c.setMaxAge(1*60*2);
<!-- 초단위로 설정 -->
<!-- 응답으로 쿠키 전송 -->
response.addCookie(c);
<!-- 쿠키 삭제하기 -->
<!-- 1번 방법 -->
<!-- 쿠키 목록을 배열로 불러오고 -->
Cookie[] ck = request.getCookies();
<!-- 불러온 값이 있다면-->
for(int i = 0; ck != null && i < ck.length; i++){
if((ck[i].getName()).equals(“삭제할 쿠키이름”)){
<!-- 대상을 찾고 시간설정을 0으로 바꿔서 응답한다-->
ck[i].setMaxAge(0);
response.addCookie(ck[i]);
}
}
<!-- 2번 방법 -->
Cookie c = new Cookie(“삭제할 쿠키이름”, null);
c.setMaxAge(0);
response.addCookie(c);
%>
Session
웹 컨테이너는 기본적으로 필요한 정보를 저장할 수 있도록 하나의 웹브라우저당 하나의 세션을 생성
-
쿠키가 브라우저에 저장되는 반면, 세션은 서버에 저장
-
쿠키는 String만 저장하는 반면, 세션은 객체 저장
-
사용자 정보를 유지하기 위해 쿠키보다는 세션을 많이 사용
<%
<!-- 변수들이 담긴 클래스(Goods)를 저장할 리스트(glist)를 생성하고 -->
ArrayList<Goods> glist = null;
<!-- 파라미터 값 넘겨받아 변수에 저장해 놓고 -->
<!-- 원하는 session(“cart”)을 가져와서 기존에 있었는지 확인하고-->
Object obj = session.getAttribute(“cart”);
<!-- 없다면 새로운 array객체를 만들어 변수에 저장하고, 있다면 불러온 값을 변수에 저장한다 -->
if(obj == null){
glist = new ArrayList<Goods>();
}else {
glist = (ArrayList<Goods>) obj;
}
<!-- 배열에 클래스를 생성해서 넣어준다 -->
glist.add(new Goods(파라미터를 저장했던 변수들));
<!-- 세션(cart)에 만들어진 클래스를 저장한다 -->
session.setAttribute(“cart”, glist);
<!-- WEB-INF/ web.xml 에서-->
<session-config>
<session-timeout>50</session-timeout>
<session->
%>
액션태그
<!-- 페이지 삽입, 해당 위치에 삽입 -->
<jsp:include page=“파일경로”/>
<!-- @include 와 jsp:include의 차이, 정적과 동적, 현재 페이지로 삽입과 별도의 페이지 요청 -->
<!-- 페이지 이동, 주소는 그대로고 내용만 바꿔줌 -->
<jsp:forward page=“파일경로”/>
<!-- param과 같이 사용하기, 파라미터를 지정할 수 있음-->
<jsp:forward page=“파일경로”>
<jsp:param name=“name값” value=“value값”>
<jsp:forward/>
Bean
데이터를 표현하는 것을 목적으로 하는 자바 클래스
액션 태그 내의 빈이라는 기술을 사용하려면 빈즈의 형태를 가지는 클래스가 존재해야함
필수 조건은 private변수, 기본 생성자, getter와 setter 존재(property 가 Boolean 일 경우 is사용)
변수는 form으로 부터 넘어오는 getParameter(“변수명”)과 동일해야함
필수 조건을 맞추면 JSP 액션 태그가 자동으로 변수들을 매칭 시켜준다
<jsp:useBean id=“빈 변수명” class=“클래스 파일”>
<jsp:setProperty name=“빈 변수명” property=“매칭하고자 하는 파라미터명”>
</jsp:useBean>
<!-- 값 가져오기 -->
<jsp:getProperty property=“해당 변수명(파라미터)” name=“빈 변수명”/>
<!-- 짧아서 getter를 더 자주 씀-->
<%= 빈변수명.getName()%>
Scope
기본 객체 | 범위 | 설명 |
---|---|---|
pageContext | page | 하나의 jsp 페이지 내에서 공유될 값을 저장한다 |
request | request | 한 번의 요청을 처리하는 데 사용되는 모든 jsp 페이지에서 공유될 값을 저장한다 |
session | session | 한 사용자와 관련된 정보를 jsp 들이 공유하기 위해서 사용된다 |
application | application | 모든 사용자와 관련해서 공유할 정보를 저장한다 |
<jsp:useBean id=“bean_name” class=“class_name” scope=“page”>
<!—bean의 기본 값은 page -->