@@ -37,11 +37,12 @@ TDD Kent Beck + 디자인패턴 Erich Gamma
3737pom.xml dependdency junit추가
3838Run as 도 as Junit Test
3939assert메서드로 예상,실제값
40- @Test @Before @After 등 어노테이션 지원
41- @Test 각@Test 메서드 호출시 새 인스턴스 독립적 실행
42- @Before : @Test 실행전, 즉 공통사용 코드
43- @After : @Test 후 실행 릴리즈
44- @BeforeClass , @AfterClass 1회만 수행
40+
41+ @Test @Before @After 등 어노테이션 지원
42+ @Test 각@Test메서드 호출시 새 인스턴스 독립적 실행
43+ @Before : @Test 실행전, 즉 공통사용 코드
44+ @After : @Test후 실행 릴리즈
45+ @BeforeClass, @AfterClass 1회만 수행
4546
4647Assert메서드
4748assertEquals(a,b) 객체value, assertSame(a,b)객체ref
@@ -99,21 +100,22 @@ XML이 아닌 간단한 key=value 구성의 properties파일형식으로 저장
99100### 9
100101 XML 단독 : 운영 -모든 bean 명시적 등록, 충돌 위험, setter/constructor필요
101102 XML, Bean scanning :개발 적합 - 특정 어노테이션 부여,당장은 xml 관리 수고덜어주나 의존관계 엉킬수 있음
102- @Component <bean >태그와 동일함 아래 세 개는 Compoennt의 특정 케이스 용
103- @Repository : persistence layer like 파일 데이터베이스
104- @Service : 서비스 비즈니스 로직
105- @Controller : presentation layer, webapp response, Request
103+
104+ @Component <bean>태그와 동일함 아래 세 개는 Compoennt의 특정 케이스 용
105+ @Repository: persistence layer like 파일 데이터베이스
106+ @Service : 서비스 비즈니스 로직
107+ @Controller : presentation layer, webapp response, Request
106108
107- @Autowired : Type으로 주입, property, setter , 생성자, 일반메서드 적용 가능
108- @Resource : Name으로 주입, (제한적) property, setter메서드에만 적용가능. 필요자원 자동연결
109+ @Autowired : Type으로 주입, property, setter , 생성자, 일반메서드 적용 가능
110+ @Resource : Name으로 주입, (제한적) property, setter메서드에만 적용가능. 필요자원 자동연결
109111
110- @Value ("hh") 는 <property .. value="hh"/>와 동일 단순
111- @Qualifier : @Autowired 와 함께 사용 (동일 타입의 Bean 객체 중 하나 )
112- setter메서드 불필요 by @Value () or @Qualifier ()
112+ @Value("hh") 는 <property .. value="hh"/>와 동일 단순
113+ @Qualifier : @Autowired와 함께 사용 (동일 타입의 Bean 객체 중 하나 )
114+ setter메서드 불필요 by @Value() or @Qualifier()
113115
114- <context: component-scan base-package="myspring.di.annot"> 자동 bean 등록,
115- @Autowired 의존관계 주입받는 어노테이션 선언시 xml설정 필요 해당 클래스가 있는 package
116- < context:include-filter > < content:exclude-filter >
116+ <context:component-scan base-package="myspring.di.annot"> 자동 bean 등록,
117+ @Autowired 의존관계 주입받는 어노테이션 선언시 xml설정 필요 해당 클래스가 있는 package
118+ <context:include-filter> <content:exclude-filter>
117119
118120 원칙적인 POJO 에서 class인 /Hello/, /StringPrinter/, /ConsolePrinter/에 @Component ("name")
119121 또한 StringPrinter에 의존하니 /Hello/에 @Autowired 도 추가
@@ -262,31 +264,32 @@ execution([접근제한자 패턴] 리턴값타입패턴 [타입패턴.]
262264메서드이름패턴(타입패턴|"..",...)[ throws 예외패턴] )
263265
264266예시 : execution(* aspects.trace.demo.* .* (..))"
265- execution(* hello(..)) hello 이름 메서드 선정, 모든 파라미터exec
266- execution(* myspring.user.srvice.UserServiceImpl.* (..))
267- -- UserServiceImpl 클래스 직접 지정, 모든 메서드 선택
268- execution(* myspring.user.service* .* (..)) service패키지 내 모든 클래스
269- execution(* myspring.user.service..* .* (..)) service뒤에 .. 더 있어, 서브패키지 모든 클래스까지
270- execution(* * ..Target.* (..)) Target이름 모든 클래스(패키지 무관)
267+
268+ execution(*hello(..)) hello 이름 메서드 선정, 모든 파라미터exec
269+ execution(*myspring.user.srvice.UserServiceImpl.*(..))
270+ -- UserServiceImpl 클래스 직접 지정, 모든 메서드 선택
271+ execution(*myspring.user.service*.*(..)) service패키지 내 모든 클래스
272+ execution(*myspring.user.service..*.*(..)) service뒤에 .. 더 있어, 서브패키지 모든 클래스까지
273+ execution(* *..Target.*(..)) Target이름 모든 클래스(패키지 무관)
271274
272275XML POJO : AOP 구현 Advice 클래스 작성 < aop:config > 어드바이스,포인트컷
273- @Aspect 어노테이션 < aop:aspectj-autoproxy/ > 메서드,포인트컷 : 클래스 내부
274-
275- @Before ("pointcut)(joinPoint 파라미터 참조가능), @After ("pointcut) : 정상종료, 예외(리턴값 직접 전달x)
276- @Around ("pointcut")
277- @AfterReturning (pointcut="", returning="") returning 리턴값 변수이름
278- @AfterThrowing (pointcut="", throwing="") throwing 예외 저장 변수이름
279-
280- UserService.getUser(..)시작
281- @Before [ getUser] 전처리
282- @Before [ getUser] 아규먼트
283- @Before [ read] 전처리
284- @Before [ read] 아규먼트
285- LoadingXML bean def
286- @After [ getUser] 메서드 실행완료
287- @AfterThrowing [ getUser] 메서드 예외발생
288- @AfterThrowing [ getUser] PreparedStatement Callback
289- UserService.getUser(..)종료
276+ @Aspect 어노테이션 < aop:aspectj-autoproxy/ > 메서드,포인트컷 : 클래스 내부
277+
278+ @Before("pointcut)(joinPoint 파라미터 참조가능), @After("pointcut) : 정상종료, 예외(리턴값 직접 전달x)
279+ @Around("pointcut")
280+ @AfterReturning(pointcut="", returning="") returning 리턴값 변수이름
281+ @AfterThrowing(pointcut="", throwing="") throwing 예외 저장 변수이름
282+
283+ UserService.getUser(..)시작
284+ @Before[getUser]전처리
285+ @Before[getUser]아규먼트
286+ @Before[read] 전처리
287+ @Before[read] 아규먼트
288+ LoadingXML bean def
289+ @After[getUser]메서드 실행완료
290+ @AfterThrowing[getUser]메서드 예외발생
291+ @AfterThrowing[getUser] PreparedStatement Callback
292+ UserService.getUser(..)종료
290293
291294***
292295 mybatis 건너뜀
@@ -299,13 +302,13 @@ C ->M 호출, 비즈니스 로직,데이터 처리 : 결과 받음
299302C ->V 화면 생성 요청: 결과화면
300303C -> client 응답
301304
302- Model 컴포넌트 : 데이터저장소와 연동, 입출력 데이터 다룸 : CRUD 트랜잭션
305+ 1 . Model 컴포넌트 : 데이터저장소와 연동, 입출력 데이터 다룸 : CRUD 트랜잭션
303306DAO, Service 클래스 해당
304307
305- View 컴포넌트 : 모델 처리 데이터 또는 작업결과, 출력화면 만듦
308+ 2 . View 컴포넌트 : 모델 처리 데이터 또는 작업결과, 출력화면 만듦
306309출력은 Browser, HTML, CSS, JS 사용 출력UI만듦 : HTML&JSP 가능
307310
308- Controller 컴포넌트 : 클라이언트 요청 업무수행 Model 컴포넌트 호출
311+ 3 . Controller 컴포넌트 : 클라이언트 요청 업무수행 Model 컴포넌트 호출
309312적절히 데이터 가공, 또한 모델의 수행결과 화면생성 뷰 전달
310313Servlet, JSP로 가능
311314
@@ -365,8 +368,10 @@ SpringMVC구성요소
365368기타 환경설정 메모장
366369***
367370### 21
368- EL : <%= request.getParameter("name")%> -> ${param.name}
369- <% UserVO user=(UserVO)request.getAttribute("user");
371+ EL :
372+
373+ <%= request.getParameter("name")%> -> ${param.name}
374+ <% UserVO user=(UserVO)request.getAttribute("user");
370375 out.println(user.getName()); %>
371376 --> ${user.name} request는 생략 가능 , session은 명시 필요
372377 name만 EL로 하면, value는 자동 넘겨짐
@@ -384,7 +389,7 @@ request,response,pageContext, application 같은 JSP내장객체 쉽게 접근
3843893)function
3853904)database 5)xml
386391
387- DispatcherServlet '* .do₩' 로 설정해놓은 상태
392+ DispatcherServlet '* .do' * 로 설정해놓은 상태
388393HelloController
3893941 POJO형태 Controller클래스 작성
3903952 @Controller 어노테이션 선언
@@ -419,8 +424,10 @@ Browser상에 /hello.do 하면
419424
4204252)@Autowired 에 따라 userService 컨트롤러가 서비스 찾으면, getUserList() 메서드 호출
421426UserController.java :
427+
422428 @Autowired UserService userService ,
423429 @RequestMapping("/getUserList.do") String getUserList(Model model)
430+
424431beans.xml <context: component-scan base-package="myspring.user..../>
425432
426433UserController -> <<interface >> UserService
@@ -429,15 +436,15 @@ UserController -> <<interface>> UserService
429436 + deleteUser(id: String )
430437 + getUser(id: String ) : UserVO
431438
432-
4334393)호출결과 데이터 UserController에 다시쏘면,Model 객체에 저장
434440UserController -> org.springframework.ui.Model
435441 + addAttribute(String, Object)
436442
437-
4384434)JSP파일에 포워딩
439- userList.jsp <c: forEach var="user" items="${userList}">
440- <tr ><td >${user.userId}</td ></tr >
444+ userList.jsp
445+
446+ <c:forEach var="user" items="${userList}">
447+ <tr><td>${user.userId}</td></tr>
441448UserController -> userList.jsp
442449
4434505)JSP파일은 Model에 저장된 객체, 즉 데이터 읽음
@@ -456,6 +463,7 @@ ViewResolver 설정 : internalResourceViewResolver
456463
457464AAA.do?XXX=${} 와 (@RequestMapping ("/AAA.do") @RequestParam <T > XXX)의 XXX 가 동일해야 함
458465userList.jsp
466+
459467 <c: forEach var="user" items=${userList}>
460468 <tr ><td ><a href="getUser.do?id=${user.userId}>
461469 ${user.userId} </a >
@@ -574,8 +582,7 @@ userInsert.jsp -> org.springframework.web.servlet.ModelAndView
574582[ 사용자 정보 등록 Controller]
5755831 사용자 정보 등록 insertUser(@ModelAttribute UserVO userVO)메서드 작성
576584 @RequestMapping , @ModelAttribute 선언
577-
578- ---@ModelAttribute 는 HTTP요청 포함 파라미터, 모델 객체로 바인딩 저장하게 함
585+ @ModelAttribute 는 HTTP요청 포함 파라미터, 모델 객체로 바인딩 저장하게 함
579586 userInsert.jsp의 <input type =" text " name =" userId " />,...
580587 <select name =" city " ><c: forEach var="cityName option value=${cityName}>
581588 UserVO.java 의 public class UserVO{ private String userId;(...) private String city;
@@ -586,6 +593,7 @@ userInsert.jsp -> org.springframework.web.servlet.ModelAndView
586593 //단 전제 각각의 jsp input name값과 VO 객체의 변수가 동일해야함
587594
588595 redirect 목록조회페이지
596+
5895972 userInsert.jsp 페이지 View 코드작성
5905983 Browser JSP 실행
591599
@@ -652,8 +660,8 @@ UserController -> userList.jsp
6526601 ) userList.jsp '수정' 버튼, updateUserForm 메서드 호출
653661
654662userList.jsp
655- <td ><a href =" updateUserForm.do?id=${user.userId} " >수정</a ></td >
656663
664+ <td><a href="updateUserForm.do?id=${user.userId}">수정</a></td>
657665
658666userList.jsp -> @Controller myspring.user.UserController
659667 + @Autowired
@@ -671,7 +679,6 @@ userList.jsp -> @Controller myspring.user.UserController
671679 + @RequestMapping (name="updateUserForm.do")
672680 + updateUserForm(@RequestParam String id);
673681
674-
6756822 ) 데이터베이스에서 요청(param) id로 service에서 getUser(id)호출
676683
677684UserController.java
@@ -900,10 +907,10 @@ xhr.send();
900907HTML element동적 manipulation, attribute 읽고쓰기, 선택(Selector)
901908(CDN : content delivery network host or 로컬 저장)
902909 jQuery 꼭 document ready해야 사용 가능
903- <script > $ (document ).ready (function (){});</script >
910+
911+ <script> $(document).ready(function(){});</script>
904912* * *
90591326강 jQuery 예시 다시
906- https://offbyone.tistory.com/368
907914* * *
908915### 27
909916[ 클라이언트 프로그램]
0 commit comments