본문 바로가기

JAVA

(62)
[Spring] 'POST' not supported 에러 Spring으로 연습용 게시판을 구현하는 프로젝트를 작업하다가 댓글 작성 기능 테스트 중 아래와 같은 에러를 만났다. 컨트롤러와 View단에서 코드를 잘못 짜서 생긴 오류 같은데 아무리 살펴봐도 데이터를 주고받는 부분에서는 잘못된 부분을 못 찾았다. 긴 시간 삽질 끝에 문제를 해결했다. 넣은 기억도 안나는 post 호출 코드 한 줄이 엉뚱한데 들어가 있다. 단순한 구문 오류였다. 해당 부분을 지워주니까 댓글이 잘 작성된다. 오류중의 대부분은 단순 오타나 구문 오류 같은 실수인 거 같다. 에러가 났을 때 이를 상기하는 습관을 들여놓으면 더 빠르게 해결할 수 있을 것 같다. (나머지 에러의 주범은 메이븐..) 위와 같은 HTTP Method 에러가 발생 했을 때는 view와 controller 사이에서 전송..
[Spring] DI를 사용하는 이유 종속성 때문에? 그걸 해결하기 위해 인터페이스와 추상화가 있는게 아닌가 → 기존의 자바 프로그래밍 방식은 코드에 의존성이 강하다. // Programmer.java class Programmer { private Coffee coffee; public Programmer() { this.coffee = new Coffee(); } public startProgramming() { this.coffee.drink(); // 일단 마시고 시작하자 ... } } 위 startProgramming 메소드를 호출하기 위해선 Coffee 클래스를 사용하여야 한다. 이 때 Coffee 클래스가 수정되면 Programmer 클래스도 수정되어야 한다. 즉 결합도(coupling)가 높다. 이점은? Unit Test가 용..
[Spring] 스프링이란? 스프링은 스프링 애플리케이션 컨텍스트라는 컨테이너에서 컴포넌트를 생성, 관리한다. (컴포넌트 : 애플리케이션을 구성하는 단위) 컴포넌트, 또는 빈은 컨텍스트 내부에서 어우러져 애플리케이션을 만든다. 빈의 상호 연결은 의존성 주입(Dependency Injection, DI) 패턴으로 수행된다. 즉, 의존(사용)하는 다른 빈의 생성과 관리를 자체적으로 하는 대신 컨테이너가 해주며, 이 컨테이너는 모든 컴포넌트를 생성, 관리, 컴포넌트가 필요한 빈에 주입(연결)한다. (생성자 인자, 속성 접근자 메서드를 통해 처리됨) 예를 들어 재고 서비스와 제품 서비스 컴포넌트가 있다고 하면, 제품 서비스는 제품의 완전한 정보 제공을 위해 재고 서비스에 의존한다. (컨테이너 안에서) 컨테이너 외에도 웹 프레임워크, 저장 ..
[Spring] 관점지향프로그래밍 개요(AOP) 서론 java에는 프로그램의 실행 흐름에 관여(공통프로세스)하는 방법이 3가지 Filter, Interceptor, AOP가 있다. 필터와 인터셉트는 서블릿 단위에서 사용되는 기능이며 AOP는 OOP(객체지향설계)를 보완하기 위해 나온 기능이다. AOP 개요 하나의 소프트웨어를 객체지향으로 설계했다면 각 기능들에는 공통되는 로직이 있을것이다. 이러한 로직(공통 관심사라고 표현하던데 왜 그렇게 이해하기 어려운 단어을 쓸까) 을 분리하는 개념이다. 위 그림이 객체지향프로그래밍으로 설계 되었다면 각 서비스(이체, 출금, 계산)가 프로그래밍 되어 있고 각 서비스의 기능동작을 위한 로깅, 보안, 트랜잭션 코드가 구현되어있을것이다. 이 때 실질적으로 프로그래밍의 기능을 구현하는 서비스를 핵심 관심사라고 하며 그 기..
[Spring] Mybatis 연동절차 1. pom.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 org.mybatis mybatis ${mybatis-version} org.mybatis mybatis-spring 1.3.2 Colored by Color Scripter cs maven 원격 저장소(remote repo) 사이트(https://mvnrepository.com/)에서 maven 라이브러리 의존성 정보를 적용 단, 버전 어울림을 생각하여 선정하는 것이 바람함. 2. root-context.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 Colored by Color Scripter..
[JSP] 톰캣 파일 업로드 시 저장 위치 톰캣 Overview -> Open launch configuration -> Argument 탭에서 확인가능 Dwtp.deloy 뒤에 오는 빨간박스 친 주소에 저장된다. 위 uplaod폴더 안에 저장됨 이클립스에서 톰캣을 실행시킬 때 이중구조로 실행해서 워크스페이스의 upload가 아닌 메타데이터폴더의 upload에 저장이 된다. 톰캣 클린시 이 메타데이터폴더에 있는 upload폴더 내용이 날라가는 경우가 있다. 이를 막기 위해선 파일 저장 위치를 상대경로로 하지 말고 절대경로로(워크스페이스 폴더를 지정하여) 저장할 것 JSP2.3&Servlet 317~318P 내용 참고함
[JSP] 모달박스 데이터 넘어가는 과정 수업 듣다가 도저히 이해 안되는 부분이 있어서 분석해봤다. (이해 안되는게 한두개가 아니지만..) 글 목록 화면에 제목 컬럼의 링크를 누르면 모달박스가 띄워지며 데이터가 넘어간다. 어떻게넘어갈까. 제목링크의 태그아이디는 "subject_${board.boardNum}" 이고, 링크 목적지는 #으로 걸려있다. (목적지가 #인건 자바스크립트에서 처리한다는 뜻) board.js 페이지를 열어보면 45번 : $(a[id^=subject_).click(function(e) // (e는 event 속기식임) (a태그 중 id가 subject로 시작하는 선택자를 클릭했을 때 이벤트 발생 ) 53번 : e.currentTarget.id는 이벤트 발생시킨 타겟의 id를 가져온다는 뜻 id 변수에 subject_${boa..
[JSP] JSP 캐릭터셋 정리 JSP 코드에 들어가는 인코딩 문장들이 헷갈리고 궁금해져서 삽질해가면서 알아가보았다. 페이지 상단의 지시자부터 살펴보자 우선 contentType이란? 클라이언트에 자원을 보낼 때 HTTP 헤더를 통해 페이지에 대한 세부정보(소프트웨어 타입, 시간, 프로토콜 등)를 전송함 여기서 charset =UTF-8 을 통해 웹브라우저가 어떤 캐릭터셋으로 페이지를 받을지 선택한다. pageEncoding은 JSP페이지가 어떤 캐릭터셋으로 작성됐는지를 표기한다. 요약 jsp파일은 MS949로 작성되었으며 브라우저는 UTF-8로 받게될 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Insert title here Colored by Color Scripter cs