전체 글 108

MainActivity.java (poemApp01)

* 메인 액티비티를 정의하고 있다. 앱의 초기화면을 구성한다. package com.example.b_poemapp01; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea..

학교/Android 2024.04.17

manifest.xml (poemApp01)

* 앱의 구성 요소를 정의하고 시스템에 앱의 정보를 제공한다. - 앱의 패키지 이름, 액티비티, 서비스, 브로드캐스트 수신기 등이 포함된다. 1. manifest 엘리먼트: XML 파일이 안드로이드 매니페이스임을 나타낸다. 2. xmlns:android="http://schemas.android.com/apk/res/android : XML 네임스페이스 정의한다. 안드로이드에서 정의된 기본 속성을 사용할 수 있도록 한다. 3. xmlns:tools="http://schemas.android.com/tools : tools 네임스페이스를 정의한다. 개발자 도구에서 사용되는 특정 속성을 정의한다. 4. package="com.example.b_poemapp01 : 앱의 고유한 식별자인 패키지 이름을 정의한다..

학교/Android 2024.04.17

dbeaver + aws rds + mySql 연동하기 (+ application.yml 설정)

이것두 게시판 만들기 연습에 써놨던 dbeaver 설명대로! 이 입력란은 팀 노션 '위키' 에 멀 써야할지 올려놨습니다! dbeaver + aws rds + mySql 입력 후에 Test Connection 눌러서 미리 테스트! 이렇게 뜨면 성공! 🔥🔥🔥 Server Host 링크와 비밀번호는 유출되면 안됨 이렇게 설정을 마치고 나면 db를 로컬이 아닌 클라우드 db로 쓰게 돼서 내가 db를 수정하거나 데이터를 넣으면 같은 host로 연결한 사람들과 같이 확인 가능! 굳이 디비를 따로 관리할 필요 없이 공동의 같이 동시에 사용할 수 있는 디비가 생기는 것! AWS를 사용하게 되면 실수해서 돈이 많이 빠져나가는 문제가 종종 발생할 수 있음... 게시판 만들기 연습했던 것처럼 resources 폴더에 원래 ..

(git) 팀 깃허브 관련 초기 세팅 (git bash, clone, branch 생성)

C 드라이브이나 자신이 잘 사용할 수 있는 곳에 프로젝트 새폴더 생성 저는 c 드라이브 안에 SpringBootStudy라는 폴더 생성 했어요. 생성한 폴더 안에 들어가 마우스 오른쪽 버튼 클릭 후 ‘Git Bash Here’ 클릭 (추가 옵션 표시 > Git Bash Here) 로컬 저장소 생성: 새로운 Git 저장소 초기화 git init 깃허브 저장소 클론: 팀 깃허브 저장소를 로컬로 클론 git clone ‘GitHub 저장소 URL’ 우리는 git clone https://github.com/diaperi/CONCAT_toyproject.git git bash에서 붙여넣기는 shift + insert 클론 완료하면 우리 팀 폴더가 생기는데 아까 쓰던 git bash 창 닫고 생성된 폴더 안에서 ..

[게시판 만들기 (11)] ajax 댓글 처리

