파게로그

[Spring MVC] 문서 출력 방법 본문

콤퓨타 왕기초/Spring

[Spring MVC] 문서 출력 방법

파게 2021. 5. 2. 15:33

1. Servlet 객체를 얻어서 문자열 출력

2. @ResponseBody 설정을 통한 문자열 출력

3. ResourceViewResolver를 이용한 문서 출력

 

+ TileViewResolver를 이용한 문서 출력 등등등...

 

 

Spring이 제공하는 FrontController를 통해서 요청이 들어오게 되는데,

이 때 annotation을 보고 메서드가 호출되게 된다.

그리고 그 메서드를 .invoke() 하는데,

이 때 메서드를 확인할 때 파라미터가 있고 FrontController가 제공할 수 있는 것이라면,

Front Controller가 가지고 있는 객체를 전달해준다.

즉 response에다가 출력해버리면 된다.

 

 

package com.ddoongi.web.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.ddoongi.web.entity.Emp;
import com.ddoongi.web.service.EmpService;

@Controller
public class EmpController {
	
	private EmpService empService;

	@RequestMapping("/emp")
	public String emp() throws ClassNotFoundException {
		List<Emp> list = empService.getEmpList();
		
		String name = list.get(2).getEname();
		int empno = list.get(2).getEmpno();
		Date hiredate = list.get(2).getHiredate();
		
		System.out.println(name);
		return "emp";
	}
	
	@RequestMapping("/emp2")
	public void emp2(HttpServletResponse resp) throws ClassNotFoundException, IOException {
		List<Emp> list = empService.getEmpList();
		
		String name = list.get(2).getEname();
		int empno = list.get(2).getEmpno();
		Date hiredate = list.get(2).getHiredate();
		
		PrintWriter out = resp.getWriter();
		out.println(name);
		out.println(empno);
		out.println(hiredate);
	}
	
//	@Override
//	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		ModelAndView mv = new ModelAndView("/emp");
//		List<Emp> list = empService.getEmpList();
//		String name = list.get(2).getEname();
//		int empno = list.get(2).getEmpno();
//		Date hiredate = list.get(2).getHiredate();
//		mv.addObject("name", name);
//		mv.addObject("empno", empno);
//		mv.addObject("hiredate", hiredate);
//		return mv;
//	}
	
	@Autowired
	public void setEmpService(EmpService empService) {
		this.empService = empService;
	}	
}

 

문자열 자체를 반환하고 싶다면? 아래와 같이 한다. @ResponseBody가 없을 때에는 ViewResolver가 해석해버릴 것.

@RequestMapping("/emp3")
@ResponseBody
public String emp3() {
    return "Good Afternoon!";
}

 

Comments