Skip to content

Commit cfc5f5c

Browse files
authored
Update info.md
1 parent f9b34e9 commit cfc5f5c

File tree

1 file changed

+63
-56
lines changed

1 file changed

+63
-56
lines changed

TSpring/SpringMVC/info.md

Lines changed: 63 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,12 @@ TDD Kent Beck + 디자인패턴 Erich Gamma
3737
pom.xml dependdency junit추가
3838
Run as 도 as Junit Test
3939
assert메서드로 예상,실제값
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

4647
Assert메서드
4748
assertEquals(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

272275
XML 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 호출, 비즈니스 로직,데이터 처리 : 결과 받음
299302
C ->V 화면 생성 요청: 결과화면
300303
C -> client 응답
301304

302-
Model 컴포넌트 : 데이터저장소와 연동, 입출력 데이터 다룸 : CRUD 트랜잭션
305+
1. Model 컴포넌트 : 데이터저장소와 연동, 입출력 데이터 다룸 : CRUD 트랜잭션
303306
DAO, Service 클래스 해당
304307

305-
View 컴포넌트 : 모델 처리 데이터 또는 작업결과, 출력화면 만듦
308+
2. View 컴포넌트 : 모델 처리 데이터 또는 작업결과, 출력화면 만듦
306309
출력은 Browser, HTML, CSS, JS 사용 출력UI만듦 : HTML&JSP 가능
307310

308-
Controller 컴포넌트 : 클라이언트 요청 업무수행 Model 컴포넌트 호출
311+
3. Controller 컴포넌트 : 클라이언트 요청 업무수행 Model 컴포넌트 호출
309312
적절히 데이터 가공, 또한 모델의 수행결과 화면생성 뷰 전달
310313
Servlet, 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내장객체 쉽게 접근
384389
3)function
385390
4)database 5)xml
386391

387-
DispatcherServlet '*.do₩' 로 설정해놓은 상태
392+
DispatcherServlet '*.do'* 로 설정해놓은 상태
388393
HelloController
389394
1 POJO형태 Controller클래스 작성
390395
2 @Controller어노테이션 선언
@@ -419,8 +424,10 @@ Browser상에 /hello.do 하면
419424

420425
2)@Autowired에 따라 userService 컨트롤러가 서비스 찾으면, getUserList() 메서드 호출
421426
UserController.java :
427+
422428
@Autowired UserService userService ,
423429
@RequestMapping("/getUserList.do") String getUserList(Model model)
430+
424431
beans.xml <context:component-scan base-package="myspring.user..../>
425432

426433
UserController -> <<interface>> UserService
@@ -429,15 +436,15 @@ UserController -> <<interface>> UserService
429436
+ deleteUser(id:String)
430437
+ getUser(id:String) :UserVO
431438

432-
433439
3)호출결과 데이터 UserController에 다시쏘면,Model 객체에 저장
434440
UserController -> org.springframework.ui.Model
435441
+ addAttribute(String, Object)
436442

437-
438443
4)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>
441448
UserController -> userList.jsp
442449

443450
5)JSP파일은 Model에 저장된 객체, 즉 데이터 읽음
@@ -456,6 +463,7 @@ ViewResolver 설정 : internalResourceViewResolver
456463

457464
AAA.do?XXX=${} 와 (@RequestMapping("/AAA.do") @RequestParam <T> XXX)의 XXX 가 동일해야 함
458465
userList.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]
575583
1 사용자 정보 등록 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+
589597
2 userInsert.jsp 페이지 View 코드작성
590598
3 Browser JSP 실행
591599

@@ -652,8 +660,8 @@ UserController -> userList.jsp
652660
1) userList.jsp '수정' 버튼, updateUserForm 메서드 호출
653661

654662
userList.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

658666
userList.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-
675682
2) 데이터베이스에서 요청(param) id로 service에서 getUser(id)호출
676683

677684
UserController.java
@@ -900,10 +907,10 @@ xhr.send();
900907
HTML 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
* * *
905913
26강 jQuery 예시 다시
906-
https://offbyone.tistory.com/368
907914
* * *
908915
### 27
909916
[클라이언트 프로그램]

0 commit comments

Comments
 (0)