마지막 댓글 부분이다. 댓글은 ajax를 이용해서 한다. ajax를 사용하면 비동기적으로 통신하기 때문에 페이지를 새로 고침하지 않아도 데이터를 서버로부터 받아오거나 서버에 데이터를 보낼 수 있다. 또 전체 페이지를 다시 로드하지 않고도 특정 부분만 업데이트가 가능하다. detail.html 에 댓글 관련 코드를 추가한다. board.id를 받아오는 것이 중요하다. [ detail.html ] 댓글작성 댓글번호 작성자 내용 작성시간 const commentWrite = () => { const writer = document.getElementById("commentWriter").value; const contents = document.getElementById("commentContents").va..

Spring Boot 2024.01.15

[게시판 만들기 (10)] 파일 첨부_다중파일 첨부

파일을 첨부하기 위해선 수정하고 생성할 것들이 많다. save.html에서 form에서 file을 첨부할 수 있도록 input 을 추가하고 다중 파일 처리를 위해 multiple도 써준다. [ save.html ] file: 다중 파일 처리를 위한 작업을 한다. boardFile, originalFileName, storedFileName을 List의 형태로 바꿔준다. 첨부된 파일이 있으면 fileAttached 속성을 1로 설정하고, 각 파일의 원본 파일 이릠과 저장된 파일 이름을 리스트에 담아 BoardDTO에 설정한다. 이렇게 하면 파일이 첨부되지 않은 경우에 fileAttached만 설정하고, 첨부된 경우에는 추가로 파일 이름 정보도 설정하는 방식이다. [ BoardDTO ] package tes..

Spring Boot 2024.01.15

[게시판 만들기 (9)] 게시글 페이징_페이징 후 상세조회

BoardController의 findById 메서드에 페이징 코드를 추가한다. [ BoardController ] @GetMapping("/{id}") public String findById(@PathVariable Long id, Model model, @PageableDefault(page=1) Pageable pageable){ /* 해당 게시글의 조회수를 하나 올리고 게시글 데이터를 가져와서 detail.html에 출력 */ boardService.updateHits(id); BoardDTO boardDTO = boardService.findById(id); model.addAttribute("board", boardDTO); model.addAttribute("page", pageable.g..

Spring Boot 2024.01.14

[게시판 만들기 (8)] 게시글 페이징_페이징 화면 처리

index.html의 pagingReq 함수를 추가한다. [ index.html ] 글작성 글작성(링크) 글목록 페이징목록 prev ${boardList.first} boardList는 페이지네이션에 사용되는 spring data의 'Page' 객체이다. 'first' 속성은 현재 페이지가 첫 페이지인지 여부를 나타내는 속성이다. 만약 현재 페이지가 첫 페이지이면 'true'를, 그렇지 않으면 'false'를 반환한다. ? '#' : @{/board/paging(page=${boardList.number})} 삼항 연산자를 사용하여 현재 페이지가 첫 페이지면 '#' (링크가 비활성화됨)를, 그렇지 않으면 다음과 같은 페이지로 이동하는 링크를 생성한다. 타임리프의 반복문 사용하여 startPage부터 en..

Spring Boot 2024.01.14

[게시판 만들기 (7)] 게시글 삭제

[ detail.html ] 목록 수정 삭제 const updateReq = () => { console.log("수정 요청"); const id = [[${board.id}]]; location.href = "/board/update/" + id; } const deleteReq = () => { console.log("삭제 요청"); const id = [[${board.id}]]; location.href = "/board/delete/" + id; } location.href = "/board/delete/" + id; 현재 브라우저창의 위치를 /board/delete/와 서버에서 받은 id로 구성된 URL로 변경한다. BoardController에 delete 메서드를 추가한다. [ BoardC..

Spring Boot 2024.01.14

[게시판 만들기 (6)] 게시글 수정

[ detail.html ] 목록 수정 삭제 th:inline="javascript": 시작해야 타임리프의 자바스크립트 인라인 모드를 활성화 할 수 있다. updateReq() 함수: "수정 요청"을 콘솔에 출력하고, 현재 게시글의 ID를 사용하여 '/board/update/{id}" 엔드포인트로 페이지 이동하는 함수이다. const id = [[${board.id}]] 를 통해 타임리프의 표현식을 사용하여 서버에서 전달된 게시글의 ID를 가져왔다. [[${board.id}]]: 타임리프 표현식을 사용하여 서버에서 전달된 게시글의 ID를 동적으로 삽입한다. () => {...}: 매개변수가 없는 경우 ( )는 비워둘 수 있다. 중괄호 {...} 안에는 함수의 몸체가 위치한다. 글수정은 아래의 단계로 이루..

Spring Boot 2024.01.14