[application]

 

웹 어플리케이션당 1개의 application 객체가 생성 됨.

application 영역에 저장된 속성은 모든 jsp페이지(서블릿)에서 공유한다.

링크로 페이지를 이동하나 리다이렉트/포워드로 이동하나 모든 jsp페이지는 하나의 application 영역안에 있기 때문!

서버 종료 시 저장된 속성이 소멸됨

 

총 페이지 2개 필요!

1.application객체를 저장 할 영역

2저장 한 결과물 출력할 영역

 

1.application 객체를 저장해 보자

  ApplicationScopeIndex.jsp

 <%
   //저장할 객체 생성
    MemberDTO first = new MemberDTO("KIM","1234","김길동","20");
	MemberDTO second = new MemberDTO("LEE","5678","이길동","10");
	MemberDTO third = new MemberDTO("PARK","9999","박길동","30");
    
    //리스트계열 컬렉션에 객체 저장 
   List<MemberDTO> list = Arrays.asList(first,second,third);
   
    //맵계열 객체 저장
    Map<String,MemberDTO> map = new HashMap<>();
    map.put("first",first);
    map.put("second",second);
    map.put("thurd",third);
    
    //application 영역에 컬렉션들 저장 (속성이름,속성값) 이렇게 저장하는 군 !!!
    application.setAttribute("list",list);
    application.setAttribute("map",map);
  %>
/*application 객체는 어떻게 이동을 하든 속성들이 사라지지 않는걸 보여주기 위해서
클릭으로 포워드방식으로 리다이렉트로 이동해 볼 것임 !
자동이동 일 때 절대경로로 지정 시 포워드방식은 컨텍스트 루트 제외
 리다이렉트 방식은 컨텍스트 루트 반드시 포함해야 한다
 단,server.xml에서 Context태그의 path속성을 빈문자열로 지정 시에는 신경 안써도 된다.  */

//1. 사용자 클릭으로 페이지 이동
 <a href="ApplicationScopeResult.jsp">클릭하세요</a>
 
 //2.포워드방식 자동이동
 <% request.getRequestDispatcher("/builtinObjectScope04/ApplicationScopeResult.jsp"); %>
 
 //3.리다이렉트방식으로 자동이동
 <% response.sendRedirect(request.getContextPath()+"/builtinObjectScope04/ApplicationScopeResult.jsp"); %>

 

 

2. 저장한 객체들 뿌려보쟈  

ApplicationScopeResult.jsp

둘다 항 변환 해야하넴... 

//1.리스트 계열 컬렉션
<%
	List<MemberDTO> list=(List<MemberDTO>)application.getAttribute("list");
	for(MemberDTO member : list){
%>
	   <li><%=member %></li>
<%   }
%>

//2.맵 계열 컬렉션
 <% 
	 Map<String,MemberDTO> map =(Map<String,MemberDTO>)application.getAttribute("map");
	 Set<String> keys=map.keySet();
	 for(String key:keys){
%>
	    <li><%=map.get(key) %></li>		 // 키값으로 값 꺼내기!!	  
<%   }
%>

클릭으로 이동 시 모두 출력 & url 이동한 페이지
포워드 방식으로 자동페이지 이동할 때 url은 처음 페이지 주소 !
리다이렉트방식으로 자동이동 시 url은 이동한 페이지 주소 !

 

+ Recent posts