Java (21) 썸네일형 리스트형 ajax로 배열 넘기기 / controller에서 arraylist 받기 (@RequestParam) - ajax 로 배열 넘기기 - ajax로 파라미터를 보낼 때 javascript 객체를 하나 보낸다. 그 객체 안에는 여러 가지 key와 value 쌍들이 있고, 그 value 중에는 list 타입도 있다. 이 list를 controller에서 어떻게 받아야 할까? 방법은 두 가지다. 하나는 stringify 해서 문자열로 보내고, controller에서 parsing하는 방법이다. parsing 할 때는, String을 parsing하여 그 결과를 JSONArray 로 받고, 그렇게 받은 JSONArray를 그대로 java의 List 변수 안에 넣어준다. (Java 안에서 JSON을 다루는 법은 아래 글을 참고하자) https://parksay-dev.tistory.com/49 두 번째 방법은 @Re.. 파라미터 DTO를 만들어서 파라미터 여러 개를 한 번에 받기 $.ajax({ url: 'searchItem', data: { searchKeyword : 'hello', dateStart : '2022-04-07', dateEnd : '2022-04-09', }, method: 'POST', success: function(result) { console.log(result); } }); Java Spring Framework에서 검색 기능을 구현한다고 해 보자. 쉽게 볼 수 있도록 ajax에서 controller로 보내는 파라미터 부분인 data 속성만 따로 떼어서 보자. jQuery 객체가 들고 있는 ajax() 함수를 호출하고, 그 함수의 파라미터로 어떤 객체 하나를 넣어 준다. ajax 함수를 부를 때 파라미터로 넣어주는 객체는 url, data, meth.. Spring이 service 인터페이스와 serviceImpl 를 연결하는 법 - spring에서 @Autowired 쓰기- 나는 학원에서 조금 다르게 배웠다. MVC 패턴을 구현할 때 구조가 조금 달랐다. controller > dao > database 구조로 배웠다. 지금 새로 공부하면서 구조가 조금 다르다는 것을 알게 됐다. 이런 식으로 더 많이 쓰는 듯했다. controller > service > dao > database 그전에는 비지니스 로직을 컨트롤러에서 주로 처리했다. 아마 프로그래밍을 처음 배우는 단계이다 보니 그렇게 복잡한 기능을 구현하지는 않았기 때문이라고 생각한다. 하지만 규모가 커지면 비지니스 로직을 주로 다루는 단계가 따로 필요해진다. controller는 클라이언트와 서버가 데이터를 주고 받는 활동을 주로 다룬다. dao는 데이터베이스와 왔다 갔다하는.. AOP 란? 스프링 xml에서 <aop:config> 태그 용도 - AOP란? - AOP는 Aspect-Oriented Programming를 줄인 말이다. 관점 지향 프로그래밍 정도로 번역한다. OOP(Object-Oriented Programming)가 객체를 중심 요소로 놓고 개발해 보자는 자세라면, AOP는 관점을 중심 요소로 두어 보자는 의미다. 관점을 중심으로 보자는 말은 무슨 뜻일까? 실생활에서 이런 말을 가끔 쓴다. '소비자의 관점에서 생각해 보자.' '학생의 관점에서 생각해 보자.' 똑같은 상황을 두고 다른 사람 입장에서 생각해 보자는 의미다. 무언가를 먹을 때도, 소비자의 관점에서는 맛에 관심이 있을 것이고, 사업가의 입장에서는 얼마나 잘 팔리는지에 관심이 있을 것이고, 질병관리청의 입장에서는 위생에 관심이 있을 것이다. 이처럼 관점을 다르게 하면 .. web modules 기능과 path 설정 @Controller @RequestMapping("/hello") public class HelloController { @RequestMapping(value = "/big", method = RequestMethod.GET) public String hello(){ return "hello/hello-main"; } } 위처럼 컨트롤러를 만들어 놓았다. 예상대로라면 아래 URL로 접속할 수 있어야 한다. http://localhost:8080/hello/big 그런데 접속이 되지 않았다. 컨트롤러에 프린트를 추가했다. System.out.println("hello controller access"); 콘솔에 출력되지 않았다. 아예 컨트롤러를 못 찾고 있었다. 매핑이 잘 못 됐나? @RequestMa.. [JAVA] 증감연산자 의미와 위치에 따른 종류 (ft. i++ 의미) public void printData() { int idx = 3; idx = getNextIdx(idx); System.out.println(idx); } private int getNextIdx(int idx) { if(idx < 10) { return idx++; } else { return 0; } } - 의문점 - printData()에서 idx를 출력하면 뭐가 나올까? 원래 idx는 3이었고, getNextIdx()에서 idx++ 를 실행하여 되돌려주므로 4가 된다. 따라서 출력되는 idx 값은 4가 된다. 위처럼 생각한다면 틀렸다. idx 값은 3이 출력된다. 그 이유를 살펴보자. - 증감 연산자 - idx = idx + 1; 위 코드는 idx를 1만큼 증가시키는 명령문이다.. 그런데 어떤.. [JAVA] while 문에서 애초에 조건을 만족하지 않는다면? (ft. while문 do while문 차이) - while문 조건을 만족하지 않으면? - while문은 특정한 조건이 만족하는 동안에만 반복한다. 그렇다면 애초에 조건을 만족하지 않는 상태라면 어떻게 될까? while문 안에 들어가기는 할까? 아니면 아예 들어가지를 않을까? 그러니까, 일단 한 번 돌고 나서 조건문으로 갈까, 아니면 들어가기 전에 조건문을 체크하는 게 먼저일까? 막상 이렇게 질문을 받으니 확신이 서지 않지 않는가? 나도 갑자기 궁금해져서 바로 실험을 해 봤다. int idx = 5; while(idx < 5) { System.out.println(idx); idx++; } 예를 들어 위와 같은 while문이 있다고 하자. 이 경우에 5가 출력될까? 정답은 출력되지 않는다. 그러니까 while문은 들어가기 전에 조건문을 먼저 체크한다.. [JAVA] switch 문을 반복문으로 바꾸기 - switch 두 번 돌려야 할 상황에서 for문으로 변환하기 - Stack 기반으로 계산기를 만들고 있었다. 연산자에 따라서 우선 순위를 다르게 부여해야 한다. 그 연산자가 op1 과 op2 두 개가 있다. 똑같은 작업을 op1 과 op2 에 두 번 해야 한다. 지금은 2개지만, 더 늘어난다면 여러 번 반복해야 할 수도 있다. 아니, 여러 번 반복하든 어떻든, 똑같은 코드를 두 번 쓰는 구조가 싫었다. op1과 op2를 배열에 담아 버린 뒤에, 그 배열을 가지고 for문을 돌리기로 했다. 각 요소마다 새로운 정보를 저장해야 한다면, 미리 따로 배열을 만들어 놓고, op1과 op2를 담은 배열과 인덱스가 일치하도록 정보를 담아 두기로 하자. //before switch(op1) { case "(" : .. 이전 1 2 3 다음