2016년 8월 16일 화요일

스프링 퀵스타트 4 일차 -2

 4일차에서 다 끝내지 못하고 다음날로 이어졌다.
ㄴㄴ

HTTP Status 500 - javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'message.user.login.language.en' for locale 'ko_KR'.

페이지 446에서 index.jsp를 실행시켰으나 나오는에러다.

해결)

말그대로 해당위치의
/src/main/resources/message/messageSource_en.properties 파일내에
message.user.login.language.en=영어
message.user.login.language.ko=한글

내용이 잘못되어있었다.

message.user.loginlanguage.en=영어
message.user.loginlanguage.ko=한글

수정후 확인 인코딩이 문제가 됨

음...

properties 파일  한글로 작업하면 무슨 16진수같은게 나와서
잔머리를 굴려 propedit 인가 일본사람이 만든거같은데 설치해보니 한글도 매우 잘나와
사용해봤다. 그런데.... 막상 index.jsp를 실행해보면 글씨가 ??? 이런식으로 깨져서나온다.

그래서 설치된 플러그인을 제거하고 다시 실행해보니

org.springframework.beans.factory.CannotLoadBeanClassException

전에 나오지도 않았던 에러가 나온다. 클래스를 찾을수 없다고 한다.
Caused by: java.lang.ClassNotFoundException: com.springbook.biz.user.impl.UserServiceImpl

그래서 aplicationContext.xml 의 해당내용에서

<bean id="userService" class="com.springbook.biz.user.impl.UserServiceImpl">
        <property name="userDAO" ref="userDAO"/>
    </bean>

클래스부분을 싹 지우고 다시UserServiceImpl 부분만 재작성하고 ctrl+1 을 사용해서 다시 지정해주고 저장

다시실행하면 잘된다.

이유는 모르겠다. 어쨋든 잔머리 굴리지말고, 손가락보다는 ctrl+1을 믿어라

그리고 에러 메시지를 읽는 눈을 더 키워라

pom.xml을 수정하다가 갑자기 applicationContext에 에러가 있다는것을 발견했다.

transaction설정부분과 spring jdbc설정관련 해서
2개의 클래스를 못찾고 있었다.  - 관련 jar는 commons-dbcp-1.4.jar 인데
pom.xml에서 dependency부분을 추가하거나 제거하면 관련 라이브러리를 가져오거나 제거한다.

그런데 계속 못찾는다. 몇번을 다시써보고, 해결방안을 찾아보려해도 찾을수가없다.


pom.xml을 수정할땐 조심하자 정말 설정파일이 잘못 틀어지면 다시 제대로 돌리기 어렵다.

class not found org.apache.commons.dbcp.BasicDataSource

해당에러로 굉장히 많은 시간을 소모했다.

서버를 재시작하면 계속 해당 클래스를찾을수 없으니 빨리 찾아라 라고 에러메시지를 길게 뽑아내서 직접 관련 jar파일을 넣어줘도 보고비슷한 사례가 어떤게 있나 찾아봤다

pom.xml에서 관련내용을 지웠다가 저장하고 다시붙여넣으니까 잘된다.

이게 정말 싫은부분이다. 어디서 자동으로 받아온jar파일이 손상된게 아니라면 왜 이런일이 발생해서 속을 썩일까? ㅠㅠ


490페이지 마이바티스 설정까지 해보았다.

음 정말 프레임워크를 사용해보면 설정만 잘하면 매우 쉽게 코딩이 가능하다.

13:40:20.071 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
13:40:20.140 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
13:40:20.140 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
13:40:20.140 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
13:40:20.140 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
13:40:20.205 [main] DEBUG o.a.i.t.jdbc.JdbcTransaction - Opening JDBC Connection
13:40:20.253 [main] DEBUG o.a.i.d.pooled.PooledDataSource - Created connection 1604125387.
13:40:20.253 [main] DEBUG o.a.i.t.jdbc.JdbcTransaction - Setting autocommit to false on JDBC Connection [conn0: url=jdbc:h2:tcp://localhost/~/test user=SA]
13:40:20.255 [main] DEBUG BoardDAO.getBoardList - ==>  Preparing: SELECT * from board where title like '%'||?||'%' order by seq desc
13:40:20.290 [main] DEBUG BoardDAO.getBoardList - ==> Parameters: (String)
13:40:20.338 [main] DEBUG BoardDAO.getBoardList - <==      Total: 6
--->BoardVO [seq=6, title=작성자는 왜, writer=gksrmf dksTJwj, content=한글 안된다고등록했다, regDate=Tue Aug 16 00:00:00 KST 2016, cnt=0]
--->BoardVO [seq=5, title=아무것도 하기싫다, writer=나, content=정말 아무것도 하기싫고
보기도 싫고

이꼴저꼴 보기싫다는게 이런거구나, regDate=Tue Aug 16 00:00:00 KST 2016, cnt=0]
--->BoardVO [seq=4, title=가입인사 -수정, writer=아무무, content=잘부탁드립니다 -수정, regDate=Tue Aug 16 00:00:00 KST 2016, cnt=0]
--->BoardVO [seq=3, title=아니 이게 된다고?, writer=브론즈, content=브론즈 실버가 가장 많이 말하는 단어
"아니 x발", regDate=Tue Aug 16 00:00:00 KST 2016, cnt=0]
--->BoardVO [seq=2, title=두번째글등록, writer=등록자, content=작성내용, regDate=Tue Aug 16 00:00:00 KST 2016, cnt=0]
--->BoardVO [seq=1, title=bb, writer=bb, content=bb, regDate=Tue Aug 16 00:00:00 KST 2016, cnt=0]



결국 전부 읽고 실습해 보았다.

잠시 다른 자바 서적을 읽고 다시 실습해보면 좀더 깔끔하게 책 내용을 이해할수 있을것같다.

댓글 없음: