지난번 프로젝트의 컨트롤러와 구조는 같다. 다만, 로그인 및 회원 정보, 세션 정보를 JSON으로 전송하기 위해 @ResponseBody 애너테이션을 사용하였다. 그리고 @ControllAdvice, @Bean도 사용하였는데 이에 대해서는 나중에 새로운 포스팅에서 따로 설명하겠다.
//CustomerController.java
package customer.control;
import java.util.List;
import javax.inject.Inject;
import javax.servlet.http.HttpSession;
import org.springframework.context.annotation.Bean;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import customer.dao.BoardCDao;
import customer.dao.CustomerDao;
import customer.dto.BoardDTO;
import customer.dto.CustomerDTO;
@Controller
public class CustomerController {
@Inject
private CustomerDao cdao;
@Inject
private BoardCDao bcdao;
@RequestMapping(value="/", method=RequestMethod.GET)
public String index() {
return "index";
}
@ResponseBody
@RequestMapping(value="/login", method=RequestMethod.POST)
public int login(CustomerDTO c, HttpSession Hsession) {
return cdao.Login(c, Hsession);
}
@RequestMapping(value="/logout", method=RequestMethod.GET)
public String logout(HttpSession Hsession) {
Hsession.removeAttribute("u");
return "redirect:/";
}
@RequestMapping(value="/main", method=RequestMethod.GET)
public String main() {
return "main";
}
@RequestMapping(value="/register", method=RequestMethod.GET)
public String register() {
return "register";
}
@ResponseBody
@RequestMapping(value="/register", method=RequestMethod.POST)
public int register(CustomerDTO c) {
System.out.println("여기는 컨트롤러 안.");
return cdao.Register(c);
}
@RequestMapping(value="/write_bbs", method=RequestMethod.GET)
public String write_bbs(HttpSession session) {
CustomerDTO u = (CustomerDTO)session.getAttribute("u");
if(u==null) return "redirect:/";
return "write_bbs";
}
@ResponseBody
@RequestMapping(value="/write_bbs", method=RequestMethod.POST)
public int write_bbs(BoardDTO b, HttpSession session) {
CustomerDTO u = (CustomerDTO) session.getAttribute("u");
if(u==null) return -1;
b.setB_user(u.getC_no());
return bcdao.write_bbs(b);
}
@ResponseBody
@RequestMapping(value="/bbs_all", method=RequestMethod.GET)
public List<BoardDTO> bbs_all() {
return bcdao.bbs_all();
}
@ResponseBody
@RequestMapping(value="/get_bbs", method=RequestMethod.GET)
public BoardDTO get_bbs(BoardDTO b) {
return bcdao.get_bbs(b);
}
@ControllerAdvice
public class JsonAdviceController extends AbstractJsonpResponseBodyAdvice {
public JsonAdviceController() {
super("callback");
}
}
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
jsonConverter.setObjectMapper(objectMapper);
return jsonConverter;
}
}
'☕Java > Spring' 카테고리의 다른 글
[20210723] Spring + MyBatis를 이용한 로그인 및 게시판 6 - spring-app.xml, spring-controller.xml, SqlMapconfig.xml (0) | 2021.07.23 |
---|---|
[20210722] Spring + MyBatis를 이용한 로그인 및 게시판 5 - mapper (0) | 2021.07.22 |
[20210719] Spring + MyBatis를 이용한 로그인 및 게시판 3 - DAO (0) | 2021.07.19 |
[20210716] Spring + MyBatis를 이용한 로그인 및 게시판 2 - DTO (0) | 2021.07.16 |
[20210715] Spring + MyBatis를 이용한 로그인 및 게시판 1 - 프로젝트 구조 (0) | 2021.07.15 |