Spring Quick Start(์ฑ )์ Day3 class05~07 ์ค์ต์ ์งํํ๋ฉด์ ๊ธฐ๋กํ ๋ด์ฉ์ ๋๋ค.
์ค์ตํ ์ฝ๋์ ๋งํฌ์ ๋๋ค.
1. DispatcherServlet ๋ฑ๋ก
WEB-INF/web.xml ํ์ผ์ ์คํ๋ง ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ DispatcherServlet ๋ฑ๋กํ๊ธฐ
์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ํด๋ผ์ด์ธํธ์ ".do" ์์ฒญ์ด ์์ด์ผ DispatcherServlet ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
[web.xml]
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet<servlet-class>
<servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
2. ์คํ๋ง ์ปจํ ์ด๋ ๊ตฌ๋
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ผ๋ก DispatcherServlet ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
DispatcherServlet์ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ฒ๋ฆฌ์ ํ์ํ HandlerMapping, Controller, ViewResolver ๊ฐ์ฒด๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑํ๊ธฐ ์ํด ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ๊ตฌ๋ํ๋ค.
3. ์คํ๋ง ์ค์ ํ์ผ ๋ฑ๋ก
web.xml์์ servlet-name์ด action์ด๋ผ์ DispatcherSevlet์ด ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ๊ตฌ๋ํ ๋ ๋ฌด์กฐ๊ฑด WEB-INF/action-servlet.xml ํ์ผ์ ์ฐพ์ ๋ก๋ฉํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก WEB-INF ์๋์ action-servlet.xml ์ด๋ฆ์ผ๋ก Spring Configuration ํ์ผ์ ๋ง๋๋ ๊ฒ์ด default์ด๋ค.
4. Controller ์ธํฐํ์ด์ค ์ดํด
์คํ๋ง์์ ์ ๊ณตํ๋ Controller ์ธํฐํ์ด์ค๋ ์ด๋ฌํ๋ค.
์ด์ ์ ์คํ๋ง์ ํ์ฉํ์ง ์๊ณ ์ง์ ๊ตฌํํ์๋ MVC ๋ชจ๋ธ(hoit1302.tistory.com/47์ 1. Controller)๊ณผ ๋น๊ตํ๋ฉด ๋ฉ์๋์ ๋ฆฌํด ๊ฐ๋ง ModelAndView๋ก ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
package org.springframework.web.servlet.mvc;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
public interface Controller {
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws Exception;
}
5. ํ์ํ ๊ธฐ๋ฅ์ Controller ๊ตฌํ
ํด๋์ค ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด, Model๊ณผ View ์ ๋ณด๋ฅผ ๋ชจ๋ ์ ์ฅํ์ฌ ๋ฆฌํดํ ๋ ์ฌ์ฉํ๋ค.
ModelAndView ๊ฐ์ฒด์ ํ์ํ ๊ฐ์ ์ ์ฅํ์ฌ ๋ฆฌํดํ๋ ๊ฒ์ ์ฃผ๋ชฉํ๋ฉด ๋๋ค.
5.1 LoginController ๊ตฌํ
package com.springbook.view.user;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import com.springbook.biz.user.UserVO;
import com.springbook.biz.user.impl.UserDAO;
public class LoginController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
System.out.println("๋ก๊ทธ์ธ ์ฒ๋ฆฌ");
// 1. ์ฌ์ฉ์ ์
๋ ฅ ์ ๋ณด ์ถ์ถ
String id = request.getParameter("id");
String password = request.getParameter("password");
// 2. DB ์ฐ๋ ์ฒ๋ฆฌ
UserVO vo = new UserVO();
vo.setId(id);
vo.setPassword(password);
UserDAO userDAO = new UserDAO();
UserVO user = userDAO.getUser(vo);
// 3. ํ๋ฉด ๋ค๋น๊ฒ์ด์
ModelAndView mav = new ModelAndView();
if (user != null) {
mav.setViewName("getBoardList.do");
} else {
mav.setViewName("login.jsp");
}
return mav;
}
}
5.2 getBoardListController ๊ตฌํ
์ฌ๊ธฐ์ ์ค์ํ ์ ์ ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ์ธ์ ์ด ์๋ ModelAndView ๊ฐ์ฒด์ ์ ์ฅํ๊ณ ์๋ค๋ ๊ฒ์ด๋ค.
package com.springbook.view.board;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import com.springbook.biz.board.BoardVO;
import com.springbook.biz.board.impl.BoardDAO;
public class GetBoardListController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
System.out.println("๊ธ ๋ชฉ๋ก ๊ฒ์ ์ฒ๋ฆฌ");
// 1. ์ฌ์ฉ์ ์
๋ ฅ ์ ๋ณด ์ถ์ถ(๊ฒ์ ๊ธฐ๋ฅ์ ๋์ค์ ๊ตฌํ)
// 2. DB ์ฐ๋ ์ฒ๋ฆฌ
BoardVO vo = new BoardVO();
BoardDAO boardDAO = new BoardDAO();
List<BoardVO> boardList = boardDAO.getBoardList(vo);
// // 3. ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ธ์
์ ์ ์ฅํ๊ณ ๋ชฉ๋ก ํ๋ฉด์ ๋ฆฌํดํ๋ค.
// HttpSession session = request.getSession();
// session.setAttribute("boardList", boardList);
// return "getBoardList";
// 3. ๊ฒ์ ๊ฒฐ๊ณผ์ ํ๋ฉด ์ ๋ณด๋ฅผ ModelAndView์ ์ ์ฅํ์ฌ ๋ฆฌํดํ๋ค.
ModelAndView mav = new ModelAndView();
mav.addObject("boardList", boardList); // Model ์ ๋ณด ์ ์ฅ
mav.setViewName("getBoardList"); // View ์ ๋ณด ์ ์ฅ
return mav;
}
}
๋ค๋ฅธ ๊ธฐ๋ฅ๋ค๋ ๋ง์ผ๋ ์๋กญ๊ฒ ๋ฐฐ์ฐ๋ ๋ด์ฉ์ ์์ผ๋ฏ๋ก ํ๋ต.
6. HadlerMapping ๋ฑ๋ก
<!-- HandlerMapping ๋ฑ๋ก -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/login.do">login</prop>
<prop key="/getBoardList.do">getBoardList</prop>
<prop key="/getBoard.do">getBoard</prop>
<prop key="/insertBoard.do">insertBoard</prop>
<prop key="/updateBoard.do">updateBoard</prop>
<prop key="/deleteBoard.do">deleteBoard</prop>
<prop key="/logout.do">logout</prop>
</props>
</property>
</bean>
<!-- Controller ๋ฑ๋ก -->
<bean id="login" class="com.springbook.view.user.LoginController"></bean>
<bean id="getBoardList" class="com.springbook.view.board.GetBoardListController"></bean>
<bean id="getBoard" class="com.springbook.view.board.GetBoardController"></bean>
<bean id="insertBoard" class="com.springbook.view.board.InsertBoardController"></bean>
<bean id="updateBoard" class="com.springbook.view.board.UpdateBoardController"></bean>
<bean id="deleteBoard" class="com.springbook.view.board.DeleteBoardController"></bean>
<bean id="logout" class="com.springbook.view.user.LogoutController"></bean>
"/login.do" ์์ฒญ์ id๊ฐ login์ผ๋ก ๋ฑ๋ก๋ ๊ฐ์ฒด์ ๋งคํ๋์ด ์๋ค.
๊ฐ controller ํด๋์ค๋ ๋น์ผ๋ก ๋ฑ๋ก๋์ด์ผ ์ฌ์ฉํ ์ ์๋ค.
7. ViewResolver ํ์ฉํ๊ธฐ
ViewResolver๋ฅผ ์ด์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๋ก๋ถํฐ์ ์ง์ ์ ์ธ JSP ํธ์ถ์ ์ฐจ๋จํ ์ ์๋ค.
๋๋ถ๋ถ์ ์น ํ๋ก์ ํธ์์ ViewResolver ์ฌ์ฉ์ ๊ฑฐ์ ํ์์ด๋ค.
์์ ์์ฑ๋ ์ฝ๋๋ฅผ ์คํํ์ฌ getBoardList.jsp ํ์ผ์ ์ง์ ํธ์ถํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
GetBoardListController๋ถํฐ ์คํํ ์ ์๋๋ก ์ ์ ํ ์ ์ดํด์ผ ํ๋๋ฐ, ์ด ๋ ViewResolver ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
7.1 viewresolver ๋ฑ๋ก
WEB-INF ํด๋๋ ์ ๋ ๋ธ๋ผ์ฐ์ ๋ก ์ ๊ทผํ ์ ์๋ค.
ํ์ง๋ง InternalResourceViewResolver๋ก ์ค์ ํ๋ฉด WEB-INF ํด๋์ ์๋ JSP ํ์ผ์ View ํ๋ฉด์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
<!-- ViewResolver ๋ฑ๋ก -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/board/"> </property>
<property name="suffix" value=".jsp"> </property>
</bean>
7.2 controller ์์
InternalResourceViewResolver๋ฅผ ๋ฑ๋กํ์ ๋๋ ๋ชจ๋ view ์ด๋ฆ์์ ํ์ฅ์ '.jsp'๋ฅผ ์ ๊ฑฐํด์ผ ํ๋ค.
[์ฌ๋ฌ ์ปจํธ๋กค๋ฌ ์ค GetBoardController.java]
// 3. ๊ฒ์ ๊ฒฐ๊ณผ์ ํ๋ฉด ์ ๋ณด๋ฅผ ModelAndView์ ์ ์ฅํ์ฌ ๋ฆฌํดํ๋ค.
ModelAndView mav = new ModelAndView();
mav.addObject("board", board); // Model ์ ๋ณด ์ ์ฅ
mav.setViewName("getBoard"); // View ์ ๋ณด ์ ์ฅ
return mav;
์ฌ๋ฌ ์ปจํธ๋กค๋ฌ ์ค
view ์ด๋ฆ ์์ redirect:๋ฅผ ๋ถ์ด๋ฉด viewresolver๊ฐ ์ค์ ๋์ด ์๋๋ผ๋ ์ด๋ฅผ ๋ฌด์ํ๊ณ ๋ฆฌ๋ค์ด๋ ํธํ๋ค.
ํ์ฅ์๊ฐ '.do'์ธ ์์ฒญ์ ์์ 'redirect:'์ ๋ถ์ฌ์ viewresolver๊ฐ ๋์ํ์ง ์๋๋ก ํด์ผ ํ๋ค.
[์ฌ๋ฌ ์ปจํธ๋กค๋ฌ ์ค LoginController.java]
// 3. ํ๋ฉด ๋ค๋น๊ฒ์ด์
ModelAndView mav = new ModelAndView();
if (user != null) {
mav.setViewName("redirect:getBoardList.do");
} else {
mav.setViewName("redirect:login.jsp");
}
return mav;
'Spring > Spring Quick Start' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฒ์๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด: HttpSession, HttpServletRequest, ModelAndView (0) | 2021.01.07 |
---|---|
์คํ๋ง ์ธ์ฝ๋ฉ ์ค์ (0) | 2021.01.07 |
WEB-INF/action-servlet.xml ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ (0) | 2021.01.07 |
EL & JSTL ๋? (0) | 2021.01.07 |
MVC๋ฅผ ์ง์ ๊ตฌํํ์ฌ ๊ฒ์ํ ๊ฐ๋ฐ (0) | 2021.01.07 |
intelliJ์์ servlet ์์ฑํ๊ธฐ (0) | 2021.01.07 |