DeseoDeSeo
[Spring] SpringMVC01 실습01 본문
- Spring Legacy Project 생성 " SpringMVC01 "
pom.xml
dependecies 안에 dependency태그 부분을 없애면 'Maven Dependencies'에서 라이브러리가 사라지고 ,
라이브러리를 추가 하고싶으면 이 부분에 추가 하면 된다.
https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.24
여기서 가져옴. ( Lombok )
boardList.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>
<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.4/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>Spring MVC01</h2>
<div class="panel panel-default">
<div class="panel-heading">Board</div>
<div class="panel-body">
<table class="table table-bordered table-hover">
<!-- tr class = success , info , danger, warning, active -->
<tr class="danger">
<td>번호</td>
<td>제목</td>
<td>작성자</td>
<td>작성일</td>
<td>조회수</td>
</tr>
<!-- model 안에 있는 list를 jstl을 활용하여 출력 -->
<c:forEach items ="${list}" var ="vo" varStatus="i">
<tr>
<td> ${i.count}</td>
<td> ${vo.title}</td>
<td> ${vo.content}</td>
<td> ${vo.writer}</td>
<td> ${vo.indate}</td>
<td> ${vo.count}</td>
</tr>
</c:forEach>
</table>
</div>
<div class="panel-footer">스프링게시판-PBK</div>
</div>
</div>
</body>
</html>
https://www.w3schools.com/bootstrap/bootstrap_panels.asp
여기서 부트스트랩 가져옴.
Board.java
package kr.spring.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
// 오른쪽에 outline에 보임
// @ data 위를 추가하면 getter/setter 다 추가됨.
// @ allargeconstructor 위에 추가하면 생성자 다 추가됨.
// @ noargeconstructor 위에 추가하면 기본생성자 다 추가됨.
public class Board {
//이게 dto역할을 함. 이름에는 dto 안 들어감.
private int idx; // 번호
private String title; //제목
private String content; //내용
private String writer; //작성자
private String indate; //작성일
private int count; //조회수
}
BoardController.java
package kr.spring.controller;
import java.util.ArrayList;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import kr.spring.entity.Board;
@Controller // 현재 클래스를 핸들러맵핑이 찾기 위해 컨트롤러로 등록하는 부분.
public class BoardController {
/*
* @RequestMapping("/") // 요청url로 들어왔을 때 아래 기능을 수행하겠다. public String home() {
* System.out.println("홈 기능 수행"); return "boardList"; }
*/
@RequestMapping("/boardList.do") // 요청url로 들어왔을 때 아래 기능을 수행하겠다. 보통 메서드도 요청 url앞 부분이랑 맞춰줌.
public String boardList(Model model) {
System.out.println("게시판목록보기 기능수행");
// web-inf > view > boardList생성.
// 실행해서 열리는 페이지의 url에 /boardList.do 붙이면 console창에 게시판목록보기 기능수행이 출력됨.
// 게시글 정보 가져오기
// 1개의 게시글은 - 번호, 제목, 내용, 작성자, 작성일, 조회수
Board b0 = new Board(1,"피자 파스타","치즈가 쭉 늘어나는 피자","냠냠이","2023-09-05",5);
Board b1 = new Board(1,"마르게리따","치즈가 쭉 늘어나는 피자","냠냠이","2023-09-05",5);
Board b2 = new Board(1,"바질 파스타","치즈가 쭉 늘어나는 피자","냠냠이","2023-09-05",5);
Board b3 = new Board(1,"까르보나라 ","치즈가 쭉 늘어나는 피자","냠냠이","2023-09-05",5);
Board b4 = new Board(1,"치킨피자","치즈가 쭉 늘어나는 피자","냠냠이","2023-09-05",5);
ArrayList<Board> list = new ArrayList<Board>();
list.add(b0);
list.add(b1);
list.add(b2);
list.add(b3);
list.add(b4);
model.addAttribute("list", list);
return "boardList";
}
}
모든 요청은 dispatcher servlet으로 감.
( views > web.xml)
해당 문서의 하단에
있음.
스프링의 기본적인 이동 방식은 포워드임.
- 리다이렉트 ( redirect )
: 재요청을 하기 때문에 request가 유지되지 않는다.
: 서버 내에서 응답할 페이지가 바뀐다. ( 클라이언트는 페이지가 바뀐것을 알 수 있다.)
: 서버가 클라이언트에게 요청할 주소를 응답 결과로 전달 하는 것.
- 포워드(foward)
: 재 요청 없이 서버내에서 페이지가 전환되고 이때 request가 유지된다,
: 코드의 흐름을 서버상에서만 이동 하는 것.
< 사용 이유 >
: 요청하는 페이지와 응답하는 페이지가 별도로 관리되어야할때 사용됨.
.../..
➤ 실행 과정
요청 ➜ front controller( = dispatcher servlet, " web.xml") ➜ handler mapping ( ser
'spring' 카테고리의 다른 글
[Spring] SpringMVC01_동기방식 마무리 (0) | 2023.09.12 |
---|---|
[Spring] SpringMVC01_게시판 구현(글쓰기) (0) | 2023.09.07 |
[Spring] SpringMVC01_ 환경설정 (0) | 2023.09.06 |
[spring] springMVC 구조 (0) | 2023.09.06 |
[Spring] spring (0) | 2023.09.04 |