ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • java로 셋팅하기
    웹페이지 제작을 위한 스프링공부 2020. 5. 1. 22:45

    java에서는 xml에서의 요소들을 다르게 구현한다

     

    web.xml->AbstractAnnotationConfigDispatherServletInitializer 상속 or WebApplicationInitializer인터페이스 구현

     

    root-context.xml->상속 없음

     

    servlet-context.xml-> WebMvcConfigurer 인터페이스 구현

     

     

     

     

     

    WebApplicationInitializer인터페이스 구현

     

    자바에서는 web.xml파일에서 수행하는 것들을 자바 파일을 만든다.

     

    package kr.co.softcampus.config;
    
    public class SpringConfigClass implements WebApplicationInitializer{//WebApplicationInitializer을 구현한 클래스가 존재한다면 그 클래스가 가지고있는 onStrartup을 자동으로 호출해준다 web.xml파일을 로딩하는것 대신에 onstartup 메소드를 자동호출 
    
    	@Override
    	public void onStartup(ServletContext servletContext) throws ServletException {
    		// TODO Auto-generated method stub
    		
    		
    		
    	}
    
    }
    

     

    WebApplicationInitializer을 구현한 클래스가 존재한다면 그 클래스가 가지고있는 onStrartup을 자동으로 호출해준다.

    즉 web.xml파일을 로딩하는것 대신에 onstartup 메소드를 자동호출해준다.

     

    package kr.co.softcampus.config;
    
    import javax.servlet.FilterRegistration;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRegistration;
    
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import org.springframework.web.WebApplicationInitializer;
    import org.springframework.web.context.ContextLoaderListener;
    import org.springframework.web.context.WebApplicationContext;
    import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
    import org.springframework.web.filter.CharacterEncodingFilter;
    import org.springframework.web.servlet.DispatcherServlet;
    
    public class SpringConfigClass implements WebApplicationInitializer{//WebApplicationInitializer을 구현한 클래스가 존재한다면 그 클래스가 가지고있는 onStrartup을 자동으로 호출해준다 web.xml파일을 로딩하는것 대신에 onstartup 메소드를 자동호출 
    
    	@Override
    	public void onStartup(ServletContext servletContext) throws ServletException {
    		// TODO Auto-generated method stub
    		//spring mvc 설정을 위해 작성하는 클래스의 객체를 생성한다.
    		AnnotationConfigWebApplicationContext servletAppContext = new AnnotationConfigWebApplicationContext();
    		servletAppContext.register(ServletAppContext.class);
    		
    		
    		//요청발생시 요청을 처리하는 서블릿을 dispathcerservlet을 설정해줌
    		DispatcherServlet dispatcherServlet = new DispatcherServlet(servletAppContext);
    		ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", dispatcherServlet);
    		
    		//부가설정
    		servlet.setLoadOnStartup(1);//모든 요청에 대해 이 servlet이 가장먼저 받아들이겠다.
    		servlet.addMapping("/");//
    		
    		//bean을 정의하는 클래스를 지정한다
    		AnnotationConfigWebApplicationContext rootAppContext = new AnnotationConfigWebApplicationContext();
    		rootAppContext.register(RootAppContext.class);
    		
    		ContextLoaderListener listener = new ContextLoaderListener(rootAppContext);
    		servletContext.addListener(listener);
    		
    		//파라미터 인코딩 설정
    		FilterRegistration.Dynamic filter = servletContext.addFilter("encodingFilter", CharacterEncodingFilter.class);
    		filter.setInitParameter("encoding", "UTF-8");
    		filter.addMappingForServletNames(null, false, "dispatcher");
    		
    		
    	}
    
    }
    

    xml에서의 web.xml과 설정내용은 같지만 xml과 달리 자바는 클래스는 이용하여 설정한다

     

    servlet-context 부분

    package kr.co.softcampus.config;
    
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    @Configuration
    //Controller 어노테이션이 셋팅되어 있는 클래스를 Controller로 등록한다.
    @EnableWebMvc
    //스캔할 패키지를 지정한다.
    @ComponentScan("kr.co.softcampus.controller")
    public class ServletAppContext implements WebMvcConfigurer{
    	// Controller의 메서드가 반환하는 jsp의 이름 앞뒤에 경로와 확장자를 붙혀주도록 설정한다.
    	@Override
    	public void configureViewResolvers(ViewResolverRegistry registry) {
    		// TODO Auto-generated method stub
    		WebMvcConfigurer.super.configureViewResolvers(registry);
    		registry.jsp("/WEB-INF/views/", ".jsp");
    	}
    	
    	// 정적 파일의 경로를 매핑한다.
    	@Override
    	public void addResourceHandlers(ResourceHandlerRegistry registry) {
    		// TODO Auto-generated method stub
    		WebMvcConfigurer.super.addResourceHandlers(registry);
    		registry.addResourceHandler("/**").addResourceLocations("/resources/");
    	}
    }
    

     

    root-context부분

    package kr.co.softcampus.config;
    
    import org.springframework.context.annotation.Configuration;
    
    //프로젝트 작업시 사용할 bean을 정의하는 클래스
    @Configuration
    public class RootAppContext {
    
    }
    

     

     

    AbstractAnnotationConfigDispatherServletInitializer 상속

     

     

    public class SpringConfigClass extends AbstractAnnotationConfigDispatcherServletInitializer{
    
    	//모든 요청에 대해서 dispathcerservlet이 반응을 하겠다.
    	@Override
    	protected String[] getServletMappings() {
    		// TODO Auto-generated method stub
    		return new String[] {"/"};
    	}
    	
    	//spring mvc프로젝트 설정을 위한 클래스를 지정한다,servlet-context지정
    	@Override
    	protected Class<?>[] getServletConfigClasses() {
    		// TODO Auto-generated method stub
    		return new Class[] {ServletAppContext.class};
    	}
    	
    	//프로젝트에서 사용한 bean들을 정의하기 위한 클래스를 지정 root-context지정
    	@Override
    	protected Class<?>[] getRootConfigClasses() {
    		// TODO Auto-generated method stub
    		return new Class[] {RootAppContext.class};
    	}
    	
    	//파라미터 인코딩 필터 설정
    	@Override
    	protected Filter[] getServletFilters() {
    		// TODO Auto-generated method stub
    		CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
    		encodingFilter.setEncoding("UTF-8");
    		return new Filter[] {encodingFilter};
    	}
    
    }

    '웹페이지 제작을 위한 스프링공부' 카테고리의 다른 글

    객체로 파라미터 주입받기  (0) 2020.05.02
    파라미터 추출하기  (0) 2020.05.02
    url mapping  (0) 2020.05.02
    xml 로 셋팅  (0) 2020.05.01
    java,xml 공통 셋팅  (0) 2020.05.01
Designed by Tistory.