전체 글 61

[Error] 이클립스 깃허브 연동 오류 해결(야매)

개인 노트북에서도 연동을 하려 했으나, 프로젝트 - 우클릭 - Team - Share Project에서  Target location for project '프로젝트 이름' already exists, cannot move project 이런 오류가 뜹니다. 연동 시에는 저장소가 복제되는데, eclipse의 workspace 폴더의 바로 밑에 git이라는 폴더가 생성되고 바로 이곳으로 프로젝트가 이주됩니다.그런데 이미 git 폴더에 해당 프로젝트가 존재하는 바람에 프로젝트를 옮길 수 없다고 말합니다.그렇다고 해서 Project Explorer에서 깃하고 연결되었다는 표시가 뜨는 것도 아니었기에 구글링을 해보았지만 하는 족족 실패하였습니다. 원인은 잘 모르겠습니다. 추측하건데, 제가 다른 컴퓨터에서 깃과 ..

Error 2024.07.18

[JDBC] Statement와 PreparedStatement의 차이점

오랜만에 다시 JDBC를 공부하며 이전에는 짚고 넘어가지 않았던 Statement와 PreparedStatement의 차이점을 알아보려 합니다. Statement와 PreparedStatement는 둘 다 JDBC API에서 데이터베이스와 상호 작용하기 위해 사용되는 인터페이스입니다. 그러나 사용 목적과 기능에는 중요한 차이점이 있습니다.Statement기본 사용 목적: 일반적인 SQL 쿼리를 실행하는 데 사용됩니다.SQL 쿼리 작성: 쿼리를 실행할 때마다 SQL 쿼리 문자열을 포함하여야 합니다.효율성: 매번 실행할 때마다 데이터베이스에서 쿼리 구문 분석 및 컴파일이 수행됩니다.SQL 인젝션 취약성: 사용자 입력을 포함하는 SQL 쿼리를 직접 작성하면 SQL 인젝션 공격에 취약할 수 있습니다.예제:Sta..

Database/JDBC 2024.07.16

[Error] Spring 회원정보 수정 시 아이디 중복 추가됨

스프링으로 회원정보 수정 작업 중, 기이한 현상을 발견했다. 전화번호만 수정했는데 분명 로그인 때까지만 해도 멀쩡했던 아이디 'test5'가 갑자기 중복되어 추가되는 것이다. 더불어 vo.getMem_tel(전화번호)는 수정된대로 콘솔에 잘 찍혔으나, 데이터베이스 상으로는 수정 전의 전화번호가 그대로 있었다. (그도 그럴 것이, 콘솔에 뜬 쿼리문을 잘 보면 WHERE MEM_ID = 'test5,test5'라고 쓰인 것을 볼 수 있다. test5에 저장된 것이 아니라 저 중복 추가된 값에 저장되었기 때문에 그대로인 것이다. 값이 없는데 어떻게 오류 없이 처리되는지 의문이라 챗GPT에게 물어봤는데, 그냥 그럴 수도 있는 것 같다.) 쿼리문에 문제가 있나 살펴보았지만 요리조리 뜯어봐도 멀쩡했다. 쿼리문에 문..

Error 2024.04.02

[Spring] ResponseEntity의 개념 및 사용법

ResponseEntity의 개념 ResponseEntity는 Spring Framework에서 HTTP 응답을 나타내는 클래스입니다. 이 클래스가 무엇인지 정확히 알려면 우선 HTTP에 관한 클래스를 알아야 합니다. *HTTP(HyperText Transfer Protocol): 클라이언트(브라우저)와 서버 사이에서 이루어지는 요청/응답 프로토콜 *프로토콜(Protocol): 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계 사람이 주고 받는 편지에도 양식이 있듯 컴퓨터가 주고 받는 편지도 마찬가지다. '주는 편지(요청)', '받는 편지(응답)'를 HTTP라 이해하면 좋을 듯. Spring Framework에는 HttpEntity라는 클래스가 존재합니다. 해당 클래스는 HTTP..

Backend/Spring 2024.03.15

[Spring] 댓글과 댓글 수에 대한 처리

