본문 바로가기

Java & Kotlin/Spring26

[Spring] IDE에서 잘 접근되던 페이지가 서버에서는 접속되지 않을 때 IDE에서 잘 접근되던 페이지가 서버에서는 접속되지 않을 때 간간히 활동하고 있던 Holix라는 커뮤니티에서 나온 질문 spring boot로 만든 게시판 프로젝트를 ncloud에 올려서 빌드를 했더니 400 에러 뜨면서 MethodArgumentTypemismatchException이 발생하네요 로컬에선 잘 되는데 클라우드에 올리면 에러가 생깁니다 왜 이런가요 ?? 문제 질문자의 상황은 인텔리제이에서는 template 디렉토리 아래의 html이 잘 접근되는데 클라우드 서버에서 실행하면 에러가 발생하는 현상이였다. 문제가 발생한 이유 질문자의 현재 상황 @GetMaping("~~~") public String ... { ... return "/aaa/bbb" } 위 코드를 보고 첫번째로 든 생각은 왜 r.. 2022. 4. 30.
[Spring] 파일첨부 [Spring] 파일첨부 파일첨부 방식에는 페이지 이동방식(form태그 이용)과 Ajax 이용방식, iframe을 이용하는 방식이 있다. 이중 iframe을 이용하는 방식은 화면이 하나 더 뜬다는 점과, 보안에 취약해 대부분의 웹사이트에서 이용하지 않고 있는 방식이다. 파일 업로드 API cos.jar cos.jar을 이용하는 방식은 2002년 이후로 개발이 종료되었고, 더 이상 사용하지 않는 것을 권장한다. commos-fileupload commos-fileupload는 일반적으로 많이 활용되며, 서블릿 3.0 이전에도 사용 가능하다. 서블릿의 API상에서 지원 서블릿 버전 3.0 이상부터는 API상에서 파일 업로드를 지원한다. 서블릿 버전 변경 및 설정 pom.xml 버전변경 ... javax.se.. 2021. 5. 28.
[Spring] 트랜잭션 [Spring] 트랜잭션 service의 메소드가 하나의 mapper메소드(쿼리)만 사용한다면 예외 발생 후에 DB에는 변화가 없다. 하지만 하나의 트랜잭션이 여러 개의 mapper메소드(쿼리)를 순차적으로 실행 후 문제 발생 시 성공한 쿼리문만 반영되어 다시 직접 복구해야하는 문제가 발생한다. 이러한 문제를 막기 위해 스프링에서는 @Transactional 어노테이션을 사용하여 한개의 트랜잭션에 문제가 발생하였을 때 rollback을 통해 전체 트랜잭션이 모두 DB에 반영되지 못하도록 막아준다. @Transactional @Override public int remove(Long rno) { log.info("remove........."+rno); board_mapper.updateReplyCnt(m.. 2021. 5. 26.
[Spring] AOP [Spring] AOP AOP란 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍을 뜻한다. 관점, 관심사 관점이란 개발에 있어서, 관심사(concern)을 의미한다. 관심사는 개발 시 필요한 것들을 생각하는 일이다. 파라미터가 잘 전달되었는가? 이 로직에서 발생할 수 있는 모든 예외를 처리하자 적절한 권한을 가진 사용자가 작업하고 있는가? 핵심 로직은 아니지만 반복적으로 개발에 필요한 관심사들이다. AOP 따라서 AOP는 이러한 것들을 모듈로 분리하여 작성하고 핵심 비지니스 로직만을 작성하도록 한다. 종단 관심사 : 핵심로직 횡단 관심사 : 주변로직 횡단 관심사를 모듈로 구현하는 것이 AOP를 구현하는 것이다. 즉, 반복적으로 나타나는 횡단괌심사를 모듈로 분리한 수 적절한.. 2021. 5. 26.
[Spring] REST Controller 댓글 기능 Rest방식 구현 [Spring] REST Controller 댓글 기능 Rest방식 구현 Spring에서 대표적으로 사용하는 데이터 전송 방식에는 REST가 있다. 게시판 페이지의 게시글 상세보기의 경우 댓글을 불러올 때에 페이징을 이용하는 경우가 있기 때문에, ajax를 이용해 JSON데이터를 REST로 받아오는 식으로 설계한다. REST Controller package com.heekng.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; .. 2021. 5. 23.
[Spring] 게시판 프로젝트 (2) [Spring] 게시판 프로젝트 (2) Criteria 생성 빠른 페이징 처리를 위한 Criteria 클래스를 생성한다. package com.blog.domain; import org.springframework.web.util.UriComponentsBuilder; import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class Criteria { private int pageNum; //페이지 번호 private int amount; //한 페이지에 보여줄 게시물 개수 private String type; //검색 카테고리 private String keyword; //검색 키워드 public Cr.. 2021. 5. 23.
[Spring] root-context.xml 구성 [Spring] root-context.xml 구성 root-context.xml에서 작성하는 bean을 정리 root-context.xml은 태그와 그 속 태그로 구성 태그에서 다른 bean을 참조할 때에는 를 이용 mybatis의 mapper.xml을 bean에 올릴 때에는 를 이용 일반적인 패키지를 bean으로 올릴 때에는 를 이용 hikariConfig jdbc 정보를 입력 oracle 이용 시 ojdbc buildpath와 Deployment Assembly에 등록 필요 dataSource sqlSessionFactory 2021. 5. 22.
[Spring] pom.xml 구성 [Spring] pom.xml 구성 개인 확인용 pom.xml 수정 순서입니다. java version& spring version java 1.8버전, 스프링 5.0.7버전 1.8 5.0.7.RELEASE 1.6.10 1.6.6 ... org.apache.maven.plugins maven-compiler-plugin 3.5.1 1.8 1.8 -Xlint:all true true lombok org.projectlombok lombok 1.18.0 1.2.17 추가 후 lombok.jar 꼭 추가 log4j 버전 변경 log4j log4j 1.2.15 javax.mail mail javax.jms jms com.sun.jdmk jmxtools com.sun.jmx jmxri runtime ----위 삭.. 2021. 5. 22.
REST 방식 REST 방식 REST방식의 통신이란 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계되고, 이를 통해 통신하는 것이다. 용어 URI : 사용자의 요청을 주소로 나타낸 부분이며, 페이지로 나타내진다. URL: 사용자의 요청을 대표하는 데이터 혹은 응답에 대한 데이터를 나타낸 부분이며, 데이터로 나타내진다. REST(Representational State Transfer): 직역하면 대표하는 상태를 전송하는 것이다. 위에서 말했듯이 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다. 예를 들어 /board/123 이라는 URI는 게시글 중 123번 게시글을 뜻하는 것이다. REST로 설계하는 이유 데이터 통신에 제약이 없다. 데이터 소켓 경량화 다른 서버끼리도 데이터를 주고 받을 수 있다... 2021. 5. 17.