수업/프로젝트
파이널 프로젝트 - 동호회등록 폼 ajax로 보내기
가평잣막걸리
2024. 7. 7. 22:26
뷰단을 만들어준다.
(뷰단 사진)
1. 동호회 등록은 로그인 후에만 등록 가능하게끔 하기 위해 aop에 해당 메소드를 만들어준다.
@Aspect
@Component
public class CommonAop {
@Pointcut("execution(public * com.spring.app..Controller*.requiredLogin_*(..))") // 메소드 괄호 속 .. => 파라미터가 있든지 없든지
public void requiredLogin() {}
// === Before Advice(공통관심사, 보조업무)를 구현한다. === //
@Before("requiredLogin()")
public void loginCheck(JoinPoint joinpoint) {
// 로그인 유무 확인을 위한 세션 얻어오기
HttpServletRequest request = (HttpServletRequest)joinpoint.getArgs()[0];
// joinpoint.getArg(): 주 업무 메소드의 파라미터를 가리킨다. 그 중에서도 [0]은 인덱스번호 0인 첫 번째 파라미터를 의미한다.
HttpServletResponse response = (HttpServletResponse)joinpoint.getArgs()[1];
HttpSession session = request.getSession();
if(session.getAttribute("loginuser") == null) {
String message = "로그인이 필요합니다.";
String loc = request.getContextPath()+"/member/login.do";
request.setAttribute("message", message);
request.setAttribute("loc", loc);
// === 로그인 후 로그인 전에 머물던 페이지로 돌아가는 작업 시작
String url = MyUtil.getCurrentURL(request);
session.setAttribute("goBackURL", url);
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/views/msg.jsp");
try {
dispatcher.forward(request, response);
} catch (ServletException | IOException e) {
e.printStackTrace();
}
// === 로그인 후 로그인 전에 머물던 페이지로 돌아가는 작업 끝
}
}
컨트롤러 머시기 클래스 안에 메소드명이 requiredLogin_머시기 인 것들은 모두 로그인유무를 확인하는 aop를 쓴다는 것이다.
컨트롤러에 내가 적은 메소드의 파라미터가 첫번째는 request, 두번째엔 response가 와야 한다.
2. controller에서 화면에 보여주기 위해 get방식으로 동호회등록 폼페이지를 요청한다.
// ========== 동호회 등록 ==========
// 동호회등록 폼페이지 요청
@GetMapping("/club/clubRegister.do")
public ModelAndView requiredLogin_clubRegister(HttpServletRequest request, HttpServletResponse response, ModelAndView mav) {
/*
동호회등록 종목 선택
List<Map<String,String>> sportList = service.getSportList();
mav.addObject("sportList", sportList);
*/
// 동호회등록 지역 선택
List<Map<String,String>> cityList = service.getCityList();
mav.addObject("cityList", cityList);
mav.setViewName("club/clubRegister.tiles2");
// /WEB-INF/views/club/clubRegister.jsp
return mav;
}
// 도시를 선택하면 해당하는 세부지역만 나오게 하기 위해서
DB에서 시군구 정보를 가져오는 메소드를 만든다.
service 로 간다.
dao로 간다.
매퍼로 와서 DB에서 select해온 cityseq와 cityname을 매핑시켜준다.
결과물을 가지고 다시 컨트롤러로 와서 뷰단으로 보내준다~~~
3. 도시를 선택하면 세부 지역이 나오게끔 data:cityname 해서 ajax로 컨트롤러에 보낸다.
요기서 다른팀원이 만들어둔 메소드가 있기때문에 고대로 그고를 사용할 수 있다.
↓
결과물을 가지고 다시 뷰단으로 간다.
(결과물 사진)
이제 다음 글에서는 폼에 넣은 데이터를 post방식으로 DB에 보내는 것을 보여줄것이당