수업내용/Spring 26

[2023.1.12.목] 스프링 MVC 웹 애플리케이션 6 (트랜잭션, 첨부파일 업로드)

트랜잭션 여러 번의 데이터베이스 액세스 작업을 하나의 논리적인 작업그룹으로 묶는 것 여러번의 db엑세스 작업이 전부 성공했을 때는 커밋, 하나라도 오류가 나면 롤백(모두 취소) ( ALL or NOTHING ) 트랜잭션의 사용 목적 데이터베이스 액세스 작업이 실행될 때마다 데이터베이스에 직접 반영시키지 않고, 여러 번의 데이터베이스 액세스 작업을 하나의 논리적인 작업그룹으로 만들어서, commit/rollback 명령을 실행할 때 한꺼번에 반영/취소 시키는것 데이터베이스 액세스 작업에 대한 부분적인 성공을 허용하지 않는다. -> 데이터의 일관성을 유지할 수 있다. 트랜잭션의 시작 첫번째 DML(INSERT/UPDATE/DELETE/SELECT) 명령어가 실행될 때 시작된다. commit/rollback ..

수업내용/Spring 2023.01.12

[2023.1.10.화-1.11.수] 스프링 MVC 웹 애플리케이션 5 (게시글 등록, 목록(페이징), 조회수, 상세보기, 댓글)

상대경로 : 마지막 슬래쉬 뒤에 붙음 절대경로 : localhost 뒤에 바로 붙음 내부이동 반환값 1. 게시글 등록 * Post 객체 * PostMapper , posts.xml * postRegisterForm (컨트롤러의 매개변수로 전달할 객체 만들기 (파일첨부도 추가할거라서 객체로 만들어줌) * PostController * PostService * form.jsp 폼을 빈값으로 제출하지 못하도록 자바스크립트! 게시글 등록 제목과 내용을 입력하세요 제목 내용 취소 등록 2. 게시글 목록 * PostMapper * posts.xml * PostController (요청파라미터가 page인 것을 찾아, 없어도 반환하는데, 없으면 기본값을 1로 해) * PostService * list.jsp 게시글 ..

수업내용/Spring 2023.01.10

[2023.1.9.월] 스프링 MVC 웹 애플리케이션 4 (어노테이션, 내정보조회, 회원탈퇴, 비밀번호변경)

어노테이션 편집기, 컴파일러, 프레임워크, 애플리케이션에게 부가적인 정보를 전달하기 위해 사용된다. 구성요소 @Retention : 어노테이션이 사용되는 시점 정의 Source : 소스코드 작성시 사용 Class : 컴파일시 사용 Runtime : 프로그램 실행시 사용 대부분의 어노테이션은 프로그램 실행시에 사용 개발자가 정의하는 어노테이션도 프로그램 실행시에 사용 @Target : 어노테이션이 적용되는 대상 정의 Type : 클래스, 인터페이스 @Target(ElementType.TYPE) public @interface Controller { } @Controller public class HomeController { } Field : 멤버변수 @Target({ElementType.TYPE, Ele..

수업내용/Spring 2023.01.09

[2023.1.6.금] 스프링 MVC 웹 애플리케이션 3 (로그인, 내정보 조회)

* 의존성 관계 - 스프링 컨테이너가 객체 생성 + 의존성 관계 분석해서 조립까지 해줌 - ContextLoaderListener 가 만드는 스프링 컨테이너, DispatcherServlet 이 만드는 스프링 컨테이너 * 개발자가 해야할 일 1) 매핑정보 (어떤 요청 URI로 받을지 결정) ( @PostMapping("/register") ) 2) 메소드 생성 3) 매개변수를 뭐로 받을지 결정 4) 반환타입 결정 Controller의 요청핸들러 메소드 @PostMapping("/login") public String login(String id, String password) 요청핸들러 메소드의 매개변수가 기본자료형 혹은 String 인 경우 매개변수의 이름과 동일한 이름으로 요청파라미터 값을 조회해서 ..

수업내용/Spring 2023.01.06

[2023.1.5.목] 스프링 MVC 웹 애플리케이션 2 (조립, 회원가입, 예외처리)

1. 컨트롤러, 매퍼, 서비스 연결 주소창에 다 입력하기 싫을 때 서버에서 프로젝트 제거!! -> 프로젝트 -> properties -> web project settings -> '/'로 변경 -> localhost/home 만 입력해도 됨 (원래는 localhost/spring-web/home) * web.xml에 태그 라이브러리 jsp파일이 모든 jsp 파일에 추가되도록 정의 Q. navbar.jsp와 tags.jsp의 include 방식이 다른 이유 tags.jsp는 맨위에 들어가면 되지만 navbar.jsp는 위치가 정해져 있음 * navbar.jsp - 내비게이션 바 * tags.jsp - el, jstl을 사용할 수 있는 태그, 날짜포맷을 사용할 수 있는 태그 등등 * HomeControll..

