티스토리 뷰

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 에서 인터셉터 적용

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함