※ 본 글은 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. 🧙‍♂️ 안녕하세요 코딩법사입니다. 이어서 게시판 프로젝트의 댓글 처리입니다. 게시판을 사용할 때 보면, 제목 옆에 댓글 수가 뜨는 것을 심심치 않게 볼 수 있습니다. 이번 포스팅에서는 그 부분을 만져줄 것입니다. 그렇다면 먼저 댓글 수를 의미하는 칼럼을 추가해야 합니다. alter table tbl_board add (replyCnt number default 0); 그리고 기존에 댓글이 존재했다면 replyCnt에 반영해야 하기 때문에 update를 사용한 쿼리를 실행합니다. update tbl_board set replyCnt = (select count(rno) from tbl_reply wher..

Backend/Spring 2024.03.08

[Spring] AOP와 트랜잭션(@Transactional)

※ 본 글은 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. AOP 기능은 주로 일반적인 Java API를 이용하는 클래스들에 적용합니다. Controller에는 인터셉터나 필터 등을 이용하고, 서비스 계층에 AOP를 적용할 것입니다. 서비스 계층의 메서드 호출 시 모든 파라미터들의 로그를 기록하고 메서드들의 실행 시간을 기록하겠습니다. 실습 1. 예제 프로젝트 생성 및 설정 2. 서비스 계층 설계 Service 인터페이스와 ServiceImpl를 생성합니다. ServiceImpl는 문자열을 변환해서 더하기 연산을 하는 단순 작업으로 작성합니다. 작성 시에는 반드시 @Service라는 어노테이션을 추가해 스프링에서 빈으로 사용될 수 있도록 설정합니다. 3. Adv..

Backend/Spring 2024.03.08

[Error 스프링] Junit 테스트 시 java.lang.NoClassDefFoundError 오류 해결

java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig AOP를 공부하던 중 @Test를 돌렸는데 위와 같은 오류가 계속 떴습니다. 이는 스프링에서 서블릿 API를 읽지 못해 발생하는데, 이는 라이브러리가 누락되었거나, 존재한다고 해도 런타임 시 라이브러리를 읽지 못할 때 발생합니다. 그래서 pom.xml 파일에 서블릿과 관련된 코드를 확인해 보아야 합니다. 저 같은 경우는 xml 파일에 서블릿 라이브러리가 존재했지만 런타임 때 라이브러리를 읽지 못하는 케이스였습니다. 이 때는 서블릿 버전 3.1 이하에서는 SessionCookieConfig 클래스를 찾지 못하기 때문에 서블릿의 버전을 업그레이드 해 주어야 합니다. 결론 1. 서블릿 API가..

Error 2024.03.07

[Spring] AOP에 대하여

※ 본 글은 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. AOP는 관점 지향 프로그래밍이라고 번역할 수 있습니다. 이 때 '관점'은 '관심사(concern)'로 생각하면 의미를 이해하기 좀 더 쉽습니다. 관심사는 개발자가 코드를 작성하면서 어떤 것에 염두를 두는 것인데, 1. 파라미터가 올바르게 들어왔는지 2. 이 작업을 하는 사용자가 적절한 권한을 가진 사용자인지 3. 이 작업에서 발생할 수 있는 모든 예외는 어떻게 처리해야 하는지 위의 고민들을 하면서 코드에 반영하는 것입니다. AOP는 이런 관심사들을 분리합니다. 관심사가 핵심이 되는 비즈니스 로직은 아니기 때문입니다. 그래서 관심사를 사전 조건이나 사후 조건이라고 간주하면 됩니다. 개발자가 작성한 코드와..

Backend/Spring 2024.03.07

[Spring] 댓글 처리(REST와 Ajax...스압주의)

※ 본 글은 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. REST 방식을 가장 많이 사용하는 형태는 브라우저나 모바일 App 등에서 Ajax를 이용해서 호출하는 것입니다. Ajax( Asynchronous JavaScript and XML)란, 비동기적인 웹 애플리케이션의 제작을 위해 다음과 같은 조합을 이용하는 웹 개발 기법입니다. *비동기적이란 어떤 작업이 순차적으로 실행되지 않고, 다른 작업과 독립적으로 병행적으로 실행될 수 있는 것을 말합니다. - 표현 정보를 위한 HTML과 CSS - 동적인 화면 출력 및 표시 정보와의 상호작용을 위한 DOM, 자바스크립트 - 웹 서버와 비동기적으로 데이터를 교환하고 조작하기 위한 XML, XSLT, XMLHttpRe..

Backend/Spring 2024.03.07
반응형