ex07.JSP

바보·2023년 5월 18일

JSP

목록 보기
13/18


pageSope

: JSP의 4! (네가지) 내장객체를 의미한다

  • Attribute라는 데이터를 저장할 수 있는 공간을 가지고 있다
    각각 웹 상에서 존재할 수 있는 수명이 다르다
<ul>
	<li>1. pageContext : 현재 페이지에서만 유지되는 객체</li>
	<li>2. request : 현재 페이지에서만 유지되는 객체., forward시 이동해도 유지</li>
  	<li>3. session : 웹 브라우저가 종료될떄까지 유지되는 객체</li>
    <li>4. application : 웹 서버가 종료될때까지 유지되는 객체</li>
</ul>



  • pageSope.jsp
<%@page import="복습Quiz/beans.Account"%>
<%
  Account[] 는 이전의 Quiz에서 만든것을
  벨로그 주인의 '힘' ! 으로 어떻게 땡겨와서
  쓰는것임. 만들어진 내용은 뒤에 복습,Quiz를 참고
  
-------------------------------------------------------  
  
	Account hong = new Account("hong", "1234");
	Account kim = new Account("kim", "jinho");
	Account lee = new Account("lee", "lee12");
	Account park = new Account("park", "234junho");

------------------------------------------------------- 
  
	※ Attribute
	: 개발자가 필요에 따라서 값을 저장하고 꺼내쓰는 공간
    
    데이터를 저장하기 위해서 변수를 쓰는데
    변수는 이 페이지에서만 사용가능한 단점을
    보완하기 위해 Attribute를 사용한다
  	
  
  
  
값을 저장하기 위해서
겟과 셋을 사용한다

void setAttribute(String name, Object value)

- name은 저장하고 꺼내 쓸 이름
- value는 실제 저아할 데이터
- Object로 업캐스팅해서 받는다(= 모든 객체를 다 받을 수 있다)
업캐스팅의 단점 : 자식 클래스, 원래 클래스를 못 쓰는 것
// 그래서 다운 캐스팅을 해줘야 쓸 수 있음


pageContext.setAttribute("hong", hong);
request.setAttribute("kim", kim);
session.setAttribute("lee", lee);
application.setAttribute("park", park);






Object getAttribute(Stringname)
- 저장했을때 이름을 제시하면 value를 반환한다
- Object로 반환하기 때문에 원래 타입으로 다운캐스팅을 수행한다
- 없는 이름을 제시하면 null을 반환한다

                             +

원래는 Account pc = pageContext.getAttribute("hong"); 을 작성하지만
에러가 뜸 // 이유는 업 캐스팅 되어있어서


↓ 다운 캐스팅  (Account) 를 붙여서 함


Account pc = (Account) pageContext.getAttribute("hong");
Account rq = (Account) request.getAttribute("kim");
Account ss = (Account) session.getAttribute("lee");
Account ap = (Account) application.getAttribute("park");
%>
  

  
  
<ul>
	<li>pageContext : <%=pc.getUserid() %>, <%=pc.getUserpw() %></li>
	<li>request : <%=rq.getUserid() %>, <%=rq.getUserid() %></li>
	<li>session : <%ss.getUserid() %>, <%=ss.getUserpw() %></li>
	<li>application : <%=ap.getUserid() %>, <%=ap.getUserpw() %></li>
</ul>

<p>
	<a href="pageSope_result.jsp">
    	<button>이동</button>
    </a>
</p>



<form>
	<input name="forward" type="hidden" value="yes">
    <button>포워드</button>
</form>

<%
	String forward = request.getParameter("forward");

	// 포워드 버튼을 누르면 yes라는 값이 발생하고 포워드를 수행하게 한다
	if ("yes".equals(forward)) {
    	RequestDispatcjer rd;
      	rd = request.getRequestDispatcher("pageSope_result.jsp");
      
      	rd.forward(request, response); 
    	}
%>



  • pageSope_result.jsp
<%
  Object getAttribute(String name)
- 저장했을때 이름을 제시하면 value를 반환한다
- Object로 반환하기 때문에 원래타입으로 다운캐스팅을 수행한다
  
	Account pc = (Account) pageContext.getAttribute("hong");
	Account rq = (Account) request.getAttribute("kim");
	Account ss = (Account) session.getAttribute("lee");
	Account ap = (Account) application.getAttribute("park");

// ※ 객체가 없으면 nullpointer 예외 발생
if (pc == null) { pc = new Account(); }
if (rq == null) { rq = new Account(); }
if (ss == null) { ss = new Account(); }
if (ap == null) { ap = new Account(); }
%>

  
<h1>Attribute 결과</h1>
<hr>
  
<h4>어떤 객체들이 유지되는지 확인~<h4>
      
<ul>
	<li>pageContext : <%=pc.getUserid() %>, <%=pc.getUserpw() %></li>
	<li>request : <%=rq.getUserid() %>, <%=rq.getUserpw() %></li>
	<li>session : <%=ss.getUserid() %>, <%=ss.getUserpw() %></li>
	<li>application : <%=ap.getUserid() %>, <%=ap.getUserpw() %></li>
</ul>

<a href="pageSope.jsp">
	<button></button>
</a>      
</ul> 






  • 페이지를 이동 할 때 어떤 정보가 남는지 확인
    Attribute

Attribute




이동 눌렀을 때




포워드 눌렀을 때



  • 후기

어려운거 3대장
Attribute, cookie, session
다음엔 세션과 쿠키인데
세션을 많이쓴다고함 ( 서버에 저장 )
쿠키는 클라이언트에게 심어주는 내용같음

몇번봐도 이해가 안되는건 왜일까..
바보는 또 고민에 빠지고...
다른 강의를 유튭에서 들어봐야겠다

유튭 강의들을 list

1.forward
2.RequestDispatcher
3.cookie
4.Attribute
5.누나의HTML강의

위에 것들이 다 라이브러리에서 지원되는 함수라면
get으로 어떻게 사용하고
그걸 내가 설정한 userid와 userpw에 어떻게
적용시키고 변수를 재지급? 하는지를 정확하게 모르겠음


내...무습다...

code쓰는거 다른 벨로그에서 쓰는데 이뻐보이길래
배웠던 F12를 활용해서 슈슈슉 퍼가요~♡ 했음

profile
바보는 타이핑으로 공부하자

0개의 댓글