1. 문제 링크 https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net https://www.acmicpc.net/problem/17069 17069번: 파이프 옮기기 2 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 2.1. 접근법 (D..
0. 배경 - HTML, CSS, JS로 간단 자기소개서 만들기 - 텍스트에 mouseover해서 색상 바꾸고, mouseout하면 원래 색상으로 돌아가기 - getElementsByClassName()으로 'main_item_container' 클래스의 element 가져와서 타겟으로 하기 1. 문제 상황 # jeonsoyeong.html 전소영 addEventListener is not a function 에러 발생 # jeonsoyeong.js var contents = document.getElementsByClassName("main_item_container"); contents.addEventListener("mouseover", function(event) { event.target.sty..
세션 관련 애노테이션 @SessionAttributes 와 @ModelAttribute - @SessionAttributes 파라미터로 지정된 이름과 같은 이름이 @ModelAttribute에 지정되어 있을 경우, 메소드가 반환하는 값은 세션에 저장됨 - 아래의 예제는 세션의 값을 초기화하는 목적으로 사용됨 @SessionAttributes("user") public class LoginController { @ModelAttribute("user") public User setUpUserForm() { return new User(); } } - @SessionAttributes의 파라미터와 같은 이름이 @ModelAttribute에 있을 경우, 세션에 있는 객체를 가져온 후 클라이언트로 전송받은 값을..
1. 웹에서의 상태 유지 기술 - HTTP 프로토콜은 상태 유지가 되지 않는 프로토콜 - 웹 브라우저(클라이언트)의 요청에 대한 응답을 하고 나면, 해당 클라이언트와의 연결을 지속하지 않음 - 상태 유지를 위해 Cookie와 Session 기술이 등장함 쿠키 - 사용자 컴퓨터에 저장 - 저장된 정보를 다른 사람 또는 시스템이 볼 수 있는 단점 - 유효시간이 지나면 사라짐 세션 - 서버에 저장 - 서버가 종료되거나 유효시간이 지나면 사라짐 쿠키의 동작 이해 1. 클라이언트가 WAS에게 요청 2. WAS는 쿠키 생성 3. WAS는 쿠키를 포함하여 클라이언트에게 응답함 4. 클라이언트는 다음 요청 시 쿠키를 포함하여 요청함 5. WAS는 쿠키를 받아서 검사함 세션의 동작 이해 1. 클라이언트가 WAS에게 요청..
1. @RestController - Spring MVC가 제공함 - Spring 4에서 Rest API 또는 Web API를 개발하기 위해 등장한 애노테이션 - 이전 버전의 @Controller와 @ResponseBody를 포함함 MessageConverter - 자바 객체와 HTTP 요청 및 응답 바디를 변환하는 역할 - @ResponseBody, @RequestBody - @EnableWebMvc로 인한 기본 설정 ex) 외부에서 전달받은 JSON 메소드를 내부에서 사용할 수 있는 객체로 변환하기 ex) 컨드롤러가 리턴한 객체를 JSON으로 변환해서 클라이언트에게 전달할 수 있도록 하기 JSON 응답하기 - 컨트롤러의 메소드에서는 JSON으로 변환될 객체를 반환함 - jackson 라이브러리를 추가..
1. 문제 링크 https://www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net 2. 접근법 0. 변수 선언 PriorityQueue groups: 만들 수 있는 블록 그룹을 담아 우선순위에 따라 타겟 블록 그룹을 선정 1. 타겟 블록 그룹 찾기 1.1. searchMaxGroup() 함수를 통해 타겟 블록 그룹 반환하기 1.2. 그룹별 id 값을 매긴 후, 기준 블록을 찾아 bfs() 함수에 넘기기 1.3. bfs를 통해 블록의 수(cnt), 무지개 블록..
0. 방명록 만들기 실습 - Spring JDBC를 이용한 DAO 작성 - Controller + Service + DAO - 트랜잭션 처리 - Spring MVC에서 form 값 입력받기 - Spring MVC에서 redirect하기 - Controller에서 jsp에게 전달한 값을 JSTL과 EL을 이용해 출력하기 요구사항 요구사항 1 - 방명록 정보는 guestbook 테이블에 저장됨 - id는 자동으로 입력됨 - id, 이름, 내용, 등록일을 저장함 요구사항 2 - http://localhost:8080/guestbook 을 요청하면 자동으로 /guestbook/list로 리다이렉트 함 - 방명록이 없으면 건수는 0이 나오고, 아래에 방명록을 입력하는 form이 보여짐 요구사항 3 - 이름과 내용..
0. 배경 URL은 다르지만 중복되는 부분이 있다면? 중복되는 부분을 별도의 객체나 메소드로 분리해서 Controller에서 처리하도록 -> Service 객체로 구현하고 컨트롤러는 Service 객체를 사용하도록 함 1. Service 객체란? - 비즈니스 로직을 수행하는 메소드를 가지고 있는 객체 - 보통 하나의 비즈니스 로직은 하나의 트랜잭션으로 동작함 2. 트랜잭션이란? - 하나의 논리적인 작업 - 원자성, 일관성, 독립성, 지속성 JDBC 프로그래밍에서 트랜잭션 처리 방법 - DB에 연결된 후, Conenction 객체의 setAutoCommit 메소드에 false를 파라미터로 지정 - 입력, 수정, 삭제 SQL을 실행한 후, 모두 성공했을 경우 Connectino이 가지고 있는 commit()..
Spring MVC를 이용한 웹 페이지 작성 실습 - Exam 1 목표 웹 브라우저에서 http://localhost:8080/mvcexam/plusform 이라고 요청을 보내면 서버는 웹 브라우저에게 2개의 값을 입력받을 수 있는 입력 창과 버튼이 있는 화면을 출력한다. 웹 브라우저에 2개의 값을 입력하고 버튼을 클릭하면 http://localhost:8080/mvcexam/plus URL로 2개의 입력값이 POST방식으로 서버에게 전달한다. 서버는 2개의 값을 더한 후, 그 결과 값을 JSP에게 request scope으로 전달하여 출력한다. Spring MVC가 지원하는 메소드 인수 애노테이션 @RequestParam - Mapping된 메소드의 Argument에 붙일 수 있는 애노테이션 - @Re..
1. MVC란? - Model-View-Controller - Model: 뷰가 렌더링 할 때 필요한 데이터. 사용자가 요청한 상품 목록이나 주문 내역 등 - View: 실제로 보여지는 부분. 모델을 사용해서 렌더링을 함. - Controller: 사용자의 액션에 응답하는 컴포넌트. 모델을 업데이트하고 다른 액션을 수행함 MVC Model 1 아키텍처 - 브라우저가 요청하면, 해당 요청을 JSP가 받음 - 요청만큼 JSP 페이지가 존재해야 함 - Java Bean을 통해 DB와 연결됨 - 문제점: JSP 자체에 HTML, JAVA 코드가 섞여있음. 유지보수가 어려움 MVC Model 2 아키텍처 - 요청을 Servlet이 받게 함 - Servlet이 Java Bean을 통해 DB에서 데이터를 꺼내옴 - ..