kjh95.tistory.com/321

     

    Spring MVC | Annotation 활용 서비스 객체 DI | 스프링 xml 설정을 Annotation설정으로 변경 | Service객체의 pr

    스프링 xml 설정을 -> Annotation설정으로 Annotaion 활용 서비스 객체 DI dependency injection 부분을 Annotaion으로 변경하기 ListController 객체의 property를 xml에서 Annotaion 으로 변경하기 servle..

    kjh95.tistory.com


    HomeController 만들기

     

    변경 전
    변경 후

     

    notice에 있는 컨트롤러는 noticeController라는 클래스 파일을 만들고

    Detail List 함수를 만들어서 url mappirng 해야 한다.,

     

     

    IndexController -> HomeController

    컨트롤러의 위치 설정 

    view tiles가 실행되도록 하기

    HomeController.java

     

    HomeController.java

    package com.newlecture.web.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class HomeController {
    	
    	@RequestMapping("/index")
    	public String index() {
    		
    		return "root.index";
    	}
    	
    	@RequestMapping("/help")
    	public void help() {
    	
    	}
    	
    	/*
    	 * @Override public ModelAndView handleRequest(HttpServletRequest request,
    	 * HttpServletResponse response) throws Exception { // TODO Auto-generated
    	 * method stub ModelAndView mv = new ModelAndView("root.index"); //객체생성
    	 * mv.addObject("data", "Hello Spring MVC~"); //데이터 담음
    	 * //mv.setViewName("/WEB-INF/view/index.jsp"); //데이터 담은거 setting
    	 * 
    	 * return mv; }
    	 */
    
    }

     

    index 실행 - 정상 실행 확인


    Notice 컨트롤러 정리하기

    하나의 클래스 안에 모든 컨트롤러를 만드는 것이 가능하다.

    행위를 가지고 있는 대상 단위로 분리한 view폴더의 기능 단위로

    컨트롤러를 만들어준다. ( ex > customer 패키지 event클래스 feq클래스 inc클래스 notice클래스 )

    기존의 notice 패키지는 지워준다.

    NoticeComtroller.java

    package com.newlecture.web.controller.customer;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.newlecture.web.entity.Notice;
    import com.newlecture.web.service.NoticeService;
    
    @Controller
    public class NoticeComtroller {
    	
    	@Autowired
    	private NoticeService noticeService;
    	
    	@RequestMapping("/customer/notice/list")
    	public String list() throws ClassNotFoundException, SQLException {
    		
    		List<Notice> list = noticeService.getList(1, "title", "");
    		
    		return "notice.list";
    	}
    	
    	@RequestMapping("/customer/notice/detail")
    	public String detail() {
    		return "notice.detail";
    	}
    }

     

    servlet-context.xml의 list detail 지우기

    servlet-context.xml

     

    servlet-context.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:mvc="http://www.springframework.org/schema/mvc"
    	xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            https://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd">
    	
    	<!-- <context:annotation-config /> -->
    	<context:component-scan base-package="com.newlecture.web.controller" /> 
    	
    	<bean
    		class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    		<property name="viewClass"
    			value="org.springframework.web.servlet.view.tiles3.TilesView" />
    		<property name="order" value="1" />
    	</bean>
    
    	<bean
    		class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    		<property name="definitions" value="/WEB-INF/tiles.xml" />
    	</bean>
    	
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/view/"></property>
    		<property name="suffix" value=".jsp"></property>
    		<property name="order" value="2" />
    	</bean>
    	
    	<mvc:resources location="/static/" mapping="/**"></mvc:resources>
    	<mvc:annotation-driven />
    	
    </beans>

     

    inc/header.jsp의 customer 경로 추가 하기 

    header.jsp

     

    컨트롤러 mapping경로의 공통분모 지우기

     

    NoticeComtroller.java

    package com.newlecture.web.controller.customer;
    
    import java.sql.SQLException;
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.newlecture.web.entity.Notice;
    import com.newlecture.web.service.NoticeService;
    
    @Controller
    @RequestMapping("/customer/notice/")
    public class NoticeComtroller {
    	
    	@Autowired
    	private NoticeService noticeService;
    	
    	@RequestMapping("list")
    	public String list() throws ClassNotFoundException, SQLException {
    		
    		List<Notice> list = noticeService.getList(1, "title", "");
    		
    		return "notice.list";
    	}
    	
    	@RequestMapping("detail")
    	public String detail() {
    		return "notice.detail";
    	}
    }

     

    HomeController.java

    package com.newlecture.web.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    @RequestMapping("/")
    public class HomeController {
    	
    	@RequestMapping("index")
    	public String index() {
    		
    		return "root.index";
    	}
    	
    	/*
    	 * @Override public ModelAndView handleRequest(HttpServletRequest request,
    	 * HttpServletResponse response) throws Exception { // TODO Auto-generated
    	 * method stub ModelAndView mv = new ModelAndView("root.index"); //객체생성
    	 * mv.addObject("data", "Hello Spring MVC~"); //데이터 담음
    	 * //mv.setViewName("/WEB-INF/view/index.jsp"); //데이터 담은거 setting
    	 * 
    	 * return mv; }
    	 */
    
    }
    

     

    Annotation을 이용한 매핑 설정

    Spirng mvc가 scan을 해서 @붙어있는 함수를 호출하게 된다.

    url이 있으면 url에 맞는 함수를 호출하는 방법이기 때문에 인터페이스의 제약도 없고 클래스당 url mapping이 아니기 때문에 url mapping의 하나의 클래스에 묶어서 mapping 한다.

     

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading