본문 바로가기

개발 회고

[솔데스크] 풀스택 과정 12주-3 총52회차 ‘회고’ | 스프링(0221)

[서론]

○● 0221새로웠던 것
1. getStr_data가 getString같은 애임


2. mvc모델
프레임워크 마이바티스를 씀-데이터 베이스 전반적인 작업-전송, 소스 
-인터페이스-호출

1.Presentation 화면 계층 컨트롤러와 브라우저쪽 처리 담당.
2.Business 비즈니스 계층 비즈니스 로직을 담는 영역. 주로 xxxService 같은 이름으로 구성함. service 패키지.
3.Persistence 영속(데이터) 계층 디비쪽 담당. (마이바티스 프레임 워크를 통해서 처리 함)

3. 먼저 controller를 쓴다
-testController 클래스 추가
-testController

homecontroller는 관리 동네

 

 

[본론]
○● 0221  내용 정리
 
● 스프링

 

○○○●●● 스프링이란

 

 

 

3/4. 프레젠테이션(웹) 계층의 crud 구현

1. 패키지 추가

작업 폴더 src/main/java 에
com.peisia.controller << 이 패키지 추가하기

2. 클래스 추가

작업 폴더 src/main/java 의
com.peisia.controller << 여기에 TestController  클래스 추가하기

3. pj 실행

기본 컨트롤러의 헬로월드 페이지 확인하고

4. 브라우저 주소창에 직접 주소 입력 후 콘솔 확인하기

<< 참고로 톰캣의 pj 시작 루트 폴더 설정은 안 건드린 상태임( 기본값 /spring 으로 잡혀있는 상태)

Mi 가 아니라 spring? 이슈가 있음.. 

처음에 pj 만들때 패키지 입력을

패키지: cohttp://m.peisia.spring.mi

로 했는데 이게 점으로 구분된 앞에 3개까지만 패키지로 인식함

http://localhost:8080/spring/test/getOnePlusTwo 주소창에 입력 후 콘솔 확인

브라우저 페이지 404 에러는 무시하고
로그 확인 >>>>>>>>> (여기 컨트롤러임) 1 더하기 2는 = 3

그런데.. 위 로그가 나와야 되는데 안나올 것임..

WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/spring/test/getOnePlusTwo] in DispatcherServlet with name 'appServlet'
라고만 뜰 것임..
아래 2가지 이유 때문임. 내용 확인 후 수정 처리하기

끝. 정보 수정 후 재확인

1. 추가한  TestController 컨트롤러 클래스가 스프링에 설정되지 않았기 때문임.

해결:

pj / src / main / webapp / WEB-INF / spring / appServlet /   이 폴더의
servlet-context.xml 파일을 열고 아래 참고하여 

<!-- 이 아래 설정은 pj 생성 시 자동으로 설정된 것임. -->
<!-- 이것 때문에 해당 패키지의 홈 컨트롤러가 작동하고 헬로월드가 표시 되는 것임.  -->
<!-- 참고로 pj 생성 시에 기본 패키지를 cohttp://m.peisia.spring.mi 라고 지정했지만 -->
<!-- cohttp://m.peisia.spring 까지만 인식해버리고 세번째 폴더 spring 을 톰캣 서버로 지정하는 등 -->
<context:component-scan base-package="cohttp://m.peisia.spring" /> << 이건 pj 생성 시 자동으로 추가 된거.
그래서 스프링에서 해당 패키지 내 컨트롤러를
관리하게 됨.
<!-- 내가 따로 정한 컨트롤러용 패키지를 위해 아래 설정 추가했음 -->
<context:component-scan base-package="com.peisia.controller" />
<< 이 태그를 추가해야 함.

그래도 콘솔 값이 확인 안될 껀데 2번의 이유임. 아래 내용 확인.

2. url 요청에 의해 컨트롤러가 정상 수행 되었지만 로그만 출력이 안된 상황임.

TestController 여기에 sysout 로그 찍어보면 나옴.

TestController 의 소속 패키지에 대한 로그 설정이 안되서 안나온 것임.

해결:

pj / src / main / 리소스 / 이 폴더의
log4j.xml 파일을 열고 아래 참고하여 

<!-- Application Loggers -->
<logger name="cohttp://m.peisia.spring">
<< 참고: 로그4j 로그 등급 순위 >> <level value="info" />
1 error </logger>
2 warning
3 info <!-- TestController 컨트롤러 때문에 추가함 -->
4 debug <logger name="com.peisia.controller"> << 이 태그를 추가해야 함.
<level value="info" /> << 이 태그를 추가해야 함.
</logger> << 이 태그를 추가해야 함.

...

<!-- Root Logger -->
<root>
<priority value="warn" /> << 이 로그 설정 때문에 위의 태그들 처럼
<appender-ref ref="console" /> 별도로 로그 레벨 필터링을 안하면
</root> warn 워닝 레벨 로그 이상만 나옴. (에러, 워닝만 나옴)
그래서 로그가 안나왔던 것임.

참고 :  [공유문서][spring][관련내용들]

* 참고 * p.67 묵시적 자동 주입

4/4. 최종 화면 처리 ( 브라우저에 출력 )

1. 파일 수정

TestController 파일 수정하기

2. 폴더 추가 * 참고 * p.139 Model 이라는 데이터 전달자 나 todo: model 설명

src/main/webapp/WEB-INF/views/ 이 폴더 밑에 test 폴더 추가하기

3. jsp 파일 추가

/test 폴더 밑에 getOnePlusTwo.jsp 파일 추가하기

끝. 서버 실행 후 브라우저 결과 확인

브라우저에(현 포트, 매핑 설정에 맞춰서)

pj 실행 후 브라우저에 url 입력 후 브라우저 출력 확인 http://localhost:8080/spring/test/getOnePlusTwo

1 + 2 = 3 나오는지 확인.

1+2 개발은 완료임. 아래 문제들은 위 pj 에 추가해서 풀기. 디비 crud 를 각 과정 걸쳐 연습해보는 문제임. 이후 방명록 대비.

 

getOnePlusTwo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>1 더하기 2 는 ${sum } </p>
</body>
</html>

 

home.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page session="false" %>
<html>
<head>
	<title>Home</title>
</head>
<body>
<h1>
	Hello world!  
</h1>

<P>  The time on the server is ${serverTime}. </P>
<a href="/spring/test/getOnePlusTwo">1+2 결과 보러 가기</a>
</body>
</html>

[결론]
 
* 스프링 기초 강의 수강

 

*작업파일


 0220
1) 스프링 기초