출처: http://november11tech.tistory.com/88 [Mr.november11] '개발/Spring' 카테고리의 글 목록 (2 Page) :: 사월은 봄이다.

Spring Remoting 에 대한 자세한 설명은 아래 링크 참조

 : http://dev.anyframejava.org/docs/anyframe/4.1.0/reference/html/ch08.html








---------------------------------------------------------------------------------------------------------------------------




나는 그냥 예제를 돌려볼 뿐이다.




먼저 인터페이스를 만든다.





hessian-servlet.xml 이라는 파일을 만들어 준다







web.xml 에 추가하거나 수정




그리고 beans.xml을 읽어서 리턴해주는 메소드를 만들고,







돌려보면,






된다는 구만..




되네






...






처음 접해본 기술이라 아직 공부좀 더해야함






아래는 디렉토리 구조다...







디렉토리 구조 빼고는 보고 했음  : http://r4r.co.in/java/spring/spring_tutorial/example_of_spring_and_hessian.shtml





컴파일 하다 보면 무슨 Proxy 클래스를 캐스팅 못한다는 오류가 가끔 발생하는데 그건 spring 하고 hessian 버전 문제로 발생할 수 있다.


이거때문에 이틀 삽질함 ㅡㅡ









'개발 > Spring' 카테고리의 다른 글

Spring boot Application 에서 기본 타임존을 UTC로 하기  (0) 2018.07.16
IntelliJ] Spring Boot 시작하기  (0) 2018.05.22
@RestController  (0) 2018.02.15
설정] 외부 프로퍼티 파일 읽어오기  (0) 2018.02.15
@responsebody  (0) 2018.02.15

화면 - View- 가 필요없이 API만 지원 하는 서비스에서 @RestController를 사용하면 된다.


이녀석이 @ResponseBody를 이미 가지고 있다고 한다. Spring4.0 이상에서 지원함.






만약 view가 필요하다면 @Controller를 사용해야 한다.


대신 API 서비스는 @ResponseBody를 붙여줘야 함

'개발 > Spring' 카테고리의 다른 글

IntelliJ] Spring Boot 시작하기  (0) 2018.05.22
[Spring-remote] Hessian 예제  (0) 2018.02.15
설정] 외부 프로퍼티 파일 읽어오기  (0) 2018.02.15
@responsebody  (0) 2018.02.15
국제화  (0) 2018.02.15




1. 일단 기본으로 war 파일 안에 프로퍼티 파일이 하나 있어야 함


2. 이유는 외부 프로퍼티 파일이 없을 때를 대비해서 이다.




<bean id="requiredProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">


<property name="locations">


<list>


