본문 바로가기

프로그래밍/JAVA & SPRING

[기타] spring study 모임에서 공부한 내용들

반응형

[서버설정]


왼쪽 밑에 있는 server
모바일버전과 피씨버전을
톰킷에 올릴 때
server.xml의 path를
/로 바꿔줄 것.

[ssl 로컬인증(가짜)]
.keystore파일을 user/kim/에 위치시킬것

피씨
MANAGER101

모바일
E00120
test

로컬에 디비세팅은 ????

erd dashop프로그램으로 보면된다.

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

 

web.xml
- Context에 대한 설정을 잡아주는 단계 web.xml에서 한다.
- egov, spring 프레임워크와는 상관없이 웹환경을 잡아주는 것
- 웹 프로젝트(환경)에 스프링을 얹힌다면 ApplicationContext를 web.xml에 반영을 해줘야 한다.
- 처음 진입포인트인 web.xml에 spring 설정을 해줘야 한다.

ApplicationContext 두가지로 나뉜다 - spring의 lifecycle을 관리(bean을사이클을관리)한다. (웹 기준일때)
1. root Context 
2. servlet Context (웹에 종속적임)

응용프로그램 : 상용화 시스템을 만드는 프로젝트
툴킷   : 라이브러리, 자바의 라이브러리에서는 -> 아카이브파일(<-jdk) -> api
프레임워크  :

web.xml
옵저버 패턴 : 구독과 알림의 관계
<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
ContextLoaderListener 가 생성이 되어 있을까? 인터페이스인데..
WAS -> web.xml -> class호출 <- spring 관련파일들을 멤버필드로 구성되어 있다.

<servlet>
  <servlet-name>appServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
            /WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml
    </param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
위와 같이 서블릿 커텍스트를 잡아주었다.

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath*:egovframework/spring/context-*.xml</param-value>
</context-param>
context-param는 root context를 설정해주는 것.

ContextLoaderListener가
servlet의 DispatcherServlet을 읽고
contextConfigLocation을 읽어서
와스에 올리는 것이다.

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

필터 <filter> 와 <servlet>

외부(사용자)(url로:리소스)접근  ----->               만들어놓은서블릿(url:/)
필터는 서블릿을 감싼다.
<filter2>
<filter1>
 <servlet>
</filter1>
</filter2>

<encodingFilter>
<httpMethodFilter>
<springSecurityFilterChain>
<HTMLTagFilter> html이외의 것으로 해킹하는 걸 방지
javax.servlet 패키지의 filter인터페이스를 구현했다.
javax.servlet을 확장포인트를 제공해서 확장해서 쓴다.

spring.io/projects를 참고해라
springSecurityFilterChain는 스프링프레임워크에 세팅하는 게 아니다.
web.xml에 해줘야 한다. 필터로..

springSecurityFilterChain는 구동방식을 다르게 해줬다.
필터체인으로 적용 해놓았다.
springSecurityFilterChain도 url을 가지고 있다.
필터들도 req, res를 같이 공유하고 있다.


외부에서 접근하면
서블릿을 찾고 없으면 root를 찾는다.
와스의 기본서블릿을 찾는다. 여기서 없으면 404

       root * (서로 공유가능)
 
servlet1   servlet2
bean A       bean B
bean A'      bean B'
     ---- X----

서블릿끼리 빈을 공유하지 못한다.
servlet1안에서 필요한 빈을 찾지 못하면
루트로 올라간다. 그래도 없으면 에러

왜 둘로 나누었나?
서블릿컨텍스트는 웹환경에 종속적일때 (스프링에서)확장해서 쓰라는 것이고
루트컨텍스트는 비지니스 로직에 필요한 객체를 세팅해서 쓴다.
  
--------------------------------------

 

dispather-servlet.xml

서블릿에서 등록될 빈들의 설정을 해놓은 것
 <!-- 컨트롤러 어노테이션 빈 등록 -->
 <context:component-scan base-package="egovframework.fbcs">
  <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository" />
 </context:component-scan>
이 서블릿에 종속적인 컨트롤러를 등록한다.
servlet1, servlet2 ... 여러개를 만들수 있다.
root는 모든 서블릿에서 공유하기 때문에 위와 같이 나누는 것이 중요하다.

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
org.springframework.http.converter.ByteArrayHttpMessageConverter
두개를 선언안하면 디폴트를 쓴다.
RequestMappingHandlerAdapter를 선언함으로서 validator를 참조하고 있다.

중요 : 전자정부 프레임워크와 이 프로그램(fbcs-mobile)의 설정을 비교해보면 이해가 잘될것이다.

--------------------------------------
root context의 context-*.xml

* context-common.xml
org.springframework.context.support.ReloadableResourceBundleMessageSource
locale과 연관되어 있어서 해줘야 한다.
원래는 dispather-servlet.xml에 있어야 하는데
루트에 두는 이유는 공유하기위해서다.
루트에서 서블릿은 못 본다.

* context-datasource.xml

* context-idgen.xml
전자정부에서 지원해주는 시퀀스
* context-mapper.xml
세팅과 플러그인하는 부분이라고 생각하라.
* context-properties.xml

* context-security.xml

* context-transaction.xml
<tx: annotation-driven>은
test하기 위해서 넣은거다
실제는 없어도 돌아간다.

스프링시큐리티 참고
zgundam.tistory.com
http://zgundam.tistory.com/category/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Spring%20Security

 

'프로그래밍/Spring Security' 카테고리의 글 목록

최고가 되고자 아동바동 발버둥 치는..그러나 고독하며 외로운 프로그래머..

zgundam.tistory.com


select * from user_tables;