SpringMVC로 웹사이트 만들기
MVC(Model, View, Controller) 패턴
소프트웨어 디자인 패턴의 일종으로, 사용자 인터페이스 - 비즈니스 로직을 분리하여 시각적 요소와 서버 작업을 서로 영향 없이 운영되어 유지보수가 편리한 어플리케이션을 만들 수 있다.
- MVC Model 1: 하나의 JSP 파일에 View, Model, Controller가 포함
- MVC Model 2: View(.jsp), Model(.java), Controller(.java)가 분리된 환경 «MVC개발»

MVC2
- VIEW - 브라우저에서 클라이언트에게 화면을 제공 (Client side)
- HTML, CSS, JavaScript
- Model - 비즈니스 로직, CRUD 처리 (Server Side)
- Controller - 사용자의 요청을 받아 제어하하는 역할 (Server Side)
- 서블릿(Java→HTML)→JSP→Spring→SpringBoot으로 진화하고 있음(고도화)
- node.js(JavaScript),Django(python), ASP.net, PHP…
3 Tier 구성
- Web Server (정적 페이지)
- WebApplication Server (동적 컨텐츠 제공)
tomcat- Database
JSP 문법
| 구분 | JSP 태그 | 용도 | 참고 |
| —– | ———- | ———– | —————————————————————– |
| 지시자 | <%@ %> | 페이지 속성 지정 | - page : JSP 페이지의 전체적인 속성을 지정
- include : 다른 페이지를 현재 페이지에 삽입 |
| 주석 | <%– –%> | 주석 처리 | |
| 선언 | <%! %> | 변수, 메소드의 선언 | 표현식 <% %>는 메소드 작성 불가 |
| 표현식 | <%= %> | 결과값 출력 | 세미콜론 사용하지 않음 |
| 스크립트릿 | <% %> | JAVA 코드 삽입 | |
- JSP 내장객체
- response 객체
- 서버에서 클라이언트에게 정보 전달
- request 객체
- 클라이언트에서 넘겨주는 정보를 서버에서 받아서 처리
- response 객체
| 메서드 | 역할 |
|---|---|
| request.getParameter(“name”) | 웹에서 전송받은 request값을 읽어옴(String 리턴) |
| getAttribute() | (Object 리턴, 기본값 null) |
| createStatement() | 데이터베이스로 SQL 문을 보내기 위한 SQLServerStatement 개체를 만듦 |
Ex. 회원 관리
- 회원 등록
- 회원 등록 컨트롤러 작성 → 회원 등록 메서드(return 폼 작성화면)
- 폼 작성(데이터 post로 보내는 폼)
- 컨트롤러에 데이터 전달 받을 폼 객체 생성 (@PostsMapping /set변수→save / return “redirect:/”)
- 회원 조회
- 컨트롤러에 list(Model model) 메서드 생성 model.addAttribute(”members”, members) ⇒ DB에서 해당 데이터 찾아와 출력해주기
- 회원리스트.html
DB 접근 기술 변화
순수 JDBC
- JDBC Driver load
- Connect (메소드 사용) DriverManager.getConnection(url, id, pwd):connection
- Statement/PreparedStatement
- executeUpdate(), executeQuery()
- executeUpdate() : insert, delete, update
int 반환 - executeQuery() : select
ResultSet 반환- next() : 1개열 가져옴
- getString(), getInt() : 1개행의 특정 칼럼 값 가져옴
- executeUpdate() : insert, delete, update
- close(Connection, Statement, ResultSet)
DI (Dependencies Injection)를 사용하면 기존 코드를 손대지 않고, 설정만으로구현 클래스를 변경할 수 있음
스프링 JDBC Template 사용
- DB를 사용하기 위해 만들었었던 DataSource Bean을 생성
- 생성한 DataSource를 파라미터로 하는 jdbcTemplate을 생성하는 생성자를 호출
@Autowired //생성자 하나일 때 생략 가능
public class JdbcTemplateMemberRepository implements MemberRepository {
private final JdbcTemplate jdbcTemplate;
public JdbcTemplateMemberRepository(DataSource dataSource) {
jdbcTemplate = new JdbcTemplate(dataSource);
}
}
JPA
ORM의 기술 표준으로 사용하는 인터페이스의 모음 자바 프로그램에서 데이터베이스에 데이터를 저장하거나 조회하는 목적으로 사용
- JPA 엔티티매핑 -
@Entity@id@column등 손쉽게 선언 - JPA 회원 리포지토리 - DB와 통신하는 엔티티 매니저 주입
public class JpaMemberRepository implements MemberRepository {
private final EntityManager em;
public JpaMemberRepository(EntityManager em) {
this.em = em;
}
}
