본문 바로가기
공부기록/Spring

5월 9일 (2) Spring - 출력

by project100 2023. 5. 9.

3. controller - [Data] -> 페이지(jsp)

백엔드 프로그램에서 처리된 데이터를 화면(jsp)으로 보내는 방법

1) Model 객체 활용

Model 객체 : 데이터를 담아서 옮기는데 사용하는 객체

새로 생성할 필요없이 Controller에 자동으로 들어옴.  데이터 전송이 필요한 메소드는 Model을 받아서 데이터를 삽입하면, 자동으로 DispathcherServlet에 넘어간다. 사용하려면 매개변수로 Model을 선언하면 된다.

스프링 내부에서 옮기는 엘레베이터 같은 이동 수단

 

보낼 데이터 -> Model

보낼 페이지 -> String

 

데이터를 추가하는 메소드 : addAttribute("식별자", 데이터)

public class HomeController {
@GetMapping("/")
public String home(Model model) {
log.info("home()");
model.addAttribute("data", "서버에서 보낸 문자열");
model.addAttribute("number", 100);
return "index";
}

 

 

2) ModelAndView 객체 활용

controller -> dispatchsevlet

Model과 페이지 지정 문자열을 합쳐서 처리하는 객체, ModelAndView 객체를 생성하여 데이터와 페이지를 함께 저장하고 보내는 방식. 

데이터를 추가하는 메소드 : addObject("식별자", 데이터)

페이지를 지정하는 메소드 : setViewName("jsp파일명")

 

 @GetMapping("output2")
    // String 자리에 ModelAndView를 쓰고 파라미터 자리에 아무것도 적지 않는다.
    public ModelAndView output2(){
        // 박스를 만들어서 담아서 보냄. 가는 곳도 지정
        ModelAndView mv = new ModelAndView();
        String m2 = "ModelAndView로 보내는 메시지";
        mv.addObject("msg", m2);

        MemberDto member2 = new MemberDto();
        member2.setId("navi");
        member2.setName("윤라나");
        member2.setAge(24);
        mv.addObject("mem", member2);//데이터 삽입

        MemberDto member3 = new MemberDto();
        member3.setId("ice");
        member3.setName("강하름");
        member3.setAge(16);
        mv.addObject("me", member3);

        mv.setViewName("output");//jsp 페이지 지정

        return mv;
    }

 

JSP에서 데이터 출력 - EL(Expression Language)

JSP에서 사용하는 출력용 문법

형식) ${변수나 연산식} 

HTML 태그와 병행하여 사용 가능

<p>첫번째 데이터 : ${data}</p>
<p>두번째 데이터 : ${number + 50}</p>
    
<h1>출력 페이지</h1>
<p>메시지 : ${msg}</p>
<%--하나의 변수는 그냥 출력 가능,
객체는 덩어리로 들어오기 때문에 하나씩 꺼내서 출력해야 한다.--%>
<h2>회원 정보</h2>
<p>ID : ${mem.id}</p>
<p>NAME : ${mem.name}</p>
<p>AEG : ${mem.age}</p>

 

JSTL(Jsp Standard Tag Library)

간단한 프로그램 로직 구현(변수 활용, 제어문 등)

다른 JSP 페이지를 포함

날짜, 시간, 숫자의 형식 지정

문자열 처리 함수 제공

 

JSTL 라이브러리 필요(dependency) - 1.2 버전

라이브러리 구성

1) 코어(core) : 접두어는 'c'. 변수, 제어문 등 포함

uri - http://java/sun.com/jsp/jstl/core

2) 포맷(format) : 접두어는 'fmt'. 출력형식 지정

uri - http://java/sun.com/jsp/jstl/fmt

3) 함수(functiom) : 접두어는 'fu'. 기타...

uri - http://java/sun.com/jsp/jstl/funciotns

 

페이지에 라이브러리를 포함시키는 방법

<%@ tablib prefix="c" uri="http://java......%>

jsp 페이지 윗줄에 위와 같이 작성

 


계산기 페이지를 작성하세요.(정수 4칙 연산)
입력 페이지 -> controller -> 출력 페이지