dev/스프링 (46) 썸네일형 리스트형 이미지 미리보기 사용자가 올린 이미지를 미리 보여 주는 기능을 개발할 때 이미지를 webapp 밑에 저장되어 있는 이미지 파일을 보여주는 경우도 있지만 webapp 말고 다른 특정 디렉토리(서버 외부 디렉토리)에 있는 이미지 파일을 보여줘야 되는 경우가 있습니다. 소스를 보게 되면 특정 이미지 파일을 File 객체로 생성하고 파일 확장자를 response의 contentType에 추가하고 response의 outputStream을 통해 이미지 파일을 출력합니다. 소스에서 버퍼를 써야 되는게 맞지만 이미지 파일 사이즈는 대체로 가볍기 때문에 버퍼를 쓰지 않았습니다. 위와 같이 이미지 미리보기가 잘 되는 것을 확인할 수 있습니다. request get attribute 클라이언트가 서버로 요청할 때 요청 정보의 모든 속성을 보고 싶다면 아래와 같이 확인할 수 있습니다. 소스를 보게 되면 request.getAttributeNames()를 통해 전체 속성 정보 이름을 가져오고 반복문을 돌려서 모든 속성 정보를 출력합니다. spring custom error page 스프링 개발하다보면 에러 페이지를 표출할 때 기본으로 제공하는 에러 페이지 말고 커스텀 에러 페이지 표출해야 하는 경우가 있습니다. 먼저 web.xml에 아래와 같이 태그를 작성합니다. web.xml 내용은 에러가 발생하면 "/errors"로 매핑시킨다는 뜻입니다. 그리고 컨트롤러에 해당 매핑 내용을 작성합니다. 위의 소스를 보게 되면 에러코드에 따라 표출 페이지가 달라진 다는 것을 확인할 수 있습니다. (400이면 400 에러 페이지, 404이면 404 에러 페이지...) 그리고 해당 에러 페이지를 위에서 작성한 "errors" 폴더 아래에 추가합니다. 이렇게 하면 쉽게 커스텀 에러 페이지를 사용할 수 있습니다. 이 방법 외에 web.xml에서 바로 에러 코드별 페이지를 매핑시키는 방법도 있습니다. 개.. cvc-id.3: A field of identity constraint 'web-app-filter-name-uniqueness' matched element 'web-app', but this element does not have a simple type. 에러 수정 프로젝트 세팅하다가 web.xml에서 다음과 같은 에러가 발생했습니다. 구글링해봤는데 이클립스에서 xml의 namespace 정보를 못 불러와서 생긴 에러인거 같아서 java.sun.com의 주소를 Java.sun.com으로 변경했더니 에러가 사라졌습니다. web.xml을 위와 같이 수정했더니 에러가 사라졌습니다. 간단한 버그여서 쉽게 해결했습니다😊 Http 요청 한글 파라미터 인코딩 클라이언트가 서버에 Http 요청할 때 URL에 한글이 포함되는 경우 브라우저에 따라 아래와 같은 에러가 발생할 수 있습니다. 위와 같은 에러가 발생하는 이유는 브라우저 별로 한글 인코딩하는 방식이 다르기 때문입니다. (익스플로어에서 발생하는 문제... 이제 익스플로어 놓아줬으면 좋겠습니다...) 이런 문제를 해결하기 위해서는 클라이언트(브라우저)와 서버(톰캣)에서 작업을 각각 해줘야 합니다. 먼저 클라이언트에서 encodeURI 함수를 사용해서 한글을 인코딩하고 서버에서는 URLDecoder클래스의 decode 함수를 사용해서 한글을 디코딩하면 됩니다. 회사 소스라 캡처할 수 없는 점 죄송합니다😂 대신 간단하게 예로 보여드리겠습니다. 먼저 클라이언트에서 파라미터(한글 텍스트)를 인코딩하여 서버에 전달합.. lombok 설치 및 사용 스프링 개발할 때 모델 클래스 getter, setter를 일일이 만드는 게 귀찮을 때가 있습니다. 그래서 이런 문제를 해결하기 위해 나온 것이 lombok입니다. 먼저 lombok을 사용하려면 이클립스에 lombok을 설치해야 합니다. lombok.jar를 설치하려면 윈도우에서 cmd로 lombok.jar를 실행시켜야 합니다. 그러면 위와 같이 아래와 같이 설치 화면이 보이는데 여기서 현재 사용하고 있는 이클립스를 선택하고 Install/Update 버튼을 클릭합니다. (다른 이클립스에 설치하려면 Specify location 버튼을 클릭해서 이클립스를 선택합니다.) lombok 설치가 제대로 끝났으면 위와 같이 "Install successful" 화면이 표출됩니다. 그리고 이클립스를 실행시키면 lo.. use try-with-resources or close "DefaultTransaction" in a "finally" clause 버그 수정 얼마 전에 시큐어 코딩하다가 다음과 같은 버그를 발견하게 되었습니다. 이런 버그는 처음 접해서 구글링해 본 결과 트랜잭션을 커밋하다가 예외가 발생했을 경우 처리하는 경우가 없어서 발생한 버그였습니다. 예를 들면 데이터베이스에 작업하다가 에러가 발생한 경우 지금까지 작업한 내용을 반영(commit) 하지 않고 작업하기 이전 상태로 롤백하는 경우라고 생각하시면 될 거 같습니다. (현재 작업 중인 트랜잭션 취소) 회사 소스 코드라 모자이크 처리한 거 이해해주시기 바랍니다. 위의 소스를 보게 되면 finally 안에 "transaction.close();"가 추가된 것을 볼 수 있습니다. 트랜잭션 작업 중간에 예외가 발생하거나 발생하지 않아도 트랜잭션이 해제되도록 수정했습니다. 앞으로 트랜잭션 관련 작업을 할 .. 스프링 프레임워크 개발 시작하기 신입사원인 분들에게 지금 당장 웹 프로젝트를 개발하라고 하면 아마도 어려워하실 분들이 계실 겁니다. 그래서 그런 분들 위한 진짜 간단하게 웹 프로젝트를 개발하는 방법을 포스팅하려고 합니다. 여기서 "간단하게"란 데이터 베이스 연동이나 스프링 시큐리티, 파일 업로드 등등 이런 거는 빼고 순수하게 mvc 패턴 기반 페이지를 띄우는 웹 프로젝트입니다. 데이터 베이스 연동이 없으니 model 없다고 봐야겠네요. 중간중간 자세한 설명은 생략하겠습니다. 웹 프로젝트를 개발하기 위해 Dynamic Web Project를 생성합니다. Maven Project로 하는 방법도 있으나 여기서는 Dynamic Web Project로 하겠습니다. 이클립스 마우스 오른쪽 클릭해서 new -> other를 선택합니다. Dynami.. 이전 1 2 3 4 5 6 다음