좁고 얕은 블로그
Spring - DispatcherServlet 이용하여 값 출력하기, lombok 본문

이번엔 배웠던 것 토대로 실제로 Board만들어볼것

com.smhrd.domain패키지 생성하여 클래스 만들어준다.


기존 자바에서는 이대로 생성자와 getter/setter 생성했으나, 이번엔 그냥 이대로 저장하고 종료한다;;
Lombok 라이브러리를 사용해볼것!

- 라이브러리 설치


C:\eGovFrame-3.10.0\bin\eclipse
이녀석의 주소 필요
Project Lombok
projectlombok.org
위의 링크에서 Lombok 다운로드 해준다.

C:\Users\smhrd\Downloads
다운로드 받았던 경로의 주소
명령프롬프트 실행해준다.

명령프롬프트에서 jar파일 실행하기 위해 경로 찾아가준다.
(우클릭 하면 붙여넣기, tab누르면 자동완성)


이 안에있는 Specify locaion을 눌러
내pc - c드라이브 - 사용자 - smhrd - 전자정부폴더 - bin - eclipse

이클립스 실행파일 클릭 - select

Install/Update

그럼 이렇게 실행파일 뜬다.

전자정부 폴더에서 위의 경로 타고 들어가보면, 요녀석이 생겨있다.
- 라이브러리 추가

다시 전자정부프레임워크 실행해서, pom.xml에 코드 추가하여 lombok라이브러리 써보자
위의 maven repository에서 Project Lombok을 검색한다.


버전 정보 확인한 후 코드 복사해서 추가해준다.

코드 추가후 저장해주면 자동으로 라이브러리 추가된 모습
- lombok 이용하여 생성자, 메서드 만들기

이번엔 클래스 하위목록 보자.
저 조그만 빨강 네모박스가 필드라는 뜻!
lombok도 마찬가지로

어노테이션 붙여서 import해준다.

(초록동그라미 : 메서드 / 빨간네모 : 필드)
와우;; 기본적인 메서드(getter, setter, toString등) 전부 자동생성해준다.

C는 생성자라는 뜻(현재 기본생성자만 존재함)
필드 전체를 포함하는 생성자 하나 더 만들고싶다면?

어노테이션 더 작성했더니, 생성자가 자동으로 추가되었다.
(어노테이션 이용하여 원하는 요소 가져올 수 있음)
- AllArgsConstructor : 모든 필드 생성자
- NoArgsConstructor : 기본생성자

- RequireArgsConstructor : 필요한 필드만 요소로 갖는 생성자
- NonNull : 생성자에 넣을 요소
각각 어노테이션(@)으로 지정해줄 수 있다.
주의할점
1. VO의 필드(변수)이름==Table의 컬럼명
2. 반드시 기본생성자는 있어야한다.
- 객체바인딩
다시 컨트롤러로 돌아와서,

생성자 두개에 값을 임시로 지정하여 Board타입 리스트에 담아준다.

(util로 import해주기)

request영역에 값을 저장하는 객체바인딩 해주기

이렇게 매개변수로 작성해주면 필요한 request 등 객체를 받아올 수 있다.
- 가져온 값 view에서 출력
이렇게 값을 받아왔으니 jsp에서 출력할것

이 값들을 출력할예정

우선 request에서 값을 가져온다.
잘 가져왔는지 확인하기 위해

out객체로 화면에 리스트의 size를 출력해보자!
(현재 두개의 값 들어가있으므로 2가 출력되어야 한다)
- 실행
실행은 항상

서버에서 실행 후

경로를 작성해준다.

성공!

이제 반복문 for each문을 사용하여 테이블 출력해보자
이렇게 스크립트릿으로 출력하는 방법도 있고,

이렇게 jstl로 출력할 수도 있음

이제 반복문 안에 테이블태그 넣어주고

표현식을 이용하여 getter로 board의 값들을 꺼내온다.
<%@page import="com.smhrd.domain.Board"%>
<%@page import="java.util.List"%>
<%@ 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>
<%-- list를 가져와서 출력 --%>
<%
//request영역에 저장된 list 꺼내기
List<Board> list = (List<Board>)request.getAttribute("list");
out.print(list.size());
%>
<table border="1">
<tr>
<td>글번호</td>
<td>제목</td>
<td>작성자</td>
<td>날짜</td>
<td>조회수</td>
</tr>
<%for( Board board : list){ %>
<tr>
<td><%= board.getIdx()%></td>
<td><%= board.getTitle()%></td>
<td><%= board.getWriter()%></td>
<td><%= board.getIndate()%></td>
<td><%= board.getCount()%></td>
</tr>
<%} %>
</table>
</body>
</html>


**request객체도 의외로 덩치가 큰녀석이므로 사용을 지양해보자



request영역에 list 저장해주는 model 객체
request와 문법이 똑같다.
model은 request의 다이어트 버전!
==> 필요없는 것들을 다 버리고 값을 저장해주는 역할만 한다!
==> 꺼낼 때는 request로 꺼내야 함
- 테이블 꾸미기
이제 이 허접하게 생긴 테이블을 부트스트랩으로 꾸며보자
https://www.w3schools.com/bootstrap/
Bootstrap 3 Tutorial
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com

Panels를 이용하여 하나하나 나눠주기

필욯나 경우 이렇게 틀을 이용해서 만들 수도 있다.


views 폴더에 base.jsp 파일 생성
지시자 외에 전부 삭제한 후, 부트스트랩에서 가져온 코드 복붙해준다.
처음부터 html만드려면 공간을 먼저 구분지어야하는데,

코드 필요한만큼 수정하고 전체 복붙해온다.
<%@page import="com.smhrd.domain.Board"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script
src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h2>SpringMVC01</h2>
<div class="panel panel-default">
<div class="panel-heading">Panel Heading</div>
<div class="panel-body">
<%-- list를 가져와서 출력 --%>
<%
//request영역에 저장된 list 꺼내기
List<Board> list = (List<Board>)request.getAttribute("list");
%>
<table class="table table-bordered table-hover">
<tr>
<td>글번호</td>
<td>제목</td>
<td>작성자</td>
<td>날짜</td>
<td>조회수</td>
</tr>
<%for( Board board : list){ %>
<tr>
<td><%= board.getIdx()%></td>
<td><%= board.getTitle()%></td>
<td><%= board.getWriter()%></td>
<td><%= board.getIndate()%></td>
<td><%= board.getCount()%></td>
</tr>
<%} %>
</table>
</div>
<div class="panel-footer">빅데이터 12차 김희연</div>
</div>
</div>
</body>
</html>

이렇게 보기좋은 테이블까지 완성되었다.
'Spring' 카테고리의 다른 글
| Spring - mysql로 db연동(2) (0) | 2022.06.27 |
|---|---|
| Spring - mysql로 db연동(1) (0) | 2022.06.22 |
| Spring - Front Controller (0) | 2022.06.21 |
| Spring - MVC패턴 (0) | 2022.06.21 |
| Spring - 설치, 기본설정 (0) | 2022.06.20 |