웹 개발 관련 지식이 전무한지라 java 모듈을 테스트하기 위한
기본적인 내용만 정리.
쩝.. 별걸 다 보게 되는 듯..
JDK, Spring-framework 등 필요.
서버로는 JBoss, Tomcat 등이 사용되는 듯... -_-;;
Dynamic Web Project
Target Runtime 에 서버 정해 주고...
>>> 기본 설정
WebContent/WEB-INF/lib 폴더에 라이브러리들(스프링등)을 때려(!) 넣는다.
web.xml
servlet 설정 : dispatcher로 보내야 각 컨트롤러로 전달될 수 있다.
모든 설정은 web.xml에 들어가는데, 여러 설정파일이 있는 경우는 contextLoaderListener란 넘을 사용한다.
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
이후 파라미터명(param-name)에 contextConfigLocation 를 사용하면 특정 xml을 사용가능 하다.
<servlet>
<servlet-name>my_servlet_name</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>my_servlet_name</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
>>> dispatcher 설정 : config.xml
<beans
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://springframework.org/schema/context"
>
@Controller 사용을 위해
<mvc:annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.my.package" />
뷰가 필요하면 (뭔소린지 모르겠다 -_-;;)
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp" />
</bean>
컨트롤러의 파라미터 관련 설정(json이나 메시지를 바로 파싱하는 등의 기능)
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonConverter"/>
<ref bean="marshallingConverter"/>
</list>
</property>
</bean>
위에 언급된(ref) bean 설정
<bean id="jsonConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json"/>
</bean>
<bean id="marshallingConverter"
class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<constructor-arg ref="jaxbMarshaller"/>
<property name="supportedMediaTypes" vlaue="application/xml" />
</bean>
<bean id="jaxbMarshaller"
class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classeToBeBound">
<list>
<value>com.my.package.model.Test</value>
<value>com.my.package.model.TestList</value>
</list>
</property>
</bean>
</beans>
>>> 컨트롤러의 선언
@Controller 사용해 컨트롤러 여부를 선언하고,
@RequestMapping 을 통해 url이나 허용하는 mapping 정보를 설정 할 수 있다.
@Controller
@RequestMapping("/test")
public class TestController {
};
>>> 하위 항목 매핑
메쏘드별로 매핑 가능한데 형식은 동일하다.
/test/hello 를 매핑하기 위해서는..
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping("/hello")
@ResponseBody
public MyResultData hello( @RequestBody MyDataClass data ) {
return MyResultData;
}
}
위와 같이 @ResponseBody, @RequestBody 를 사용하면, 해당 body를 object 형태로
송수신 할 수 있다.
key, value 형태의 json이면, 위처럼 데이터 클래스로 주고 받을 수 있다.
> 세부적인 mapping
@RequestMapping("/hello", method=RequestMethod.POST, headers={"accept=application/json", "content-type=application/json" })
>>> Request 정보
@RequestMapping("/hello")
@ResponseBody
public String hello( HttpServletRequest req , @RequestBody MyData body ) {
String ip = req.getRemoteAddr();
return ip;
}
>>> Exception 처리 예
@ExceptionHandler(Exception.class)
@ResponseBody
public MyResult handlException( Exception e ) {
if ( e instanceof EOFException ) {
return new MyResult( 0 );
} else if ( e instanceof HttpMessageNotReadableException ) {
return new MyResult( 1 );
} else {
return new MyResult( 2 );
}
}
>>> ModelAndView
위의 경우 요청이 오면 해당 맵핑된 메쏘드에서 처리하고 필요한 데이터를 리턴하면 된다.
만약 별도의 view가 필요한 경우는 아래와 같이 처리한다.
리턴값이 ModelAndView 가 된다.
초기 config.xml에서 InternalResourceViewResolver 관련한
view 설정이 있는데, 해당 요청에 대해 설정된 "이름"을 매핑하여
전달하게 된다.
@ReqeustMapping("/hello")
public ModelAndView hollo( @RequestBody String body ) {
return new ModelAndView("이름", MyData );
}
'프로그래밍 > Web' 카테고리의 다른 글
Gradle Wrapper (0) | 2017.03.06 |
---|---|
스프링 요청/응답 (0) | 2017.02.26 |
JPA 쿼리 이것저것 (0) | 2017.02.22 |
[spring] 프로퍼티 값 읽기 (0) | 2017.02.21 |
[spring] 핸들러 인터셉터 (0) | 2017.01.24 |
[spring] Spring boot 기본 설정 (0) | 2017.01.24 |
[spring] batch 작업관련 요소들 (0) | 2012.09.28 |
[MyBatis] 기본 사용법 (0) | 2012.05.13 |
톰캣 (0) | 2012.05.10 |
[spring] dispatch servlet 기본 (0) | 2011.05.13 |