JAVA/Theory

[MAVEN] SpringMVC ๋ฒ„์ „ 1

ITs Min 2024. 3. 5.

๐Ÿ” 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;
	}
}

 

๋Œ“๊ธ€

TOP

๋Šฆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๋• ๋„ˆ๋ฌด ๋Šฆ์€ ๊ฑฐ๋‹ค.