1️⃣ 일정보관함 로직 구현
메인 화면에서 일정보관함으로 이동할 수 있도록 top.jsp에 경로를 추가하고
마이페이지 안에 있는 버튼으로도 이동할 수 있기 때문에 MyPageController.java 안에도 경로를 추가했다.
✅ MyPageController.java
package com.controller; import java.util.HashMap; import java.util.List; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.dto.BoardDTO; import com.dto.MemberDTO; import com.dto.UserLikeDTO; import com.service.MemberService; import com.service.MyPageService; @Controller public class MyPageController { @Autowired MyPageService service; @Autowired MemberService memberService; // 일정보관함 @GetMapping("/travelList") public String myPlan(HttpSession session, Model m) { MemberDTO dto = (MemberDTO) session.getAttribute("loginInfo"); if (dto != null) { // Null 체크를 수행 String userID = ((MemberDTO) session.getAttribute("loginInfo")).getUserID(); List<TravelDTO> travelList = service.travel(userID); m.addAttribute("travelList", travelList); } return "mypage/travelList"; }
✅ MyPageDAO.java
package com.dao; import java.util.List; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.dto.BoardDTO; import com.dto.MemberDTO; import com.dto.UserLikeDTO; @Repository public class MyPageDAO { @Autowired SqlSessionTemplate session; //session 주입받기 //일정보관함 public List<TravelDTO> travel(String userID) { return session.selectList("MyPageMapper.travel", userID); } }
✅ MyPageService.java
package com.service; import java.util.List; import com.dto.BoardDTO; import com.dto.MemberDTO; import com.dto.PlanDTO; import com.dto.TravelListDTO; import com.dto.UserLikeDTO; public interface MyPageService { //일정보관함 public List<TravelDTO> travel(String userID); }
✅ MyPageServiceImpl.java
package com.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.dao.MyPageDAO; import com.dto.BoardDTO; import com.dto.MemberDTO; import com.dto.UserLikeDTO; @Service public class MyPageServiceImpl implements MyPageService { @Autowired MyPageDAO dao; //일정보관함 @Override public List<TravelDTO> travel(String userID) { List<TravelDTO> list = dao.travel(userID); return list; } }
✅ MyPageMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="MyPageMapper"> <!-- 일정보관함 --> <select id="travel" parameterType="string" resultType="TravelDTO"> select travelTitle, areaCode from Travel where userID=#{userID} </select> </mapper>
2️⃣ loginCheckInterceptor 적용
✅ loginCheckInterceptor.java 작성
package com.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Component; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.dto.MemberDTO; @Component("loginCheckInterceptor") public class LoginCheckHandlerInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 로그인 체크 여부 확인 HttpSession session = request.getSession(); MemberDTO dto = (MemberDTO)session.getAttribute("loginInfo"); // 세션에 있는 login정보 저장 if(dto == null) {// 저장이 안된 경우 -> 로그인 X response.sendRedirect("/app/loginForm"); // 로그인하도록 유도 return false; // false이기 때문에 interceptor가 적용된 Controller는 실행되지 않음 } return true; // null값이 아니라면 dto에 로그인 정보 저장 -> 로그인 O } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
✅ servlet-context에 <mvc:interceptors> 경로 지정
<!-- interceptor 경로 지정 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/loginCheck/*" /> <ref bean="loginCheckInterceptor" /> </mvc:interceptor> </mvc:interceptors>
✅ MyPageController.java에서 인터셉터 적용
✅ top.jsp 에서 인터셉터 적용
'Project 여담 > 4주차' 카테고리의 다른 글
10/27 : unable to start within 45 seconds / 회원 탈퇴 Transaction 처리 / 탈퇴 프로세스 에러 해결 (0) | 2023.10.27 |
---|---|
10/26 : 일정 삭제 undefined 400 에러 / 일정 삭제 기능 구현 (0) | 2023.10.26 |
10/25 : 일정보관함 목록 테스트 / 일정 삭제하기 로직 구현 (0) | 2023.10.25 |
10/24 : travel 패키지 분리 / travelList.jsp / 일정 상세보기 로직 구현 (0) | 2023.10.24 |
1️⃣ 일정보관함 로직 구현
메인 화면에서 일정보관함으로 이동할 수 있도록 top.jsp에 경로를 추가하고
마이페이지 안에 있는 버튼으로도 이동할 수 있기 때문에 MyPageController.java 안에도 경로를 추가했다.
✅ MyPageController.java
package com.controller; import java.util.HashMap; import java.util.List; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.dto.BoardDTO; import com.dto.MemberDTO; import com.dto.UserLikeDTO; import com.service.MemberService; import com.service.MyPageService; @Controller public class MyPageController { @Autowired MyPageService service; @Autowired MemberService memberService; // 일정보관함 @GetMapping("/travelList") public String myPlan(HttpSession session, Model m) { MemberDTO dto = (MemberDTO) session.getAttribute("loginInfo"); if (dto != null) { // Null 체크를 수행 String userID = ((MemberDTO) session.getAttribute("loginInfo")).getUserID(); List<TravelDTO> travelList = service.travel(userID); m.addAttribute("travelList", travelList); } return "mypage/travelList"; }
✅ MyPageDAO.java
package com.dao; import java.util.List; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.dto.BoardDTO; import com.dto.MemberDTO; import com.dto.UserLikeDTO; @Repository public class MyPageDAO { @Autowired SqlSessionTemplate session; //session 주입받기 //일정보관함 public List<TravelDTO> travel(String userID) { return session.selectList("MyPageMapper.travel", userID); } }
✅ MyPageService.java
package com.service; import java.util.List; import com.dto.BoardDTO; import com.dto.MemberDTO; import com.dto.PlanDTO; import com.dto.TravelListDTO; import com.dto.UserLikeDTO; public interface MyPageService { //일정보관함 public List<TravelDTO> travel(String userID); }
✅ MyPageServiceImpl.java
package com.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.dao.MyPageDAO; import com.dto.BoardDTO; import com.dto.MemberDTO; import com.dto.UserLikeDTO; @Service public class MyPageServiceImpl implements MyPageService { @Autowired MyPageDAO dao; //일정보관함 @Override public List<TravelDTO> travel(String userID) { List<TravelDTO> list = dao.travel(userID); return list; } }
✅ MyPageMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="MyPageMapper"> <!-- 일정보관함 --> <select id="travel" parameterType="string" resultType="TravelDTO"> select travelTitle, areaCode from Travel where userID=#{userID} </select> </mapper>
2️⃣ loginCheckInterceptor 적용
✅ loginCheckInterceptor.java 작성
package com.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Component; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.dto.MemberDTO; @Component("loginCheckInterceptor") public class LoginCheckHandlerInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 로그인 체크 여부 확인 HttpSession session = request.getSession(); MemberDTO dto = (MemberDTO)session.getAttribute("loginInfo"); // 세션에 있는 login정보 저장 if(dto == null) {// 저장이 안된 경우 -> 로그인 X response.sendRedirect("/app/loginForm"); // 로그인하도록 유도 return false; // false이기 때문에 interceptor가 적용된 Controller는 실행되지 않음 } return true; // null값이 아니라면 dto에 로그인 정보 저장 -> 로그인 O } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
✅ servlet-context에 <mvc:interceptors> 경로 지정
<!-- interceptor 경로 지정 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/loginCheck/*" /> <ref bean="loginCheckInterceptor" /> </mvc:interceptor> </mvc:interceptors>
✅ MyPageController.java에서 인터셉터 적용
✅ top.jsp 에서 인터셉터 적용
'Project 여담 > 4주차' 카테고리의 다른 글
10/27 : unable to start within 45 seconds / 회원 탈퇴 Transaction 처리 / 탈퇴 프로세스 에러 해결 (0) | 2023.10.27 |
---|---|
10/26 : 일정 삭제 undefined 400 에러 / 일정 삭제 기능 구현 (0) | 2023.10.26 |
10/25 : 일정보관함 목록 테스트 / 일정 삭제하기 로직 구현 (0) | 2023.10.25 |
10/24 : travel 패키지 분리 / travelList.jsp / 일정 상세보기 로직 구현 (0) | 2023.10.24 |