분류 전체보기 210

#Spring MVC

MVC? MVC(Model - View - Controller) 디자인 패턴을 말한다. Controller의 장점 HTTP request, response 처리를 위해 매번 작성해 줘야하는 중복코드들을 생략할 수 있다. API마다 파일을 만들 필요가 없고, 유사한 성격의 API를 하나의 Controller로 관리할 수 있다. Controller 내 메소드 명도 자유롭게 사용할 수 있다(Handler mapping에서 API - Controller 매칭) 서버에서 HTML을 내려주는 경우 1. 정적(static) 웹페이지 Controller는 요청을 Model로 받아서 처리하고, Client에게 View(정적 웹페이지, HTML)을 내려준다. 2. 동적(dynamic) 웹페이지 Controller는 요청을..

서버/Spring boot 2022.01.26

[프로그래머스] 문자열 내 마음대로 정렬하기

https://programmers.co.kr/learn/courses/30/lessons/12915 문자열 배열이 주어지고, 해당 문자열의 특정 인덱스(n)를 기준으로 배열을 정렬하는 문제다. 특정 인덱스의 문자만 추출해서 배열을 정렬하고 나서 1. 이걸 이용해 원래의 배열을 정렬하는 부분 2. 인덱스 문자열이 같을 경우 사전순으로 배열하는 부분 이 어려웠다. 1.은 특정 인덱스의 문자를 추출한 배열은 원래 배열의 위치와 동일하기 때문에 이를 활용하기 위해 그대로 두고, 정렬을 위해 clone();으로 복사본을 새로 만들었다. 그래서 정렬된 배열(wordSort)과 원래 배열(word)을 비교하여 정렬 순서대로 해당되는 index를 찾고 이 index에 해당하는 strings값을 answer배열에 하나..

Language/JAVA 2022.01.26

20220126 개발일지 #게시판 만들기(원페이지)

다른 분들의 도움으로 원페이지 게시판 만들기도 성공했다. 게시글 1개 조회하기가 구현이 잘 안되서 계속 문제였는데, 우선 어제 팀원분이 모달로 띄우셨다고 해서 참고해서 만들었다. 게시글 목록을 불러오는 fuction 안에 모달을 포함해서 모달 실행 시 상세페이지가 모달로 보이는 형태다. 이렇게 하면 controller에서 게시글 1개를 불러오기 위한 GetMapping을 별도로 만들지 않아도 되고, html에서도 목록 불러오기 function 하나로 해결할 수 있다. 그런데 모달의 특성인지, 이렇게 하면 게시글의 제목, 작성자, 작성일이 테이블안에 제대로 들어가지 않았다. 오늘 스터디하고나서 show/hide로 하신 분의 코드를 보았다. 처음에 내가 생각했던 것처럼 목록 불러오기에서 onclick(혹은 ..

#Model과 ModelAndView

게시판을 만들면서 Model 객체를 사용했었다. controller에서 다음과 같이 Model 객체를 사용해면 addAtrribute를 사용하여 데이터를 저장하고 이 데이터를 view로 보내준다. view는 thymeleaf를 사용해서 html 내의 원하는 곳에 데이터를 뿌려준다. //게시글 상세보기 @GetMapping("/post/{id}") public String detail(@PathVariable("id") Long id, Model model) { BoardDto boardDto = boardService.getBoard(id); model.addAttribute("boardDto", boardDto); return "board/detail"; } 처음에는 thymeleaf를 쓰는 거랑 Mo..

서버/Spring boot 2022.01.26

#자바에서 JSON형식 사용하기

자바에서 JSON을 사용하기 위해서는 JSONObject, JSONArray 클래스가 필요하다 https://mvnrepository.com/에서 필요한 라이브러리를 임포트할 수 있다. JSON을 검색하고 JAVA에서 사용이 가장 많은 라이브러리를 찾는다. Gradle의 경우 아래와 같이 해당 내용을 복사해서 build.gradle>dependencies에 추가하고 Run을 한다. 우측 Gradle에서 새로고침을 한다. 실제 필요한 데이터를 추출하는 과정은 다음과 같다. public static void main(String[] args) { NaverShopSearch naverShopSearch = new NaverShopSearch(); String result = naverShopSearch.se..

서버/Spring boot 2022.01.25

#ARC를 통해 Java로 Open API가져오기

ARC를 통해 Open API를 가져오기 전에 테스트를 해볼 수 있다. 문서를 참고해서 다음과 같이 실행할 수 있다. 문서에서 알려준대로 요청방식은 GET + 필수정보(query) + Header에 다음 내용을 넣으면 된다. 또한 해당 내용을 원하는 Language + platform으로 가져올 수 있다. 그리고 해당 내용을 원하는 class에 메소드를 만들어 입력해주면 된다. public class NaverShopSearch { //검색어 query를 입력하면 해당 키워드로 검색 public String search(String query){ //ARC에서 복사해본 부분 RestTemplate rest = new RestTemplate(); HttpHeaders headers = new HttpHea..

서버/Spring boot 2022.01.25

20220125 개발일지 #서버시간 변경하기

오전에는 어제 만든 게시판을 배포했다. 어제 다른 팀원분께 들은 것처럼 사용하던 ip로 배포하니 포트포워딩이 안됬는데, 아마 처음에 서버에 스파르타에서 제공하는 기본값 설정 파일을 설치하면서 포트포워딩이 포함되서 그런가 싶기도 하다. AWS에서 새로 ip를 만들고 자바 사용을 위해 OpenJDK를 설치하고 sudo apt-get update sudo apt-get install openjdk-8-jdk java -version 포트포워딩을 하였다. (기본 80포트를 입력하면(즉, ip만 입력) springboot 기본포트인 8080으로 포워딩) sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 그리..

20220124 개발일지 #게시판 만들기(멀티페이지)

오늘은 이번주 개인과제인 게시판만들기를 다시 시작했다. 지난주 토요일에 개인 과제를 진행하면서 단일페이지(index.html)를 구현하지 못해서, 멀티 페이지로 구현하였다. 기본적으로 https://gonyda.tistory.com/3?category=803529 을 참고했다. github: https://github.com/paran22/springprac 1. 개발환경 구축 IntelliJ Java 8 Gradle MySQL 2. 라이브러리 JPA Thymeleaf Lombok DevTools 3. 설정 application.properties spring.datasource.url=엔드포인트:3306/myboard spring.datasource.username= spring.datasource.p..