목록Spring (34)
The Debugging Chronicles : "코드의 미학"
데이터가 여러개니까 List로 변경arrayList도 동작하는데 상관은 없지만List가 호환성이 좋다. 요청명 맞추기 Check.do로 이제는 응답 데이터 형식을 지정해야한다.default가 string text값이다.자바스크립트는 다른 프레임워크랑도 호환이 되는데 json타입을 주로 받는다. 응답을 JSON으로 요청을 하면주고 받는 모든 데이터들이 JSON으로 정해서 주고 받아진다.그래서 요청도 형식도 지정해주고 실제로 보내는 데이터도 JSON으로 해주어야한다.JSON.stringfy는 JSON 문자열화해서 보낸다는 뜻이다.@RequestBody 어노테이션을 붙여서 주어서 주고 받는 데이터가 JSON이라는 뜻이다. 값이 이제 TRUE FALSE로 오지 않기 때문에 IF -else절은 실행되지 않는다...
비동기 처리할 수 있는 2가지 방법1) String (text) 반환2) Object(object) 반환 - List, Map, DTO, JSON , ...결과창을 띄울 공간을 하나 span 태그로 만든다얘도 비동기처리에 알려줘야하기 때문에 id="mid"추가 ***파라미터 값과 BoardDTO의 데이터 변수명 및 타입 모두 동일해야한다. 외부 스크립트 연결jQuery 추가 mid 태그내용이 바뀌면 값을 가지고 오도록 한다.mid 를 잘 가지고 오는지 로그 찍어 보기 태그에 데이터가 존재할 때 비동기 실행 한다!만약 데이터가 존재하지 않을 때..비동기처리를 일반 컨트롤러한테 요청을 한다.POJO를 쓴다.일반동기로 POST mid를 보내면command 객체가 인지해서 값을 보내준다. 잘되는지..
서비스 레이어가 추가 되었으니까다른 어노테이션이 되기 전에 먼저 new가 되면 어떨까?New의 순서를 컨트롤 하기 위해 고안된 아키텍처(구조)이다 1)service 레이어를 추가했으니2)@service == new service 를 먼저 해주면 어떨까?3) 또 다른 스프링 컨테이너 ( == 루트 컨테이너)를 추가 총 xml이 3개1.web.xml 서블릿 컨테이너(==톰캣)2. ds-servlet.xml 스프링 컨테이너3. applicationContext.xml 스프링 컨테이너 (== 루트 컨테이너) 그럼 컨트롤러가 먼저 new가 되어야 할까 service가 되어야 할까?서비스가 먼저 되어야한다. 그래서 루트 컨테이너가 먼저 된다. dispatcherSevlet 때문에 ds-servlet.xml이 먼저 ..
생각1. DAO가 굳이 매개변수 자리에 있어야 하나?- view에서 쓰지 않는데 굳이 인자로 삼아야할까?생각2. 무언가를 인자로 삼으면, 결합도가 높아진다. 개발을 하면 가장 변동이 심한 것 중하나가 DBMS이다예상 동시 이용 인원 DBMS 이관해야하면 DAO가 바뀐다.MySQL BoradDAOOracle BoradOracleDAOMaira MairaBoradDAO DAO를 인자로 작성하면 이관작업할 떄 마다인자를 따라 다니면서 다 바꿔야한다. ==> 유지보수가 아주 불편한 상태이다 1. DAO를 멤버변수로 위치 시킨다면??=> 그래도 여전히 이관작업할 때 마다 코드를 변경해야함 컴파일 >> 결합도가 여전히 높음 그럼 DAO 상위 객체를 찾아보자 바로 service이다2. service 를 멤버..
get post를 핸들러 맵퍼가 구별할 수 있다면요청명을 줄여 쓸 수 있다.CU가 있으면 POST로 보내고 insertBoard를 get login 은 보안을 다루는 기능이기 때문에 POST로 적어준다. 데이터 보낼때 무엇을 사용해야하는가? modelandView를 사용하지 않고 String 을 사용한 이유는 '경량'이기 때문이다 대부분 model을 사용하는데 그런데 로그인 정보는 어딜 가든 유지 되어야 하기 때문에 Session에 넣어서 보낸다 UserID를 써서 한곳에 묶어 주어서 응집도를 높이고 유지보수를 좋게 했다 리다이렉트가 있는 것과 없는 것과 차이가 있는데 redirect: 가 없으면viewResolver가 개입VR가 포워드가 디폴트 보낼 데이터가 있으면 페이지 이동(==v로 이동..
HttpServletRequset request를 열어보면 메모리에 데이터가 있을까 없을까? 있을 것이다. 그러면 request는 어디서 new 할까? 핸들러 매핑에 의해 매핑이된 메서드의 인자는 개발자가 new해주지않아도 spring 컨테이너가 new해준다 만약 MemberDTO memberDTO를 하면 어떻게 될까? new가 될까?된다.그래서 인자에 써준다. 마치 useBean에서 setProperty에 *해주면 모든 setproperty가 담기는 것과 같다. 만약에 session이 없다면 HttpServletRequset가 필요없다.만약 없다면 POJO이다 지금 Request가 필요한게 아니라 session이 필요하다 의존성도 사라지게 할 수 있다. 스프링에서 parameter(인자)를..
ds-servlet.xml의 설정이 과도해져서 어노테이션으로 줄일 수 있다. 어노테이션 component는 일반 객체라는 뜻이다 어노테이션 component을 상속 받은 @Repository DAO @Service Service @Controller Controller있는데 Controller어노테이션을 사용한다. 컨트롤러라는 것을 인지 하기 위해 implements Controller를 사용하고 있는데 controller 어노테이션을 사용해 컨트롤러 객체라는 것을 나타낸다. 근데 오버라이드에서 오류가 난다.오버라이드는 부모 인터페이스가 사라지게 되어서 더이상 오버라이드가 불가능하게 된다.(객체(추상클래스)는 extends로 , 인터페이스는 implements로 상속 받음..
VR(ViewResolver)는화면 이동 영향 및 담당하는 객체이다. 기존에 만들어 둔 파일을 살펴보면 삭제 하고 ds-servlet에 설정해보자 resolver들의 종류가 많아서타입만으로 넣기 힘들기 때문에 id=""를 꼭 써줘야한다. "org.springframework.web.servlet.view.InternalResourceViewResolver"주입해야하는 의존성이 2개가 있다. 더 나아가기!실무 코드에서는 어떻게 할까? 페이지에 데이터를 반드시 출력해야할 때 >> 상세보기페이지에 들어갈 때 인증 반드시 해야할 때 >> 관리자 페이지, 마이페이지 실제로 어떻게 처리하는지 살펴보자 없는 페이지를하면 메인으로 돌아가게된다.만약 설정을 안하면 빈화면이 나왔을 것이다. 로그아웃을 하고 글을 쓰..
POJOPlain OId java ObjectVO Value Object == DTO"오래된 방식의 간단한 자바 객체" 간단하게 말해서 특정 프레임워크나 라이브러리에 종속되지 않는 순수한 자바 객체를 말한다.POJO는 복잡한 상속 구조나 인터페이스를 요구하지 않고 간단한 getter/setter메서드와 필드를 이용하여 객체의 상태를 관리하는 방식으로 코드를 작성하는 것을 의미한다. POJO를 이용한 코드public class Member { private int id; private String name; private String email; // 기본 생성자 public Member() {} // 매개변수가 있는 생성자 public Member(int id, ..
dispatcherServlet을 직접 만들었다만약 스프링에서 제공하는 파일을 사용하면 어떻게 될까? 일단 어노테이션은 web.xml에 있는 설정을 대신해서 사용한 것이다.ds내용에는 객체그 아래에는 클래스를 쓰면 된다.org.springframework.web.servlet.DispatcherServlet 맵핑도 같이 한다. web.xml은 서블릿 컨테이너(톰캣)에게 줄 파일을 만드는 것이다.필터와 리스너도 여기서 만들어야 한다. 여기서 서버를 돌려면보면 다음과 같은 에러가 난다.https://sweetseonah1004.tistory.com/155 DS가 자기 의존성을 주입하려고 한다.그러면 handlerMapper와 ViewResolver가 있었어야 한다. 먼저 handlerMapper만 추가 해보..