글쓰기

전체 글 141

raspberry pi 4 4gb에 Ubuntu server 설치하기(usb-ssd : JMicron)

- [라즈베리파이 usb 부팅 설정] 내용은 생략 - 1. preinstalled 파일 다운로드 (ubuntu 22.04) https://cdimage.ubuntu.com/releases/22.04.1/release/ 위 주소로 접속해서 preinstalled server 파일을 다운로드 받는다. (20.04 이하 버전은 특정 usb-ssd에서 부팅이 불가능하다. 해당 문제는 20.10이상 버전부터 수정 되었다고 한다.) 2. ubuntu img를 ssd에 flash하기 다른 프로그램을 사용해도 되지만 보통 balenaEtcher를 사용해서 다운로드 받은 ubuntu server img를 flash 해준다. 3. 라즈베리파이에 usb2.0포트에 ssd를 연결하고 부팅한다. 4. usb3.0 설정 추가 s..

JWT와 Session인증 차이점 정리

인증을 하는 이유 HTTP프로토콜에서 서버는 클라이언트(사용자)정보를 저장하고 있지 않기 때문에, 클라이언트에 통신 요청 시 어떤 클라이언트가 요청했는지 알 수 없다. 따라서 클라이언트 식별이 필요한 요청(개인정보, 회원 기능)등을 처리할 때 클라이언트 정보와 같이 전송하여 서버에서 어떤 클라이언트가 요청했는지 확인할 수 있게 해야 한다. 이를 위해 클라이언트에서는 "쿠키"가 사용되고, 서버에서는 "세션"이 사용된다. Session이란? 서버 메모리에 저장되는 저장 공간이다. 서버에 저장하기 때문에 클라이언트와 통신이 종료 되더라도 클라이언트 정보를 계속 저장하고 있을 수 있다. 작동 방식 클라이언트에서 로그인(인증) 시 서버에서 세션 생성하게 되고, 세션ID가 발급되어 클라이언트에게 전송되다. 클라이언..

Intellij 다른 모듈 Class참조

Eclipse를 사용할 때는 하나에 프로젝트에 하나에 모듈만 사용했던 거 같은데 Intellij를 사용하면서 하나에 프로젝트에 여러개의 모듈을 생성하고 기능을 분리할 수 있다는 걸 알았다. 인터넷 검색시 어떻게 모듈을 추가하는지만 나오고 다른 모듈에 있는 파일을 참조하려고 하면 (ex- classpath*: ) 파일을 못찾았다. ps_main에서 ps_module에 있는 파일(Class, xml 등등)을 참조하고 싶을 때는 참조받으려는 모듈에 pom.xml에서 참조하려는 모듈에 pom.xml에 선언된 artifactId와 groupId, version을 dependency에 추가해 주면 된다. - 참조하려는 모듈 pom.xml - 참조받는 모듈 pom.xml 이렇게 추가하고 Project Structur..

Log4j와 Slf4j를 이용한 Log출력

프로그램, 또는 웹 서버를 개발하면서 값, 상태, 오류 등을 출력해야 하는 일이 발생한다. 보통은 System.out.print 또는 System.err.pring를 이용한다. 이렇게 사용하면 시스템에 자원을 낭비할 뿐만 아니라 Log를 찾는것도 어렵고 유지하기도 어렵다. 따라서 로그를 따로 출력하거나 저장하여 사용하여야 한다. Log4j(Log For Java)의 장점 - System.out.print에 비해서 속도가 빠르다. - 멀티스레드 환경에서도 안전하게 작동한다. - 계층적인 로그 설정과 처리가 가능하다. - 출력을 콘솔, 원격, Email, DB, 파일등 다양하게 가능하다. Slf4J(Simple Logging Facade For Java)이란? log4j, logback, commons-lo..

Spring Framework 실행 순서

- Spring Framework에 실행 순서 1. Tomcat(WAS)에 의해 web.xml을 읽어오며, Servlet Container가 실행된다. #Servlet Container : 서블릿의 생명주기 관리, 연결관리, 보안 기능 2. web.xml에 있는 ContextLoaderListener가 자동으로 메모리에 생성(Pre-Loading) ContextLoaderListener 클래스는 ServletContextListener 인터페이스를 구현, Servlet의 생명주기를 관리 ApplicationContext를 생성 Servlet을 사용하는 시점에 서블릿 컨텍스트에 ApplicationContext 등록 Servlet이 종료되는 시점에 ApplicationContext 삭제 3. 생성된 Con..

스프링에서 AOP란?

- AOP(Aspect Oriented Programming)란? 관점 지향 프로그래밍이라고 불리며 핵심기능(관점), 부가적인 관점(기능)으로 나누어 각각 모듈화 하겠다는 것이다. 출근, 산책, 쇼핑이라는 행동을 예를 들어 생각해보면 모두 집을 나가고 들어오는 행동이 필요하다. 이때 핵심기능(관점)은 출근, 산책, 쇼핑이고, 부가적인 관점(기능)은 집을 나갔다 들어오는 행동이다. 이렇게 중첩되는 부가적인 관점(기능)을 모듈화하고 이를 어떤 시점에 어느 지점에 사용할지 정의해 주게 된다. 모듈 : 집을 나가기 시점 : 핵심기능(관점)인 출근, 산책, 쇼핑을 하기 전 지점 : 집 - AOP 주요 개념 Aspect : 위에서 설명한 흩어진 관심사를 모듈화 한 것. 주로 부가기능을 모듈화함. Target : A..

스프링 컨테이너란?

스프링 컨테이너란? - 스프링 컨테이너는 자바 객체의 생명주기를 관리, 생성된 자바 객체(bean)들에게 추가 기능 제공을 하는 역활을 담당. - 생성과 소멸을 대신 해주며, 객체들 간의 의존 관계를 런타임 과정에서 처리 하기 때문에 제어 흐름을 외부에서 관리 - IoC와 DI의 원리가 이 스프링 컨테이너에 적용. - 종류는 BeanFactory와 ApplicationContext가 있다.

Servlet should have a mapping 오류

- 오류 간단한 Spring MVC 모듈을 만들고 web폴더를 main 내부로 이동하는 과정에서 web.xml에 dispatcher 부분에서 오류 발생 - 원인 web 폴더를 이동하는 과정에서 이동된 web.xml파일의 경로를 올바르지 않는 경로로 설정함 - 해결 intellij 환경 기준 Modules 설정으로 들어가 Web에 Deployment Descriptros에 경로를 정상적으로 설정해준다.

Controller에 properties값 출력 오류

- 오류 임의로 properties파일을 만들고 Controller에서 이 값을 가져와 JSP에서 출력해주려고 하는 과정에서 오류 발생 @Value("${test.data}") private String testData; Controller에서 추가해 주었던 Value에 속성값이 문자열 형태 그대로 출력되는 현상 발생 정상적으로 실행되면 Value에 속성값에 해당하는 키를 properties에서 찾아 값을 출력해주어야 한다. - 원인 properties파일을 전역 변수로 설정하지 않아서 발생한 문제 (글쓴이는 위 태그만 사용하면 properties에 데이터를 불러와 사용할 수 있다고 알고 있었다.) - 해결 Servlet.xml에 추가한다.