728x90
반응형
SMALL
마지막으로 Controller와 완성된 view를 보여주며 마무리 하겠습니다.
MainController
package com.chart.misay.controller;
import com.chart.misay.service.MisayService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequiredArgsConstructor
public class MainController {
private final MisayService misayService;
@GetMapping({"","index.html","index"})
public String index(Model model){
model.addAttribute("list",misayService.getList());
return "index";
}
@GetMapping("/detail")
public String detail(@RequestParam("bno") Long bno, Model model){
model.addAttribute("list",misayService.read(bno));
return "detail";
}
@GetMapping("/search")
public String search(@RequestParam("keyword") String keyword,
@RequestParam("searchOption") String searchOption, Model model){
if ("surgeryName".equals(searchOption)) {
model.addAttribute("list", misayService.getSurgery(keyword));
} else if ("name".equals(searchOption)) {
model.addAttribute("list", misayService.getName(keyword));
}
return "search";
}
}
MainController의 index를 최근 차트의 내림차순으로 전부 가져오며,
detail은 차트의 상세보기를 랜더링하며,
search는 수술부위 or 환자 이름에 따른 검색 결과를 랜더링 합니다.
CategoryController
package com.chart.misay.controller;
import com.chart.misay.service.MisayService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequiredArgsConstructor
public class CategoryController {
final MisayService misayService;
@GetMapping("/cx")
public String cx(@RequestParam("value") String value, Model model){
model.addAttribute("list", misayService.getCategory(value));
return "index";
}
@GetMapping("/sh")
public String sh(@RequestParam("value") String value, Model model){
model.addAttribute("list", misayService.getCategory(value));
return "index";
}
@GetMapping("/elbow")
public String elbow(@RequestParam("value") String value, Model model){
model.addAttribute("list", misayService.getCategory(value));
return "index";
}
@GetMapping("/lx")
public String lx(@RequestParam("value") String value, Model model){
model.addAttribute("list", misayService.getCategory(value));
return "index";
}
@GetMapping("/knee")
public String knee(@RequestParam("value") String value, Model model){
model.addAttribute("list", misayService.getCategory(value));
return "index";
}
@GetMapping("/ankle")
public String ankle(@RequestParam("value") String value, Model model){
model.addAttribute("list", misayService.getCategory(value));
return "index";
}
}
클라이언트가 카테고리에서 선택한 수술 부위에 맞는 환자 차트들을 index 페이지에 랜더링합니다.
MemberController
package com.chart.misay.controller;
import com.chart.misay.dto.MisayDTO;
import com.chart.misay.service.MisayService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
@RequiredArgsConstructor
public class MemberController {
final MisayService misayService;
@GetMapping("/createMember")
public String createMember(){
return "createMember";
}
@PostMapping("/member")
public String member(@ModelAttribute MisayDTO dto){
misayService.member(dto);
return "redirect:/index";
}
@GetMapping("/membership")
public String membership(Model model){
model.addAttribute("list",misayService.getMembers());
return "membership";
}
@GetMapping("/searchMember")
public String searchMember(@RequestParam("keyword") String keyword, Model model){
model.addAttribute("list",misayService.searchMembers(keyword));
return "membership";
}
@GetMapping("/memberDetail")
public String memberDetail(@RequestParam("name") String name,
@RequestParam("mno") Long mno,
Model model){
model.addAttribute("member",misayService.getMisayDTO(mno));
model.addAttribute("list", misayService.getName(name));
return "memberDetail";
}
@GetMapping("/register")
public String register(@RequestParam("name") String name,
@RequestParam("age")String age,
@RequestParam("mno") Long mno,
Model model){
model.addAttribute("name", name);
model.addAttribute("age", age);
model.addAttribute("mno", mno);
return "register";
}
@PostMapping("/register")
public String register(@ModelAttribute MisayDTO dto){
System.out.println(dto);
misayService.register(dto);
return "redirect:index";
}
@GetMapping("/memberChange")
public String memberChange(@RequestParam("name") String name, @RequestParam("age") String age, @RequestParam("mno") Long mno, Model model){
model.addAttribute("mno", mno);
model.addAttribute("name", name);
model.addAttribute("age", age);
return "memberChange";
}
}
회원 등록이나 글 등록은 post로 처리했으며 필드가 별로 없어서 dto는 사용하지 않았습니다.
AlertController
package com.chart.misay.controller;
import com.chart.misay.dto.MisayDTO;
import com.chart.misay.entity.Member;
import com.chart.misay.repository.MemberRepository;
import com.chart.misay.repository.MisayRepository;
import com.chart.misay.service.MisayService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Optional;
@RestController
@RequiredArgsConstructor
public class AlertController {
final MemberRepository memberRepository;
final MisayRepository misayRepository;
final MisayService misayService;
@PostMapping("/memberChange")
public String memberChange(@ModelAttribute MisayDTO dto){
Optional<Member> optionalMember = memberRepository.findById(dto.getMno());
if (optionalMember.isPresent()) {
Member member = optionalMember.get();
member.setName(dto.getName());
member.setAge(dto.getAge());
memberRepository.save(member);
}
return "<script type='text/javascript'>"
+ "alert('수정이 완료되었습니다.');"
+ "location.href = '/membership';"
+ "</script>";
}
@PostMapping("/modify")
public String modify(@ModelAttribute MisayDTO dto){
misayService.modify(dto);
return "<script type='text/javascript'>"
+ "alert('수정이 완료되었습니다.');"
+ "location.href = document.referrer;"
+"</script>";
}
@GetMapping("/delete")
public String delete(@RequestParam("bno") Long bno){
misayService.deleteBoard(bno);
return "<script type='text/javascript'>"
+ "alert('삭제가 완료되었습니다.');"
+ "location.href = '/membership';"
+"</script>";
}
}
회원 정보 수정, 글 수정&삭제 할때 @RestController로써 alert()를 사용하기위한 컨트롤러 입니다.
view
이번 프로젝트의 view는 무료템플릿을 다운받아서 제가 필요한 부분만 수정해서 만들었습니다.
제 이름으로 회원을 등록해서 '회원관리' 버튼을 누르면 위 사진처럼 화면이 나오고
해당 회원에 대한 차트를 이렇게 볼 수 있습니다.
차트를 상세보기하면 위 화면처럼 보입니다.
게시판 공부한단 개념으로 만들었는데 아직 페이징처리를 못해서 추후 페이징 구현하는 거까지 포스팅 하겠습니다.
이상으로 프로젝트 마치겠습니다.
728x90
반응형
LIST
'Side Project' 카테고리의 다른 글
[Spring Boot] chatGPT를 활용한 AI 사이트 (5) - 기능 추가(광고 문구) (0) | 2023.10.25 |
---|---|
[Spring Boot] chatGPT를 활용한 AI 사이트 (4) - 기능 추가(페이징) (0) | 2023.10.22 |
[Spring Boot] 환자 관리 프로그램 - Service (3) (0) | 2023.10.19 |
[Spring Boot] 환자 관리 프로그램 - Entity, Repository (2) (0) | 2023.10.19 |
[Spring Boot] 환자 관리 프로그램 - 설정 (1) (0) | 2023.10.18 |