본문 바로가기
수업내용

20230711 SpringBoot Controller/JSP/MyBatis

by titlejjk 2023. 7. 11.

Controller에 대한 수업!

오늘은 어제 와 다르게 Dependencies를

Spring Boot DevTools와 Spring Web을 추가해 주었다.

 

Spring Boot는 자체 TomCat Server를 내장하고 있다.

예전에는 내가 다운 받은 TomCat Server를 통해 실행을 했었다.

Run을 해보면

 

Port 를 이미 사용하고 있다는 오류가 뜨는데 지금 학원 컴퓨터에서는 오라클 DB가 8080 포트를 사용중이라 

 

 

application.properties에서 포트 번호를 9000로 지정해준후에 static에 index.html을 생성해주어서 서버가 잘 실행되었는지 확인해 보겠다.

 

 

서버가 잘 돌아가는 것을 확인할 수 있다.

 

 

Context-path까지 설정해주었다!~🫡🫡🫡

 

Controller설정 중 RestController와 Controller 어노테이션의 차이점은?

@RestController 어노테이션은 컨트롤러 메서드에서 리턴하는 내용을 바로 클라이언트에게 응답하는 컨트롤러이다.

일반 문자열, xml, json 형식의 문자열을 응답할 때 주로 사용한다.

모든 컨트롤러 메소드에 @ResponseBody 어노테이션이 붙어있다고 생각하면 좋다.


 

Spring Boot JSP사용해 보기

새로운 프로젝트를 만들어 준 후에 pom.xml에서 jsp페이지 사용과 taglib(jstl)을 사용할 수 있게 depedency를 추가해준다.

# server port settiong
server.port=9000
# context path setting
server.servlet.context-path=/boot04
# view page prefix, suffix setting
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

localhost:9000/boot04/

GET 방식 "/"요청이 오면

/WEB-INF/views/hom.jsp페이지로 forward이동해서 응답 하겠다는 

application.properties설정이다.

 

 


 

MyBatis(feat.DB연동)

MyBatis와 학원에서는 DB 를 Oracle을 사용하기에  두 개를 더 연동해준다.

그럼 위와 같이 pom.xml에 위와 같은 dependency가 추가 된것을 확인 할 수가 있다.

 

그리고 application.properties에 아래와 같은 설정(Connection Pool)을 추가해준다.

# server port settiong
server.port=9000
# context path setting
server.servlet.context-path=/boot04
# view page prefix, suffix setting
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
# oracle DataSource Setting ( Connection Pool )
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe
spring.datasource.username=scott
spring.datasource.password=tiger

 

회원목록을 조회 해보기 위해 MemberDto, Dao, Controller를 추가해 주고 기존 DB에서 사용하던 table을 사용하기 위해 예전에 사용하던 Mapper를 복사해서 준비해주고

 

Mapper와 MemberDto를 @Alias를 통해 연결시켜준다.

 

 

그리고 application.properties에서 아래와 같이 설정해 준다.

 

MemberDao에 Mapper로 부터 회원의 목록을 조회하는 메서드를 작성해준 후에

 

package com.example.boot05.member.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.example.boot05.member.dto.MemberDto;

@Repository
public class MemberDao {
	
	@Autowired
	SqlSession session;
	
	public List<MemberDto> getList(){
		return session.selectList("member.getList");
	}
}

 

MemberController를 통해서 member/list.jsp에 return해준다.

 

package com.example.boot05.member.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

import com.example.boot05.member.dao.MemberDao;
import com.example.boot05.member.dto.MemberDto;

@Controller
public class MemberController {

	@Autowired
	MemberDao dao;
	
	@GetMapping("/member/list")
	public ModelAndView list(ModelAndView mView) {
		
		//회원 목록
		List<MemberDto> list = dao.getList();
		mView.addObject("list", list);
		mView.setViewName("member/list");
		
		return mView;
	}
}

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/member/list</title>
</head>
<body>
	<div class="container">
		<h3>🍖🍖🍖괴기 먹으러 갈사람ฅʕ•̫͡•ʔฅ🍖🍖🍖</h3>
			<table>
				<thead>
					<tr>
						<th>번호</th>
						<th>이름</th>
						<th>주소</th>
					</tr>
				</thead>
				<tbody>
					<c:forEach var="tmp" items="${requestScope.list }">
						<tr>
							<td>${tmp.num }</td>
							<td>${tmp.name }</td>
							<td>${tmp.addr }</td>
						</tr>
					</c:forEach>
				</tbody>
			</table>
	</div>
	
</body>
</html>

 

 

'수업내용' 카테고리의 다른 글

20230713 Cube2/Poligon  (0) 2023.07.13
20230712 3dTransform.html  (0) 2023.07.12
20230711 CSS3 Animate  (0) 2023.07.11
20230710 SpringBoot/Bean/AOP  (0) 2023.07.10
20230710 CSS3  (0) 2023.07.10

댓글