2020-12-11 TIL

less than 1 minute read

controller로 변환

  • 서블릿을 controller로 변환
    • 변환시 doGet과 doPost를 동시에 구현하고 있었던 경우 if (request.getMethod().equals(“GET”)) 으로 처리한다.
  • 주소가 바뀌는 경우가 있기 때문에 상대경로를 잘 지정해야 한다.

Spring FrameWork

  • https://unordinarydays.tistory.com/136
  • 4.에서 5.으로 바뀌는 것은 많이 바뀐것이고 5.0에서 5.1로 바뀌는 것은 메서드 같은 것이 추가된 것이며 5.0에서 5.0.20으로 바뀐 것은 릴리즈 한 이후에 자잘한 버그를 고친 것이다.

스크린샷 2020-12-11 오후 12.02.52

  • 파라미터 이름과 프로퍼티 이름이 같아야 한다.
  • /app/board/add ——> DispatcherServlet
    • —1) 페이지 컨트롤러를 찾는다.
    • —2) @RequestMapping이 붙은 메서드를 찾는다.
    • —3) 그 메서드의 파라미터를 알아내서 그 파라미터에 들어갈 값을 준비한다.
      • —> BoardAddController

멀티파트

  • 멀티파트 데이터의 파라미터 이름을 다르게 한다.
    • 왜냐하면 멀티파트는 파라미터로 따로 받아야 하는데 이름이 같으면 따로 받을수가 없다.
    • 도메인에서 photo를 String이 아니라 part파일로 변환하는 것보다는 따로 받아서 처리하는 것이 더 좋다.
@Controller
public class MemberAddController {

  ServletContext servletContext; // 메서드의 파라미터로 못받는다.
  MemberService memberService;

  public MemberAddController(MemberService memberService,
      ServletContext servletContext) { //이렇게 생성자에서 받을 수 있다.
    this.memberService = memberService;
    this.servletContext = servletContext;
  }

  @RequestMapping("/member/add")
  public String execute(Member member, Part photoFile) throws Exception {

    String filename = UUID.randomUUID().toString();
    String saveFilePath = servletContext.getRealPath("/upload/" + filename);

    photoFile.write(saveFilePath);

    member.setPhoto(filename);

    generatePhotoThumbnail(saveFilePath);

    memberService.add(member);
    return "redirect:list";
  }

servletContext

  • 메서드의 파라미터로 못받는다.
    • 생성자로 받을 수 있다.

@Autowired

  • 의존 객체를 front controller가 자동적으로 주입해준다.
    • 생성자를 만들지 않아도 된다.

Categories:

Updated: