๐ DispatcherServlet
๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ DispatcherServlet์ ์ฌ์ฉ. ์ด๋ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ์ญํ ์ ์ํํ๋ฉฐ ๋ฉค๋ฒ๋ณ์ ์ด๊ธฐํ, ์์ฑ์, Setter, ์ด๋ ธํ ์ด์ , ์์กด ์ฃผ์ , init() ๋ฉ์๋ ๋ฑ์ ํฌํจํ๋ค.
package com.spring.controller.common;
import java.io.IOException;
import org.springframework.stereotype.Controller;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
public class DispatcherServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private HandlerMapping handler;
private ViewResolver viewResolver;
// init-method="init"
// 1. ๋ฉค๋ฒ๋ณ์ ์ด๊ธฐํํ๋ ์ญํ
// 2. ์์ฑ์
// 3. setter
// 4. @Autowired
// 5. DI(์์กด์ฃผ์
)
// 6. init() ๋ฉ์๋
public void init() {
handler=new HandlerMapping();
viewResolver=new ViewResolver();
viewResolver.setPrefix("./");
viewResolver.setSuffix(".jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doAction(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doAction(request, response);
}
private void doAction(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri=request.getRequestURI();
String cp=request.getContextPath();
String commend=uri.substring(cp.length());
System.out.println("FC : "+commend);
Controller controller=handler.getController(commend);
/*
ModelAndView mav = controller.handleRequest(request, response);
if(!mav.getViewName().contains(".do")) {
mav.setViewName(viewResolver.getView(mav.getViewName()));
}
response.sendRedirect(mav.getViewName());
*/
}
}
๐ Controller
๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ Controller ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉฐ, ViewResolver๊ฐ ๋ฑ์ฅํ๊ธฐ ์ ์๋ ActionForward๋ฅผ ์ฌ์ฉํ๋ค.
package com.spring.controller.common;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
// Action
public interface Controller {
// ActionForward → String
String execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;
}
๐ HandlerMapping
๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ HandlerMapping์ ์ฌ์ฉํ์ฌ DI๋ก ์์ฑ์ ์ฃผ์ ์ ํตํด ์ฌ์ฉํ๋ค.
package com.spring.controller.common;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Controller;
public class HandlerMapping {
private Map<String,Controller> mappings;
public HandlerMapping() {
mappings=new HashMap<String,Controller>();
//mappings.put("/login.do", new LoginController());
//mappings.put("/main.do", new MainController());
}
public Controller getController(String commend) {
return mappings.get(commend);
}
}
๐ ViewResolver
๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ ViewResolver๋ฅผ ์ฌ์ฉํ๋ฉฐ, DI๋ก setter ์ฃผ์ ์ ์ฌ์ฉํ๋ค.
package com.spring.controller.common;
// ActionForward ๊ฐ ํ์์์ด์ง!
public class ViewResolver {
public String prefix;
public String suffix;
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
public String getView(String view) {
return prefix+view+suffix;
}
}
'JAVA > Theory' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Stack๊ณผ Queue ๊ทธ๋ฆฌ๊ณ Deque (0) | 2024.04.25 |
---|---|
[MAVEN] SpringMVC ๋ฒ์ 2 (0) | 2024.03.05 |
[Spring] ์์กด ์ฃผ์ ์ ์ํ ์ด๋ ธํ ์ด์ (1) | 2024.03.04 |
[Spring] ์์กด ์ฃผ์ (DI) (0) | 2024.02.29 |
Spring ํ๋ ์์ํฌ (0) | 2024.02.27 |
๋๊ธ