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 한다.