<value>/WEB-INF/properties/*.properties</value>


</list>


</property>


</bean>




<context:property-placeholder properties-ref="requiredProperties" ignore-resource-not-found="true" location="file:${catalina.base}/mydb.properties" />

'개발 > Spring' 카테고리의 다른 글

[Spring-remote] Hessian 예제  (0) 2018.02.15
@RestController  (0) 2018.02.15
@responsebody  (0) 2018.02.15
국제화  (0) 2018.02.15
datasource의 value 읽어오기  (0) 2018.02.15

메소드에 @ResponseBody 로 어노테이션이 되어 있다면 메소드에서 리턴되는 값은 View 를 통해서 출력되지 않고 HTTP Response Body 에 직접 쓰여지게 된다.




xml 을 전송 받아 처리 한 뒤 다시 돌려보낼 때 어떻게 돌려보내야 할지 몰랐는데 @ResponseBody를 알게 되었다.




하하하. 다행 -




나의 경우 return string 으로 보냈었음.






responsebody 가 있길래 찾아 봤다니더니 @RequestBody도 있었다.




@RequestBody 어노테이션을 이용하면 HTTP 요청 몸체를 자바 객체로 전달받을 수 있다. 


@ResponseBody 어노테이션을 이용하면 자바 객체를 HTTP 응답 몸체로 전송할 수 있다.








자세한 내용은 더 찾아봐야지.

'개발 > Spring' 카테고리의 다른 글

@RestController  (0) 2018.02.15
설정] 외부 프로퍼티 파일 읽어오기  (0) 2018.02.15
국제화  (0) 2018.02.15
datasource의 value 읽어오기  (0) 2018.02.15
log4j.xml 설정  (0) 2018.02.15

프로젝트에서 용어등의 통일과 언어로 인해 국제화를 진행해 보기로 했다.


또, 언젠가 필요할지도 모르지.





먼저 config 폴더에 message-servlet.xml 을 만든다. action-servlet.xml에 추가해 주어도 되지만 이미 많은 설정이 있으므로 따로 빼봤다.



<!-- 내용 -->


<?xml version="1.0" encoding="UTF-8"?>


<beans xmlns="http://www.springframework.org/schema/beans"


    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


     


     <!-- locale Messages setting -->    


    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">


        <property name="basenames">


            <list>


                <value>/WEB-INF/Messages/mtMessage</value> <!-- 프로퍼티가 위치할 곳과 이름 , list라 여러개를 등록할 수 있따고 한다.-->


            </list>


        </property>


        <property name="cacheSeconds" value="100000" />


        <property name="defaultEncoding" value="UTF-8" />


    </bean>

    <bean id="messageSourceAccessor" class="org.springframework.context.support.MessageSourceAccessor">


        <constructor-arg ref="messageSource"/>


    </bean>


    <bean id="messageUtil" class="com.mt.common.Messages"><!-- 메세지를 구현할 클래스-->


        <property name="messageSourceAccessor" ref="messageSourceAccessor"/>


    </bean>   


</beans>






프로퍼티 파일을 등록한다.


위에 설정에서 한 것 처럼 /WEB-INF/Messages/ mtMessage_ko.properties 를 생성한 뒤, 내용을 넣는다.



이제 자바 파일을 만든다.









됐다.


'개발 > Spring' 카테고리의 다른 글

설정] 외부 프로퍼티 파일 읽어오기  (0) 2018.02.15
@responsebody  (0) 2018.02.15
datasource의 value 읽어오기  (0) 2018.02.15
log4j.xml 설정  (0) 2018.02.15
인터셉터  (0) 2018.02.15

보통 context-datasource.xml 이 부분에 db connect 하는 값들을 직접 박기도 하는데




여러 군데에 패키지로 제공되어야 한다면 매번 재 빌드 해야 하는 단점이 있다.






이를 위해 properties 파일로 빼주고 그 값을 value로 읽어오는 방법이 있다.






 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">


     <property name="locations">


         <value>/WEB-INF/properties/*.properties</value>


     </property>


 </bean>




이 부분을 context-datasource.xml에 넣어 준다.


이제


WEB-INF 폴더 밑에 properites 폴더를 만든 뒤, datasource.properties 파일을 만들어 준다.


앞에 * 를 넣어줬으므로 여러개를 읽어옴






jdbc.driver = org.postgresql.Driver


jdbc.url = jdbc:postgresql://***.***.***.***:8080/***


jdbc.username = postgres


jdbc.password = postgres






이런식으로 넣어준뒤,








datasource-context.xml 파일에 디비 정보를 넣어주는 부분을,






    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">


  <property name="driverClassName" value="${jdbc.driver}" />


  <property name="url" value="${jdbc.url}" />


  <property name="username" value="${jdbc.username}" />


  <property name="password" value="${jdbc.password}" />


  <property name="defaultAutoCommit" value="false" />  


  <property name="maxActive" value="100" />


  <property name="maxIdle" value="100" />


  <property name="maxWait" value="60000" />


 </bean>








이렇게 수정한다.




이제, 매번 재빌드 하지 않아도 되고 properties 파일만 수정한 뒤 서버만 재 실행 하면 된다.






끝.


'개발 > Spring' 카테고리의 다른 글

@responsebody  (0) 2018.02.15
국제화  (0) 2018.02.15
log4j.xml 설정  (0) 2018.02.15
인터셉터  (0) 2018.02.15
톰캣에서 get 방식 한글 깨짐 문제  (0) 2018.02.15




<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">


<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">




 <!-- Appenders -->


 <appender name="MTBOARD-FILELOG" class="org.apache.log4j.RollingFileAppender">


  <!--  -->


<!--   <param name="file" value="D:/logs/MTBoard.log" /> -->


  <param name="file" value="${catalina.base}/logs/MTBoard.log" /> <!-- 이러면 톰캣안에있는 logs에 생긴다. -->


  <param name="Append" value="true" />


  <param name="Encoding" value="UTF-8" />


  <param name="MaxFileSize" value="10MB" />


  <param name="MaxBackupIndex" value="10" />


  <!--  -->


  


  <layout class="org.apache.log4j.PatternLayout">


   <param name="ConversionPattern"


    value="%p: [%d{ISO8601}{GMT+9}] (%C:%L) %m %n" />


  </layout>


 </appender>


 




 <!-- Root Logger -->


 <logger name="com.sure.mt" additivity="false">


  <level value="INFO" />


  <appender-ref ref="MTBOARD-FILELOG" />


 </logger>




 <!-- Root Logger -->


 <root>


  <level value="INFO" />


  <appender-ref ref="MTBOARD-FILELOG" />


 </root>


 


</log4j:configuration>



'개발 > Spring' 카테고리의 다른 글

국제화  (0) 2018.02.15
datasource의 value 읽어오기  (0) 2018.02.15
인터셉터  (0) 2018.02.15
톰캣에서 get 방식 한글 깨짐 문제  (0) 2018.02.15
modelandview redirect  (0) 2018.02.15

인터셉터( Interceptor )




인터셉터는 중간에서 뭔가 가로채버린다는 뜻이다.


서블릿에서 필터랑 비슷한 것이다.




클라이언트가 서블릿(controller)에 요청을 할 때, 컨트롤러가 뷰에 뭔가를 전달하고 뷰에서 클라이언트에 응답할 때 발생한다.


(인터셉터는 DispatcherServlet이 컨트롤러를 호출하기 전, 후에 요청과 응답을 가로채서 가공하게 하는 것)




정확한 명칭은 핸들러 인터셉터( Handler Interceptor) 라고 함






인터셉터는 HandlerInterceptorAdapter를 상속받아 쓴다(extends)




이때 전처리기랑 후처리기가 있는데 전처리기가 요청할 때, 후처리기가 응답할 때 쓰는거다.




preHandle의 경우 컨트롤러가 호출되기 전에 실행, postHandle는 컨트롤러가 실행되고 난 후에 실행 함






---------------------




이놈은 web.xml 에서 써 준 설정 파일 *-servlet.xml 에 넣어준다.


(뷰리졸버등이 설정 되어 있는.. )




    <mvc:interceptors>


        <mvc:interceptor>


            <mvc:mapping path="/**"/>   // 모든 클래스를 감시한다는 뜻


            <bean  class="com.go.cooper.common.logger.CooperInterceptor"></bean> // 인터페이스가 구현된 클래스


        </mvc:interceptor>


    </mvc:interceptors>






-------------------


package com.go.cooper.common.logger;




import javax.servlet.http.HttpServletRequest;


import javax.servlet.http.HttpServletResponse;




import org.apache.commons.logging.Log;


import org.apache.commons.logging.LogFactory;


import org.springframework.web.servlet.ModelAndView;


import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;




public class CooperInterceptor extends HandlerInterceptorAdapter{


 


 protected Log logger = LogFactory.getLog(CooperInterceptor.class);


  @Override


     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {


         if (logger.isDebugEnabled()) {


          logger.debug("======================================          START         ======================================");


          logger.debug(" Request URI \t:  " + request.getRequestURI());


         }


         System.out.println("dfd");


         logger.info("pre");


         return super.preHandle(request, response, handler);


     }


      


     @Override


     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {


         if (logger.isDebugEnabled()) {


          logger.debug("======================================           END          ======================================\n");


         }


         logger.info("post");


         System.out.println("dfd--");


     }


     


}


'개발 > Spring' 카테고리의 다른 글

datasource의 value 읽어오기  (0) 2018.02.15
log4j.xml 설정  (0) 2018.02.15
톰캣에서 get 방식 한글 깨짐 문제  (0) 2018.02.15
modelandview redirect  (0) 2018.02.15
quartz  (0) 2018.02.15

톰캣 서버 사용시 get 방식으로 한글을 파라미터로 넘길때 한글이 깨지는 현상 발생!


 


 


server.xml 을 수정해 주면 된다.


 


1.


<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />


->


<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>


 


 


2.


<Connector port="8010" protocol="AJP/1.3" redirectPort="8443"/>


->


<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>


 


 


이렇게만 추가해주면 된다.

'개발 > Spring' 카테고리의 다른 글

log4j.xml 설정  (0) 2018.02.15
인터셉터  (0) 2018.02.15
modelandview redirect  (0) 2018.02.15
quartz  (0) 2018.02.15
@PostConstruct 어노테이션 및 @PreDestroy 어노테이션과 라이프 사이클  (0) 2018.02.15

modelandview로 redirect 할 때 파라미터 값들이 딸려간다.


 


일반적으로


 


return new ModelAndView("redirect:/main.do");


 


로 작성하지만,


 


 


RedirectView rv = new RedirectView("/main.do") ;


rv.setExposeModelAttributes(false) ;


return new ModelAndView(rv);


 


 


이렇게 작성하면 안따라 붙어서 간다.


 


좋음-_-b


+ Recent posts