수업내용/Spring 2023.01.05

[2023.1.4.수] 스프링 MVC 웹 애플리케이션 1 (준비, 환경설정)

스프링 MVC 흐름 1 * 스프링에서는 mvc 웹 애플리케이션을 개발하기 위해서 DispatcherServlet 클래스를 제공함 - DispatcherServlet : 클라이언트 요청 접수 -> 컨트롤러 검색 (스프링 컨테이너에서 해당 요청을 처리할 컨트롤러 가져옴) -> 요청핸들러 메소드(execute 메소드) 실행 -> 반환 URL 전송 - Controller : 서비스에 의존 -> 서비스의 업무로직 실행시킴 -> 요청 처리(요청파라미터값 처리, 폼 입력값 유효성 검증, 업무로직 실행, 뷰에 표현할 데이터 담기) -> 뷰이름/재요청 URL 반환 - Service : Mapper 인스턴스에 의존 -> 핵심 업무 로직 수행 (DB 액세스 작업) -> 뷰에 표현할 데이터 반환 - Mapper 인스턴스 : ..

수업내용/Spring 2023.01.04

[2023.1.3.화] mybatis로 데이터베이스 액세스, 다이나믹 쿼리

mybatis로 데이터베이스 액세스 하기 0. mybatis 프로젝트 생성 new -> project -> maven project 1. 필요한 라이브러리 의존성 추가 *spring-mybatis/pom.xml 4.0.0 com.sample spring-mybatis 0.0.1-SNAPSHOT 11 11 1.7.25 org.springframework spring-context 5.3.24 org.springframework spring-jdbc 5.3.24 org.mybatis mybatis 3.5.11 org.mybatis mybatis-spring 3.0.1 com.oracle.database.jdbc ojdbc11 21.8.0.0 ch.qos.logback logback-classic 1.2.3 ..

수업내용/Spring 2023.01.03

[2023.1.2.월] jdbc, mybatis를 이용한 스프링 데이터베이스 액세스

스프링과 데이터베이스 액세스 스프링의 데이터베이스 액세스 작업은 jdbc 연동, ibatis/mybatis 연동, JPA/hibernate 연동 등 다양한 데이터베이스 액세스 기술과 연동해서 데이터베이스 액세스 작업을 구현할 수 있다. 스프링의 데이터베이스 액세스 작업 특징 다양한 데이터베이스 액세스 라이브러리와의 연동을 지원한다. (jdbc, ibatis/mybatis, JPA/hibernate 등) 일관된 데이터베이스 액세스 예외처리를 지원한다. 모든 데이터베이스 액세스 오류에 대해서 DataAccessException 예외를 발생시킨다. DataAccessException 클래스는 RuntimeException의 하위클래스여서 예외처리를 강제하지 않는다. 데이터베이스의 종류와 상관없이 오류 상황에 ..

수업내용/Spring 2023.01.02

[2022.12.30.금] 스프링의 의존성 주입

스프링의 의존성 주입 1. 수동 의존성 주입 애플리케이션 실행에 관여하는 객체를 스프링 컨테이너가 생성하게 한다. * 실행객체 package com.sample.app; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sample.post.controller.PostController; public class App2 { public static void main(String[] args) { // 스프링 빈 설정파일의 경로 String resource = "spring/context-2.xml"; //..

수업내용/Spring 2022.12.30

[2022.12.29.목] 스프링 DI(의존성주입), AOP(관점지향), Maven

스프링 오픈소스 프레임워크 오픈소스 : 라이센스 무료, 가공/수익창출 허용 프레임워크 : 특정한 아이디(개발방식, 개발패턴, 아키텍처)의 구현체 - 라이브러리와 프레임워크 * 라이브러리 : 개발에 필요한(자주 사용되는) 기능의 구현체 필요한 기능이 구현되어 있는 라이브러리를 다운받아서 그 라이브러리의 기능을 사용한다. * 프레임워크 : 개발방식, 개발 패턴의 구현체 (ex. ibatis) 해당 프레임워크에서 제시하는 방식에 맞게 클래스나 인터페이스, 환경설정 정보를 구성하면 프레임워크가 제공하는 기능을 제공받을 수 있다. Java 기반의 엔터프라이즈 애플리케이션 개발을 지원하는 프레임워크 DI(의존성 주입)의 구현체 의존성 주입은 스프링의 가장 핵심적인 기능이다. 인터페이스를 이용해 클래스와 클래스 간의..

수업내용/Spring 2022.12.29