관리 메뉴

DeseoDeSeo

[Spring] SpringMVC01 실습01 본문

spring

[Spring] SpringMVC01 실습01

deseodeseo 2023. 9. 5. 15:40

- 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

 

Bootstrap Panels

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

여기서 부트스트랩 가져옴.

 

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