CV 패턴 - 데이터를 View로 출력하기 (jstl 문법 배우기)

bethe·2022년 8월 31일
0

Springboot

목록 보기
25/46

model : 모델

모델링 : 설계를 구현하는 과정

DB에 있는 데이터를 자바세상으로 가져오는 것도 모델링
=> 모델이라 부름 (우리가 아는 req,res를 담는 Model model과 다름)

컨트롤러 : 메서드 요청
컨트롤러는 서비스에 의존적 (서비스의 레퍼런스 주소만 알면 됨)

request -> Controller는 View를 request함 -> 이 때 request에 있는 데이터가 사라짐 -> requestDispatcher로 데이터를 복사? 덮어씌우기 함

즉 우리가 하는 것은 request의 데이터를 view request에 덧씌우는 느낌


데이터를 View로 출력하기

table, Controller만들기

연습용이기 때문에 DAO는 생략하고 table, Controller만 만들었다.

domain/Board 클래스 코드

package site.metacoding.yellow.domain;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@AllArgsConstructor
@NoArgsConstructor
//All만들거면 No도 만드는게 좋음
@Setter
@Getter
public class Board {
	private Integer id;
	private String title;
	private String content;
}

Web/BoardController 클래스 코드

→ 아래의 목차에서 하나씩 작성해볼 것


jstl 문법

1. foreach를 이용해 '데이터 전체보기'

Web/BoardController 클래스 코드

@Controller
public class BoardController {

	@GetMapping("/board")
	//데이터 전체보기이기 때문에 파라미터로 받을 변수가 없으므로 데이터를 담을 Model만 필요함
	public String getBoard(Model model) {
		//DB에 연결을 하지 않았으므로 더미 데이터를 만듦
		List<Board> boardList = new ArrayList<>();
		boardList.add(new Board(1,"스프링1강","컨트롤러 배우기"));
		boardList.add(new Board(2,"스프링2강","템플릿 엔진 배우기"));
		boardList.add(new Board(3,"스프링3강","디비 연결 하기"));
		
		model.addAttribute("boardList", boardList);
		return "board/list";
	}
}

return할 View 경로가 board/list이므로 view에 board폴더를 만들고 list jsp파일을 만든다.

list(jsp 파일) 코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>List page</h1>
<hr/>
<table border="1">
	<tr>
		<th>번호</th>
		<th>제목</th>
		<th>내용</th>
	</tr>
	<c:forEach var="board" items="${boardList}">
	<tr>
		<th>${board.id}</th>
		<th>${board.title}</th>
		<th>${board.content}</th>
	</tr>
	</c:forEach>
</table>
</body>
</html>

jstl 문법을 쓰기 위해서는 태그 라이브러리 별 표준 선언문이 필요하다.
표준 선언문 중 core가 기본 라이브러리이며 우리가 배워볼 여러 함수를 가지고 있다.
👉 jsp파일 선언 태그(맨 위 태그) 밑에
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
를 달아주어야 함수를 사용 가능하다.

<c:함수>
또한 html은 엔터나 스페이스바도 <div>, <br>로 인식하기 때문에
함수태그 안의 내용이 html태그로 인식되지 않고 java 문법으로(java의 일반 띄워쓰기로) 인식되도록 태그 앞에 c:를 붙인다.


<c:foreach> 문법

<c:forEach var="변수명" items="목록 데이터" begin="시작 인덱스" end="종료 인덱스">콘텐츠</c:forEach>
begin과 end는 생략 가능

	<c:forEach var="board" items="${boardList}">
	<tr>
		<th>${board.id}</th>
		<th>${board.title}</th>
		<th>${board.content}</th>
	</tr>
	</c:forEach>

Model의 변수명인 boardList를 받아 board라는 변수명으로 Model
board.id
id변수가 호출되는게 아니라 getter가 호출되는것

  1. 데이터 한 건 뿌리기

4.하이퍼링크
test에 조건을 넣으면 된다
(근데 이름을 왜 이렇게 지었담...)

  1. if문(관리자)
    ${board.id == 2} {}<-자바 코드의 영역

View에는 데이터의 최종 값만 나오게 하는게 좋음
Controller에서 if문을 Model값에 담아 (다른 변수명으로) 그 ${변수명}으로 띄우면된다.

  1. choose when

  2. 템플릿화(함수화) (네비게이션/푸터)

profile
코딩을 배우고 기록합니다. 읽는 사람이 이해하기 쉽게 쓰려고 합니다.

0개의 댓글