java
-
[Spring] Redirect후에도 전송파라미터를 유지할 수 있을까? RedirectAttributes, @RequestParam에 대해Spring 2022. 8. 19. 00:41
리다이렉트 방식은 페이지를 이동하면 이전 요청은 사라지고 새로운 요청이 발생합니다. 이과정에서 아무 처리를 해주지 않는다면 전송파라미터를 리다이렉트 후에 가져올 수 없습니다. 정말 흔히 볼 수 있는 게시판을 예로들어 상황을 가정해 보겠습니다. 보통 작성, 수정, 삭제와 같이 변경이 일어나는 요청은 리다이렉트로 처리합니다. 이에 따라 게시글 수정창에서 post요청으로 수정 처리를 한 후에는 상세페이지 조회 창으로 리다이렉트 처리를 했습니다. 그러나 리다이렉트로 이동하였기 때문에 이전 요청은 종료되고 새로운 요청이 발생하여 현재 페이지 번호를 나타내주는 currPage파라미터 값을 얻어올 수 없었습니다. 이 상태에서 페이지 목록으로 되돌아가면 예외가 발생합니다. 이 문제를 해결하기 위해 RedirectAtt..
-
[Spring] Show @RequestMappings가 보이지 않을 때Spring 2022. 8. 14. 18:00
분명 컨트롤러에 url매핑을 다 해놨음에도 show @RequestMappings를 보면 아무것도 나타나지 않았다. context파일에 beans graph도 보이지 않는 상황 원인은 해당 프로젝트에 spring config설정이 빠져있기 때문이었다. 프로젝트 우클릭 - [properties] - [Spring] - [Beans Support] 로 들어가면 원래는 저곳에 context파일들이 들어있어야 하는데 아무것도 없다. root-context.xml과 servlet-context.xml 파일을 설정한 후 apply를 누르면 정상적으로 나타난다. 안나오던 beans graph도 정상으로 나온다.
-
[MyBatis] 매퍼 xml파일과 매퍼 인터페이스를 사용한 CRUDJAVA 2022. 7. 24. 23:16
먼저 테이블이 있어야 하므로, 다음과 같은 컬럼과 값을 가진 tbl_member 테이블을 생성한다. CREATE TABLE tbl_member( userid varchar2(50) not null primary key, userpw varchar2(100) not null, username varchar2(100) not null, regdate date default sysdate, updatedate date default sysdate, enabled char(1) default '1'); 그리고 도메인 패키지에 UserVO 클래스를 만들고 다룰 데이터들을 필드로 지정했다. package org.zerock.myapp.domain; import lombok.Value; @Value public cl..
-
[MyBatis] 마이바티스란? 메이븐 프로젝트에서 마이바티스 설정하기JAVA 2022. 7. 24. 22:21
MyBatis란? 마이바티스는 자바 퍼시스턴스 프레임워크로, 자바의 관계형 데이터 베이스 프로그래밍을 보다 쉽게 도와준다. JDBC를 보다 편하게 사용하기 위해 개발되었고, SQL문을 코드로부터 분리할 수 있다는 장점이 있다. xml파일과 어노테이션을 사용한 인터페이스로 SQL쿼리를 실행할 수 있다. 마이바티스를 사용하기 위해서는 dependency에 먼저 마이바티스를 추가해야 한다. org.mybatis mybatis 3.5.10 그리고 마이바티스 설정파일인 mybatis-config.xml 파일이 필요하다. 여기에 DB연결정보를 저장해두고, 만든 매퍼xml파일과 인터페이스의 경로를 지정한다. (설정파일에 해당 경로를 알려주지 않으면 마이바티스가 찾을 수 없기 때문) environments 태그 안에 ..
-
[JAVA] JUnit5를 이용해 테스트 코드를 작성해보자!JAVA 2022. 7. 23. 00:55
테스트 주도 개발(TDD, Test-Driven-Development)을 하기 위한 테스트코드를 작성하는 방법을 배웠다. JUnit4버전과 JUnit5버전 모두 배웠는데, JUnit5를 중점으로 설명하려고 한다. JUnit4 VS JUnit5 우선 JUnit4버전과 5버전의 차이를 정말 간단하게만 정리하면, 사용하는 어노테이션에 차이가 있다. 4버전에서의 @Before, @BeforeClass, @After, @AfterClass, @Ignore어노테이션이 5버전에서는 @BeforeEach, @BeforeAll, @AfterEach, @AfterAll, @Disabled로 변경됐다. 4버전의 이름은 처음 접했을 때 무슨 의미인지 잘 와닿지 않았는데, 바뀐 이름으로 보니 한번에 이해할 수 있어서 직관적으로..
-
[Servlet] 파일업로드시 현재날짜로 디렉토리 생성하기, UUID로 파일명 저장하기JAVA 2022. 7. 14. 00:41
서버에 파일업로드를 할 때, 자동으로 날짜별 폴더로 구분지어놓으면 관리하기 편할 것이다. 또한 파일명을 UUID로 지정한다면 중복파일명이 생기는 것도 방지할 수 있다. UUID(universally unique identifier)란? 범용고유식별자. 128비트의 숫자이며, 32자리의 16진수로 표현된다. 여기에 8-4-4-4-12 글자마다 하이픈을 집어넣어 5개의 그룹으로 구분한다. (ex. 550e8400-e29b-41d4-a716-446655440000) 세션ID를 설정할 때나, 중복되지 않는 고유한 ID값을 생성하고자 할 때 사용한다. 이렇게 파일업로드를 하면 자동으로 오늘날짜로 폴더가 생성되고, 파일명은 '날짜_UUID'로 저장하는 방법을 간단하게 구현해보았다. 입력받을 html파일 생성 .....
-
[Servlet] Scope 단위 (Application, Session, Request, Page)JAVA 2022. 7. 12. 18:00
서블릿에서는 데이터를 서블릿 속성에 등록해놓고 공유할 수 있는데, 이 때 공유범위로 4가지 Scope가 있다. Scope 설명 Application Scope 가장 긴 범위. WAS가 살아있는 동안 유지된다. Session Scope 하나의 세션동안 유지된다. 브라우저를 종료하면 파괴된다. Request Scope 하나의 요청이 일어나서 응답이 완료될 때까지 유지된다. Page Scope JSP에서 사용되고, 페이지단위에서만 유지된다. 가장 짧은 범위 1. Application scope 어플리케이션 스코프에 데이터를 올려두면 WAS(ex. Tomcat)이 살아있는 동안엔 계속 유지된다. 서블릿 어디서든 해당 데이터를 가져다 사용할 수 있다. ... @Override protected void Servi..
-
[Servlet] 포워딩(Forward)과 리다이렉트(Redirect)JAVA 2022. 7. 11. 22:53
현재 작업중인 페이지에서 다른 페이지로 이동할 때, 포워드 방식과 리다이렉트 2가지의 방법이 있다. 각각의 방식을 어떻게 구현하고, 둘은 어떤 차이가 있는지 알아보았다. 1. 포워딩 Forward 포워딩은 응답을 만들어 낼 웹컴포넌트에 요청을 위임하는 방식이다. 여기서 웹 컴포넌트는 서블릿이 될 수도 있고, JSP가 될 수도 있고, 웹 컴포넌트라면 포워딩할 수 있다. 상황을 예를들어, 웹에서 사용자가 버튼을 클릭하면 내용을 변경하여 화면에 보여주려고 할 때, 비즈니스 로직을 수행 후 View로 포워딩하면 View에서는 해당 비즈니스 데이터를 가지고 응답문서를 만들어 내보낸다. 포워딩방식의 가장 큰 특징은 원래의 url을 변경하지 않는다는 점이다. 응답이 끝날 때 까지 요청정보를 그대로 가지고 있는다. 따..