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 |
댓글