[Java] MultipartHttpServletRequest 다중 파일 업로드시 파일 체크
게시판 글 작성시 파일 첨부없이 등록할 경우에 파일 유무 체크를 아래와 같이 size로만 하였다. public String saveWrite(MultipartHttpServletRequest uploadFile){ List fileList = uploadFile.getFiles("uploadFile"); if(fileList.size() > 0){ String seq = clubBoardCreateDTO.getSeq(); //첨부파일 fileUpload.saveFiles(uploadFile, "clubBoard", seq); } } 그런데 첨부를 안해도 size가 1이나오는 이슈가 있었다. 아래와 같이 수정하였다. public String saveWrite(MultipartHttpServletReques..
2022.07.21
[MyBatis] update set에 모두 if 사용하기와 trim태그
개발 과정에서 업데이트 해야할 요소가 정해져있지 않은 경우가 있을 수 있다. update testTable test1 = #{test1}, test2 = #{test2}, 위 와 같이 사용하면 되는데 하나씩 알아보자 Trim 접두어(prefix), 접미어(suffix) 작업 하며, 를 보완하는 역할 속성에 대해서 알아보자 1. prefix 태그 내부에 실행될 쿼리문 가장 앞에 속성값을 삽입 insert (id, pw) ('admin', '1111') -> insert (id, pw) values ('admin', '1111') 2. suffix 태그 내부에 실행될 쿼리문 가장 뒤에 속성값을 삽입 insert (id, pw) values 'admin', '1111' -> insert (id, pw) val..
2022.07.21
[Java] 오버로딩(overloading)
Java에서 단골로 나오는 면접질문이기도 하고, 그만큼 당연히 알고 있어야하는 것인데, 정리를 해보겠다. 오버로딩(overloading) 한 클래스안에 같은 이름의 메서드를 다르게 정의하는것이다. 오버로딩 조건 1. 메서드 이름이 같아야한다. 2. 아규먼트의 개수 또는 타입이 달라야한다. Class Overloading{ public void testOverloading(String a) {} public void testOverloading(String a, String b) {} public void testOverloading(int a, String b) {} } 오버로딩 장점 하나의 이름으로 아규먼트의 타입과 개수에 따라서 다른 기능을 할 수 있도록 해준다. 깔끔하게 사용 가능하다. 대표적으로 ..
2022.07.21
HttpServletRequest와 HttpServletResponse
WAS가 클라이언트(브라우저)로 부터 서블릿 요청을 받게되면 일어나는 순서 1. HttpServletRequest 객체를 생성( 요청받은 데이터가 저장된 객체 ) 2. HttpServletResponse 객체를 생성( 빈 객체 ) 생성된 HttpServletRequest , HttpServletResponse 객체를 서블릿으로 전달하게 된다. HttpServletRequest 위에서 설명한것과 같이 클라이언트가 전달한 데이터를 담고있는 객체이다. 단일 데이터를 꺼낼때는 아래와 같이 사용 http://localhost:8080/request?id=gold HttpServletRequest request String id = request.getParameter("id"); getParameter의 반환타입..
2022.07.21
no image
[Spring] Servlet
@ServletComponentScan 스프링부트에서 서블릿을 사용하려면 사용한다. Annotation을 사용한 패키지부터 하위 패키지들을 스캐닝하여 서블릿을 사용할 수 있도록 해준다. 아래는 서블릿코드이다. @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("HelloServlet.service"); System.o..
2022.07.20
[Spring MVC] 웹 애플리케이션 이해
쓰레드 스프링부트 톰캣 맥스 커넥션 검색하여 쓰레드 설정을 할 수 있다. 낮게 설정
2022.07.19
[Java] 클래스메서드, 인스턴스메서드
메서드 앞에 static이 붙으면 클래스 메서드이고, 붙지 않으면 인스턴스 메서드이다. 접근 방법은 클래스명.메서드명이다. static 특징 1. 모든 인스턴스에 공통으로 사용하려는 것 - 같은 값이 유지되어야 하는 변수의 경우 static을 붙인다. 2. 인스턴스를 따로 생성하지 않아도 메모리에 올라갈 때 자동 생성이 된다. 3. 클래스 메서드에서는 인스턴스 변수를 사용할 수 없다. 그러나 인스턴스 메서드에서는 static 멤버 사용이 가능하다. 왜 그런지 알아보자. 클래스 변수의 경우에는 메모리에 올라감과 동시에 생성이 된다. 그렇다 보니 인스턴스의 생성시점보다 앞서있다. 반면에 인스턴스 메서드에서 클래스 메서드를 사용할 수 있는 이유는 생성시점이 뒤에 있다 보니, 이미 생성된 클래스 변수는 사용이 ..
2022.07.14
[Spring] 의존관계 자동 주입
@ComponentScan을 통해 패키지 스캔중 @Component가 있으면 스프링빈 등록이 되고, @Autowired가 있는경우에 스프링빈으로 등록이 된것을 찾아 의존관계 주입을 한다. ​ 여기서 의존관계 주입 방법이 몇가지 있다. 1. 생성자 주입 - 생성자를 통하여 의존 관계를 주입 - 생성자 호출 시점 한번만 호출 되는것을 보장 - final 키워드 사용가능하여 null 방지 가능 ( final : 값이 무조건! 초기화 되어야 한다는걸 의미 ) - 불변, 필수 의존관계에 사용 @Component public class OrderServiceImpl implement OrderService{ private final MemberRepository memberRepository; private fin..
2022.07.14