SPRING 20

SPRING 웹소켓에서 HttpSession 값 불러오기

개념 WebSocketSession과 HttpSession은 다르다. WebSocketSession은 HttpServletResponse, HttpServletRequest 등 servlet 관련 클래스를 사용할 수 없다. VO를 사용한 이용자 정보는 HttpSession에 저장된다. WebSocket 접속자 정보는 WebSocketHandler에서 WebSocketSession에 저장된다. HttpSessionHandshakeInterceptor를 사용하도록 설정하면 WebSocketHandler 동작(handshake) 이전에 HttpSession에 접근해 원하는 정보를 WebSocketHandler로 전달할 수 있다. 상황 웹소켓에서 HttpSession을 사용해서 현재 로그인 중인 회원 아이디(M..

SPRING 2023.02.19

SPRING 웹소켓 기본설정 (Java Configuration)

환경 : 스프링 레거시, Maven, 자바 설정 전체 코드 [WebSocketConfig.java] : WebSocketConfig implements WebSocketConfigurer @Configuration @RequiredArgsConstructor @EnableWebMvc @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer{ private final MyWebSocketHandler myWebSocketHandler; @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(myW..

SPRING 2023.02.18

SPRING mybatis <selectKey>

: 자동 증가를 설정한 PK값을 태그를 통해 수동으로 얻어와 그 결과를 이용할 수 있도록 한다. 예를 들어, 게시판에 게시글 등록 후 "00번 게시글이 등록되었습니다"라는 모달창을 띄울 때 사용할 수 있다. 게시글 번호를 자동 증가하도록 설정한 후 단순 태그를 사용해서 글을 등록하고 해당 객체에서 게시글 번호를 얻어오면 모두 '0'으로 출력된다. (MySQL) 태그로 새 글 등록 전 글번호에서 1을 더한 값를 얻어온 후 그 결과를 방금 등록한 게시글 번호로 사용하면 된다. ※ order속성 BEFORE를 사용할 경우 첫 글을 게시할 시 이전글 번호(boardno)가 없어서 sql문에서 에러가 방생한다. order속성 AFTER를 사용하니 해결됐다. ex) mapper Interface public voi..

SPRING 2023.02.13

SPRING 의존성 주입

1. 의존성 주입 설정 root-context에 component-scan 추가 XML 설정 root-context.xml -> Namespaces탭 -> context체크 -> root-context.xml에 코드 추가 Java 설정 RootCconfig.java에 코드 추가 @Configuration @ComponentScan(basePackages= {"com.toy.sample"}) public class RootConfig { 2. 의존성 주입 방법 : 생성자 주입과 setter 주입 방법 등이 있다. 1) 생성자 주입 : 생성자를 정의 후 주입한다. ex) @Component + 생성자 생성 @Component @Data //Lombok의 setter, 생성자, toString 등을 자동으로 ..

SPRING 2023.02.08

SPRING 테스트 코드 작성

: spring-test 모듈을 이용해 스프링을 간단하게 가동한다. (Junit 4.0이상) 기본 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes= {RootConfig.class}) @Log4j public class 테스트클래스명 { @Setter(onMethod_ = @Autowired) //생성자 주입 private 필드타입 필드명; @Test //JUnit에서 테스트 대상 표시 public void 테스트메소드명() { ... } } Controller @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(classes = {..

SPRING 2023.02.07

SPRING 설정 (JAVA Configuration)

1. SPRING 기본 설정 SPRING 기본설정 (XML, JAVA 공통) 2. JAVA Configuration 설정 파일 생성 1) xml설정 파일 삭제 1.1) web.xml과 WEB-INF - spring폴더(servlet-context.xml, root-context.xml) 삭제 1.2) pom.xml에 web.xml이 없다는 설정 추가 org.apache.maven.plugins maven-war-plugin 3.2.0 false 2) RootConfig.java 생성 (root-context.xml을 대신함) : 객체(Bean)를 설정하는 파일이다. Spring Framework가 실행되면 스프링이 사용하는 메모리 영역인 Context를 만들고, ApplicationContext라는 객체..

SPRING 2023.02.06

SPRING 설정 (XML)

1. SPRING 기본 설정 SPRING 기본설정 (XML, JAVA 공통) 2. 오라클 db 연동 먼저 오라클과 SQLDeveloper를 설치한다. 2.1. JDBC연결 1) pom.xml에 오라클jdbc 라이브러리 추가 com.oracle.database.jdbc ojdbc8 21.1.0.0 + JDBC 드라이버를 프로젝트 경로에 포함되도록 설정 Java Build Path - add external library - sql developer - product - lib - ojdbc jar 파일 2.2. 커넥션풀 설정 1) pom.xml에 HikariCP 라이브러리 추가 com.zaxxer HikariCP 2.7.4 2) DataSource 설정 root-contect.xml에 아래 코드 추가 3...

SPRING 2023.02.04

SPRING 파일 업로드 다운로드

Multipart 웹 클라이언트가 요청을 보낼 때 http프로토콜의 body 부분에 데이터(content type, 파일이름 등)를 여러 part로 나누어 보내는 것이다. 보통 파일 전송 시 사용한다. HttpServletRequest는 이 multipart데이터를 읽어들이는 메소드를 지원하지 않는다. body부분을 읽어들이는 InputStream만 지원하기 때문에 stream으로 전달되는 multipart데이터를 처리 하기 위해 라이브러리를 사용한다. 설정 방법 1. [pom.xml]에 라이브러리 추가 1) apache의 commons-fileupload 추가 2) commons-io 추가 2. MultipartResolver Bean 추가 (CommonsMultipartResolver) "multip..

SPRING 2023.01.17

SPRING 페이징 처리 (pagination)

목표 : 빠르게, 필요한 양만큼만 데이터를 가져온다. 페이징 처리 방법 2가지 1) 번호 이용 2) 계속 보기(무한스크롤, 더보기) 실행계획 : SQL을 DB에서 어떤 순서와 방식으로 처리할 것인가? : SQL 파싱(parsing) -> SQL 최적화 -> SQL 실행 SQL을 실행하면 트리구조로 처리결과를 보여준다. 안쪽에서 바깥쪽, 위에서 아래로 확인한다. 1. 오라클 db 페이징 처리 1.1. index를 이용한 정렬 : 색인. 데이터베이스의 테이블의 데이터를 찾거나 정렬하기 위한(scan) 도구이다. : 테이블 생성 시 PK를 지정하면 인덱스가 만들어 진다. : 정렬이 되어 있는 상태이다. (SORT 과정 생략 가능) + order by를 사용해 정렬하면 데이터가 많은 경우 엄청난 시간과 리소스를..

SPRING 2022.11.30

SPRING 로딩 구조, 어노테이션

: 스프링 프레임워크 동작 -> 필요한 객체 등록 -> 의존성 주입 수행 ex) 스프링 프레임워크 동작 -> 스프링이 사용하는 메모리 영역인 Context를 만듦 (스프링 컨테이너인 ApplicationContext 객체 생성 - 스프링은 필요한 객체들을 생성·주입 등을 관리하는 '컨테이너'나 '팩토리'기능이 있다.) -> 객체들에 대한 설정파일인 root-context.xml이 태그에 등록된 패키지들을 스캔. -> 해당 패키지들의 클래스 중 @Conponent 어노테이션이 존재하는 클래스의 인스턴스를 생성 (@Component 해당 클래스가 스프링에서 관리해야하는 대상임을 표시) -> @Autowired에 따라 객체 주입시킴 1.1 설정파일 1) web.xml : Tomcat 구동과 관련된 설정 (we..

SPRING 2022.11.25