ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • application scope
    웹페이지 제작을 위한 스프링공부 2020. 5. 8. 16:39

     

    요청이 발생해서 응답결과가 전달될때 까지의 범위:requestscope

    브라우저에 의해 최초의 요청이 발생되고 브라우저가 종료될때까지의 범위:sessionscope

    서버가 가동될 때 부터 서버가 종료되는 시점까지의 범위:applicationscope

     

    controller

    package kr.co.softcampus.controller;
    
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.SessionAttribute;
    import org.springframework.web.bind.annotation.SessionAttributes;
    
    import kr.co.softcampus.beans.DataBean1;
    
    
    
    
    
    
    @Controller
    
    public class TestController {
    	
    	
    	@GetMapping("/test1")
    	public String test1(HttpServletRequest request) {//request 객체를 주입받은후 servlet context를 추출후 application 영역에 저장
    		
    		ServletContext applicaion = request.getServletContext();//ServletContext영역에 저장을 하면 모든 브라우저에 관계없이 전부다 똑같은 메모리 공간을 사용
    		applicaion.setAttribute("data1", "문자열1");
    		return "test1";
    	}
    	
    	@GetMapping("/result1")
    	public String result1(HttpServletRequest request) {
    		ServletContext applicaion = request.getServletContext();
    		String data1=(String)applicaion.getAttribute("data1");
    		return "result1";
    	}
    	
    	
    	
    	
    }
    
    
    

     

    jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<a href='test1'>test1</a><br/>
    	<a href='result1'>result1</a><br/>
    	
    	
    </body>
    </html>

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h1>저장완료</h1>
    </body>
    </html>

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h1>result</h1>
    	<h3>data1 : ${applicationScope.data1 }</h3>
    </body>
    </html>

     

    출력

    크롬과 인터넷익스플로러 두개의 브라우저에 실행했지만 둘다 데이터 값이 잘 출력된다.

    서버종료시 까짖 유효하기때문에 브라우저에 관계없이 데이터가 유지된다

     

    ServletContext

    HttpServletRequest 객체로 부터 추출이 가능합니다.

    Controller에서 주입 받을 수 있습니다.

    하지만 매개변수로 주입받을 수 없음 ->autowired를 활용하여 타입을 통한 주입 사용

     

    package kr.co.softcampus.controller;
    
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.SessionAttribute;
    import org.springframework.web.bind.annotation.SessionAttributes;
    
    import kr.co.softcampus.beans.DataBean1;
    
    
    
    
    
    
    @Controller
    
    public class TestController {
    	@Autowired
    	ServletContext application;
    	
    	@GetMapping("/test1")
    	//public String test1(HttpServletRequest request) {//request 객체를 주입받은후 servlet context를 추출후 application 영역에 저장
    	public String test1() {
    		//ServletContext application = request.getServletContext();//ServletContext영역에 저장을 하면 모든 브라우저에 관계없이 전부다 똑같은 메모리 공간을 사용
    		application.setAttribute("data1", "문자열1");
    		return "test1";
    	}
    	
    	@GetMapping("/result1")
    	//public String result1(HttpServletRequest request) {
    	public String result1() {
    		//ServletContext applicaion = request.getServletContext();
    		String data1=(String)application.getAttribute("data1");
    		return "result1";
    	}
    	
    	
    	
    	
    }
    

     

    bean데이터 application영역에 주입시키기

    package kr.co.softcampus.beans;
    
    public class DataBean1 {
    	public String data1;
    	public String data2;
    	public String getData1() {
    		return data1;
    	}
    	public void setData1(String data1) {
    		this.data1 = data1;
    	}
    	public String getData2() {
    		return data2;
    	}
    	public void setData2(String data2) {
    		this.data2 = data2;
    	}
    	
    }
    

     

    package kr.co.softcampus.controller;
    
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.SessionAttribute;
    import org.springframework.web.bind.annotation.SessionAttributes;
    
    import kr.co.softcampus.beans.DataBean1;
    
    
    
    
    
    
    @Controller
    
    public class TestController {
    	@Autowired
    	ServletContext application;
    	
    	
    	@GetMapping("/test1")
    	//public String test1(HttpServletRequest request) {//request 객체를 주입받은후 servlet context를 추출후 application 영역에 저장
    	public String test1(DataBean1 bean1) {
    		//ServletContext application = request.getServletContext();//ServletContext영역에 저장을 하면 모든 브라우저에 관계없이 전부다 똑같은 메모리 공간을 사용
    		application.setAttribute("data1", "문자열1");
    		 bean1.setData1("data1");
    		 bean1.setData2("data2");
    		
    		 application.setAttribute("bean1", bean1);
    		return "test1";
    	}
    	
    	@GetMapping("/result1")
    	//public String result1(HttpServletRequest request) {
    	public String result1() {
    		//ServletContext applicaion = request.getServletContext();
    		
    		String data1=(String)application.getAttribute("data1");
    		
    		DataBean1 bean1=(DataBean1)application.getAttribute("bean1");
    		
    		return "result1";
    	}
    	
    	
    }
    
    
    
    
    

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h1>result</h1>
    	<h3>data1 : ${applicationScope.data1 }</h3>
    	
    	<hr/>
    	<h3>bean1.data1:${applicationScope.bean1.data1 }</h3>
    	<h3>bean1.data2:${applicationScope.bean1.data2 }</h3>
    </body>
    </html>

     

    결과창

     

    '웹페이지 제작을 위한 스프링공부' 카테고리의 다른 글

    message  (0) 2020.05.09
    properties  (0) 2020.05.09
    session scope  (0) 2020.05.08
    Session  (0) 2020.05.07
    RequestScope 빈 주입  (0) 2020.05.06
Designed by Tistory.