spring3 버전에서 mvc interceptors 사용



스프링3 버전에서 mvc 인터셉터를 쓰려면 에러가 난다.





이게 스프링4 버전에서부터 바뀐 부분인데 


결론부터 말하자면


인터셉터를 선언하기 전에

 <mvc:annotation-driven/> 를 먼저 선언해주면 해결된다.



@MVC의 기반 클래스 변경

  • 3.1 부터 MVC기반 클래스 변경
    • <mvc:annotation-driven/>에 의해 등록되는 클래스들
    • HandlerMapping : DefaultAnnotationHandlerMapping -> RequestMappingHandlerMapping
    • HandlerAdaptor : AnnotationMethodHandlerAdapter -> RequestMappingHandlerAdapter
    • HandlerExceptionResolver : AnnotationMethodHandlerExceptionResolver -> ExceptionHandlerExceptionResolver
    • 이름을 보면
      • 'Annotation'은 이제 당연하므로 생략.
      • @RequestMapping이 연상되도록
  • Handler를 클래스가 단위가 아닌 메소드 단위로
  • <mvc:annotation-driven/>를 쓸 때 옛날 클래스와 같이 쓰지 않도록 주의

    <mvc:annotation-driven/>
    <bean id="handlerAdapter"
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="customArgumentResolvers">
           <array>
                 <bean class="net.benelog.UserArgumentResolver"/>
           </array>
        </property><property name="order" value="-1"/>
    </bean>
    

->

        <mvc:annotation-driven>
            <mvc:argument-resolvers>
                    <bean class="net.benelog.UserArgumentResolver"/>
            </mvc:argument-resolvers>
        </mvc:annotation-driven>



에러 : Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0 #2




pom.xml에서 아무 이상 없는데 dependency 부분에서 자꾸 에러나는 현상



에러코드를 검색해보면 repositories 를 추가하라고 되있는데 찾아보니까 




2016, 04, 26 부로 메이븐 추가 주소가 바뀌었다.



이 뒤로는 에러 안난다.


HTTP Status 500 - Request processing failed


서버 셋팅을 마치고 재대로 돌아가던 서버가 코드를 수정하고 서버를 돌리니 다음과 같은 메세지를 웹상에서 내뱉었다.


HTTP Status 500 - Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:


type Exception report

message Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-01017: invalid username/password; logon denied
)
### The error may exist in file [C:\dev\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\first\WEB-INF\classes\mapper\sample\Sample_SQL.xml]
### The error may involve sample.selectBoardList
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-01017: invalid username/password; logon denied
)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

root cause



http 에러코드가 500 인걸로 봐서 내부 서버 오류라고 하는데 도대체 어떤점이 잘못됬는지 모르겠다.

500 :Internal server error (내부 서버 오류)


해결

SQL쪽에 문제가 있는 것 같아 datasource 쪽을 보니 아이디 비밀번호를 입력하는 칸이 있었다.


결론부터 말하자면 아이디를 잘 못 적었던 것이다. 



            




패스워드는 동일 하게 적었으나, 오라클이다보니 아이디를 system, sys 로 적었던 것이 문제 였다.


datasource.xml 에 적은 username과 오라클의 접속 ID가 같아야했던 것이었다.






스프링 글자색 배경색 바꾸기



스프링에서 배경색 및 글자색 변경 하는 방법은 2가지가 있다.(내가 알기론)


그중 두 번째 컬러 테마를 다운로드 하는 방법을 기술하겠다.

 

 

 

1. Windows -> Preferences로 이동


       

 

 

2. General -> Appearance -> Theme 에서 원하는 Theme 선택

 

       

 

 

3. 적용된 모습

 

스프링 글자색 배경색 바꾸기



스프링에서 배경색 및 글자색 변경 하는 방법은 2가지가 있다.(내가 알기론)


그중 첫 번째 컬러 테마를 다운로드 하는 방법을 기술하겠다.




1. Help -> Eclipse Marketplace로 이동

 




2. 검색창에 "color theme" 검색 후 인스톨




3. cofirm 클릭으로 진행



4. 진행 중




5. 동의 후 피니시




6. 창을 닫으면 설치를 계속 할꺼냐고 물어본다 당연히 OK



7. 설치가 끝나면 재시작 할꺼냐고 물어본다 당연히 OK



8. 재시작 후 Window -> Preferences로 이동



9. 왼쪽 탭에서 General -> Appearance -> Color Theme 이동

막 영어로 뭐라 써있는데 이중에서 맘에 드는거 선택해서 적용 하거나 Ok 하면 적용 된다.




10. 적용된 모습

나는 Solarized Dark로 바꿨다 

맘에 들진 않지만 적용된 모습을 보여주기 위해 바꿨음





에러 : Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0



pom.xml 설정 중에 서버가 안돌아가서 확인해보니


missing artifact com.oracle.jdbc:ojdbc14:jar:10.2.0.4.0 이라는 에러가 나왔다.


<dependency>

<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency>

여기서 dependency 부분이 에러인 것이었다. 

다른 dependency는 문제가 없었는데 왜 꼭 이부분에서 그랬던 건가 해서 검색을 해보니



<repositories> 태그


<repository>
<id>mesir-repo</id>
<url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>

</repository>


라고 넣으면 된다는데 안됬다.


알아보니 오라클과 메이븐의 라이센스 문제 때문에 메이븐의 중앙저장소에서 받을수 없어서 발생하는 문제라고 한다.


그.래.서


오라클 홈페이지에 접속해서 (http://www.oracle.com/technetwork/apps-tech/jdbc-10201-088211.html) <- 회원가입은 해야한다

ojdbc14.jar 파일을 직접 다운 받아 tomcat\lib 폴더 안에 넣어주면 끝 


이거도 넣긴했는데 빼도 무방할 것 같다.

   <repository>

<id>mvn2</id>

<url>http://repo1.maven.org/maven2/</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>true</enabled>

</snapshots>

</repository>  

<repository>

<id>oracle</id>

<name>ORACLE JDBC Repository</name>

<url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>

</repository> 



1

+ Recent posts