728x90

SessionScope

  • 브라우저가 최초의 요청을 발생시키고 브라우저를 닫을 때 까지
  • SessionScope에서는 session영역에 저장되어 있는 데이터나 객체를 자유롭게 사용 가능

 

index

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<body>
<!--session : 브라우저당 서버에 요청을 하게 되면 브라우저당 하나씩 메모리 공간을 서버에서 할당해줌
              요청이 새롭게 발생해도 같은 메모리 공간을 사용하게 됌 -->
<!-- @SessionScope : 최초의 요청 ~ 브라우저 닫을 때 까지 -->

<a href="t1">test1</a><br>
<a href="s1">spring1</a><br>


</body>
</html>

Data1

package kr.bit.beans;

public class Data {

    private String str1;
    private String str2;

    public String getStr1() {
        return str1;
    }

    public void setStr1(String str1) {
        this.str1 = str1;
    }

    public String getStr2() {
        return str2;
    }

    public void setStr2(String str2) {
        this.str2 = str2;
    }
}

Data2

package kr.bit.beans;

public class Data2 {

    private String str3;
    private String str4;

    public String getStr3() {
        return str3;
    }

    public void setStr3(String str3) {
        this.str3 = str3;
    }

    public String getStr4() {
        return str4;
    }

    public void setStr4(String str4) {
        this.str4 = str4;
    }
}

Data3

package kr.bit.beans;

import org.springframework.stereotype.Component;
import org.springframework.web.context.annotation.SessionScope;

@Component
@SessionScope
public class Data3 {

    private String str5;
    private String str6;

    public String getStr5() {
        return str5;
    }

    public void setStr5(String str5) {
        this.str5 = str5;
    }

    public String getStr6() {
        return str6;
    }

    public void setStr6(String str6) {
        this.str6 = str6;
    }
}

Controller

package kr.bit.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import kr.bit.beans.Data;
import kr.bit.beans.Data2;
import kr.bit.beans.Data3;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;


@Controller
public class SpringController {

    @Autowired
    Data data1; // RootAppContext에 빈으로 등록한 Data주소값을 자동주입받고있음

    @Resource(name="session2")
    Data2 data2;

    @Autowired
    Data3 data3;

    @GetMapping("/t1")
    public String t1() {
        data1.setStr1("아무거나");
        data1.setStr2("넣으시면");

        data2.setStr3("구분이");
        data2.setStr4("잘안가요");

        data3.setStr5("제가한번");
        data3.setStr6("바꾸겠습니다"); // 값 주입한 객체들이 SesseionScope임 =>t1 경로 매핑될 때 Bean 객체 주입됨

        return "test1";
    }
    @GetMapping("/s1")
    public String s1(Model model){ // 세션 객체들 data1,2,3을 모델객체에 담는다
        model.addAttribute("data1", data1);
        model.addAttribute("data2", data2);
        model.addAttribute("data3", data3);

        return "spring1";
    }

}

test.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

</body>
</html>

spring1.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${requestScope.data1.str1}
${requestScope.data1.str2}

${requestScope.data2.str3}
${requestScope.data2.str4}

${requestScope.data3.str5}
${requestScope.data3.str6}
</body>
</html>
728x90

+ Recent posts