수업/프로젝트

파이널 프로젝트 - 동호회등록 폼 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에 보내는 것을 보여줄것이당