SPRING CONTROLLER 스프링 컨트롤러

스프링 컨트럴러는 자동으로 스프링 객체로 등록되요.

그런데 자동으로 등록하게 해주라고 선언을 해줘야 해요.

servlet-context.xml 파일안에 이렇게 선언해요.

<context:component-scan base-package="com.sms2019.controller" />

controller 안에 있는 것을 등록해줘요. 

@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}

@controller 어노테이션을 선언해주면 컨트롤러로 등록이되요. 

@REQUESTMAPPING  은 경로를 선언해주는거에요. 

@REQUESTMAPPING는 GETMAPPING 과 POSTMAPPING 로 구분해서 사용할수 있어요. 

@PostMapping("/create") 

@GetMapping("/videos/{name}")

등과 같이요. 

	@ResponseBody
	@RequestMapping(value = "/appsLogin_ok", method = RequestMethod.GET)
	public CommonData appsLogin_ok(HttpServletRequest request, HttpServletResponse response, HttpSession session, Model model) throws Exception
	{
@ResponseBody
	@RequestMapping(value = "/appsLogin_make", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	public CommonData appsLogin_make(HttpServletRequest request, HttpServletResponse response, @RequestBody CommonData dto, HttpSession session, Model model) throws Exception
	{

REQUESTMAPPING로 GET과 POST를 구분할수 있어요.

데이터를 리턴할땐 Model 을사용하면되요. 

넘어온 데이터를 넘길때 하나하나 모델에 담을수도 있지만 강제로 담아서 넘기는 방법도 있어요. 

@RequestMapping(value = "/aogs/aogs001", method = RequestMethod.GET)
	public String aogs001(HttpServletRequest request, HttpSession session, Model model) throws Exception
	{
    Map<String, String[]> paramMap = request.getParameterMap();
		Iterator keyData = paramMap.keySet().iterator();
		CommonData dto = new CommonData();
		while (keyData.hasNext())
		{
			String key = ((String) keyData.next());
			String[] value = paramMap.get(key);
			dto.put(key, value[0].toString());
			model.addAttribute(key, value[0].toString());
			smsp.print_String("key : " + key + ", value : " + value[0].toString());
		}
        

하나하나 넘길땐 REMap<String, String[]> paramMap = request.getParameterMap();

에 넘겨받아서. model.addAttribute(key, value[0].toString()); 이렇게 하나하나 넣어줄수 있어요. 

@RequestMapping(value = "/TEST", method = RequestMethod.GET)
  public void loginGET(@ModelAttribute("test") commondto dto) {
	return "test"
  }

리턴타입 

void

void일경우 해당 url 경로를 그대로 jsp파일의 이름으로 사용.

String 

string일경우 리턴타입의 이름에 따라서 jsp파일의 이름을 사용. 

json인경우 .

  @RequestMapping(value = "/select_getmember_list_join", method = RequestMethod.POST, consumes="application/json")
  public @ResponseBody CommonData select_getmember_list_join(@RequestBody CommonData dto) throws Exception {

pox.xml에 추가해줘야해요. 메이븐 라이브러리 

	<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.5.4</version>
		</dependency>

ResponseEntity

RequestMapping(value = "/get_member_image", method = RequestMethod.GET)
	public ResponseEntity<byte[]> get_member_image(HttpServletRequest request, Model model) throws Exception
	{

헤더정보나 데이터를 전달할때 사용. 

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,