티스토리 툴바

블로그 이미지
당신이 행복했으면 좋겠습니다. 늦깍이낭만파

카테고리

분류 전체보기
Programming
Database
여행
관심사
문화활동
생각
IT trend
Total22,809
Today85
Yesterday102

공지사항

우선 ajax를 통해서 json 데이터를 전송시에 구현방법은

json 양식을 따르는(?) jsp를 작성하여서 client에 전송하도록 하였습니다.

따라서 SpringMVC의 controller 는 jsp파일 네임과 동일한 값을 return해야합니다.

(이를 논리적인 뷰 이름 이라고 하더군요.

 /views/home.jsp 를 예로 들자면

 /views/ >> 접두어

 home >> 논리적인 뷰 이름

 .jsp >> 접미어 라고 합니다. )

modelAndView를 사용하든, model을 사용하든 String을 이용하던 말이죠.

controller의 일이 끝나면 viewResolver에게 요청이 넘어가게 됩니다.

viewResolver는 controller 에서 넘어온 논리적인 뷰 이름과 동일한 jsp 등의 파일 등을 찾아서

data(model) 를 binding한 후에 클라이언트에게 넘겨줍니다.


그런데 tiles를 이용하여 view layer look and feel을 구성하면 TilesView 를 이용해야합니다.

모든 request는 tilesview가 적용된 resolver로 가게 되기 때문에 ajax를 이용해서 data만 가져오려던게

page를 다시 호출하게 되는 상황이 올 수 있죠.

그렇지 않더라도 tiles를 적용하면 definition 으로 각 view를 설정해주어야하는데(dynamic tiles 미적용시에)

여기에서 해당하는 view를 못찾게 되면 no mapping view라면서 404를 보게 됩니다.

(view look and feel은 spring in action 3판에서 본 용어로 

 application look and feel 이란 표현을 사용하더군요~)


이때 해결할 수 있는 방법은 viewResolver에 우선순위를 주어서 2개이상을 정의하는 것입니다.


<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">

   <property name="definitions">

      <list><value>/views/**/views.xml</value></list>

   </property>

</bean>

<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">

   <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />

</bean>


application-servlet에 정의한 xml에는 보통 위와 같이 tiles를 적용하게 될 것입니다.

이렇게 작성하면 모든 view들은 tiles가 적용되게 되죠.


<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">

   <property name="definitions">

      <list><value>/views/**/views.xml</value></list>

   </property>

</bean>

<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">

   <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />

   <property name="order" value="1" />

</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

   <property name="prefix" value="/views/" />

   <property name="suffix" value=".jsp" />

   <property name="order" value="2" />

</bean>


위와 같이 viewResolver를 적용하게되면 우선 모든 view들은 tiles를 정의한 각 views.xml의 definition들에서

binding될 jsp 등의 view 파일들을 찾게됩니다.

만약 각 views.xml에서 view 파일을 못찾게 되면 우선순위가 2인 InternalResourceViewResolver 에서 

해당 view 파일을 찾게 됩니다.

filter chaining 과는 좀 다르지만 여튼 좀 비슷해보이죠??

참고로 prefix property는 접두어 suffix property는 접미어입니다 ^^;;


이를 응용하게 되면 다양한 viewResolver를 적용하여 spring에서 제공하는 여러 viewResolver들을 통해

강력한 애플리케이션을 구축할 수 있겠지요~?


크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 늦깍이낭만파

eclipse market place에서 google plugin for eclipse로 인스톨 실패시.

https://developers.google.com/eclipse/docs/install-from-zip

위 url을 따라해보세요^^;;


전 지금 이클립스 헬리오스에서 작업중인데

인디고 외에는 설치가 안되는 것 같네요^^;;

그래서 위와 같은 방법을 이용하였습니다.


지금 설치중인데.... 가만 생각해보니 어차피 워크스페이스 따로 두고 진행할텐데

걍 인디고 다운로드받아서 쓰지, 왜 굳이 헬리오스를 고집해서 이러고 있나 싶네요 -_-;;;

여튼 마켓플레이스에선 갈릴레오(3.5), 인디고(3.7)에 대해서는 인스톨 버튼이 있어서

아마 쉽게 인스톨할 수 있을 것 같습니다.

(유일하게 3.6 버전만 인스톨 버튼이 없더군요..;; 제가 검색을 잘못했는진 모르겠으나;;;)







크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 늦깍이낭만파

제목이 기네여.

하지만 본문은 아주 짧습니다.


http://developers.facebook.com/tools/debug

위 링크에서 랜딩페이지 url 을 수정 완료한 뒤에 디버그 버튼을 눌러주세요 (-_-;;)


그럼 됩니다..


( facebook status 에서는 링크 url을 입력받게 되면 어떠한 thubmnail을 보여주어야 할지 우선적으로

 랜딩페이지의 html 코드들을 보고 파싱을 하게 됩니다.

 헌데 이 url을 계속 열심히 꾸준히 파싱을 하는 것은 그만큼 cpu 소모량이 어마어마 하겠죠...

 그래서 페이스북에선 가장 최소한의 파싱을,

 논리적 원자단위를 1개의 계정에서 1개의 url을 캐싱하는 것으로 잡는 것으로 생각되네요.)



크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 늦깍이낭만파