프로그래밍(81)
-
[Servlet] getContextPath()와 getServletContext()의 차이 및 사용방법
프로젝트를 하다 보면 파일을 업로드하고 img 파일의 경로를 설정하기 위해서 getContextPath() 및 getServletContext() 메서드를 사용할 일이 종종 있다. 이 메서드들의 차이는 무엇이고 각 메서드가 어떤 경로를 불러오는지, 그 경로를 통해 어떻게 파일에 접근하는지에 대해 알아보자. System.out.println("getContextPath : " + request.getContextPath()); ServletContext context = request.getSession().getServletContext(); System.out.println("servlet context : " + context.getRealPath("") ); 컨트롤러에 위 코드를 작성하고 콘솔창 출..
2023.07.25 -
[spring] 웹 서버에서 img를 로드하지 못하는 문제 해결
img 태그를 작성할 때 src(경로 설정) 속성값에 {본인의 프로젝트 경로(context path) } /resources/img/logo.png와 같이 작성했을 때 서버에서 계속 이미지를 로딩하지 못하는 문제가 발생했다. 우선 컨트롤러에서 print문을 이용해 ServletContext의 getRealPath메서드로 서버가 정적 리소스에 접근하는 경로를 확인해봤을 때 target폴더의 snapShot폴더로 접근하는 것을 알 수 있었다. 해당 폴더 아래에는 정상적으로 resources 폴더가 있음에도 img태그가 인식되지 않았고 심지어 직접 URL을 통해 접근해도 jsp파일 이외의 정적파일에는 접근할 수 없는 문제가 발생했다. 아마도 spring 프로젝트는 dispatcherServlet을 통해 사용자..
2023.07.24 -
[Spring] log4j.xml 추가하기 (콘솔창에서 로그내역 확인하기)
Spring을 이용해 서버를 실행시 빈 객체 생성을 위한 Bean Factory, ApplicationContext 컨테이너, DIspatcherServlet 등 여러가지 환경이 실행되게 된다. 이 때 유저가 서버에서 어떤 요청을 했는지, 그에 따른 Dispatcher Servlet의 구동은 어떻게 됐는지 확인하기 위해서는 log4j 라이브러리를 추가해야한다. 라이브러리를 추가한 후에는 classpath(src/main/resources)에 log4j.xml 혹은 lo4j.properties 파일을 생성한다면 기본 경로로 설정돼 파일의 설정값을 인식한다(classpath로 설정된 기본 경로는 사용자 정의로 설정할 수 있다). pom.xml에 의존성 추가 내용 log4j log4j 1.2.12 log4j...
2023.07.15 -
[Spring] Intellij에서 Spring 프로젝트 생성
예전에 Spring boot를 생성할 때는 강의를 참고한 것도 있었지만 별도로 설정할 것들이 많지 않았던 걸로 기억한다. 이번에 배운 내용은 Eclipse에서 Spring legacy project를 생성하는 거였는데 나는 Intellij tool을 쓰다보니 별도로 참고해서 프로젝트를 생성하면서 알게된 것들을 기록해놓고자 한다. 또한 교과서적인 방법이 없다보니 더 어려움을 느꼈던 것 같다. 우선 대략적인 프로젝트 생성 환경은 다음과 같다. 사용 IDE : Intellij Ultimate 운영체제 : Mac Ventura OS 13.x 버전 필자의 경우도 여기저기 블로그를 참고하다 애를 많이 먹었기 때문에 아무래도 처음에는 이 글을 따라한 뒤에 정상적으로 생성을 완료했다면 나중에 본인만의 방법대로 바꿔서 ..
2023.07.13 -
[IntelliJ] add framework support 시에 spring이 보이지 않는 문제
intellij add framework support 시에 spring이 보이지 않는 문제 JSP를 이용한 web server를 띄우기 위해 web Framework를 추가해 사용한 적이 있다. 이번에는 Spring 프로젝트를 생성해야 했기에 다른 블로그에서 하듯이 spring framework를 추가하려고 했으나 어떤 방법을 써도 보이지 않았고 추가되지 않았다. 구글링을 조금 더 해보니 spring이나 thymeleaf와 같은 framework가 보이지 않는 문제에 대해 한 유저가 JetBrains 사이트에 질문을 했고 관련직원(?)분들이 대답하기를 해당 기능은 여러가지의 jar들의 버전관리 문제 때문에 올해 초(2023년 1월경으로 추측)부터 없어졌다고 설명한다. 실제로 구글링을 했을때 intell..
2023.07.13 -
[Mybatis]페이지 무한로딩 문제 해결
jsp를 이용해서 Mybatis로 게시판 만들기 실습을 진행하던 도중 게시판 수정 기능(update)을 추가한 뒤로 게시판 로딩부터 선택까지 자잘한 무한 로딩이 발생했다. 무조건적으로 무한로딩이 발생하는 것은 아니었으나 중간중간 불규칙적으로 무한로딩이 발생했다. https://heewon26.tistory.com/30 mybatis update문 무한로딩... 무려 4시간동안 삽질했습니다.. 원인은 해당 테이블의 레코드를 다른 곳에서 잡고있어서 였는데, 예를 들면 SqlDeveloper와 같은 sql툴에서 업데이트(혹은 삭제)를 하고 커밋을 안한 상태에서, 애플 heewon26.tistory.com 해당 블로그를 참고하였으나 나의 경우에는 update문이 끝난 후에도 commit을 충실히 실행하고 있었기..
2023.07.10