본문 바로가기
공부기록

5월 25일 Spring - 게시글 수정 처리

by project100 2023. 5. 25.

contents와 만드는 방법 동일

 

1. wirteForm.jsp

수정할 페이지에 원래 제목, 내용, 첨부파일 불러오기 설정, 뒤로가기 링크다시 설정, form action부분 수정

2. borardcontents - upboard에 javascript로 링크 설정

 

3. boardcontroller

링크설정 

4. boardsevice

5. boardcontroller 연결

 

수정 글쓰기 = 글쓰기와 동일

1. boardcontroller

2. boardDto - boardDto.xml

3. boardservice

4. boardcontroller 연결

 

수정 파일 개별 삭제

1. updateForm.jsp

2. boardcontroller

3. boarddto - boarddto.xml

4. boardsevice

5. boardcontoller

6. updateForm.jsp

 

오류페이지 만들기

# error page
server.error.whitelabel.enabled=false

 

404, 500 오류 시 보여질 페이지 

views 폴더 하위에 'error' 폴더 생성 후 다음 페이지 작성

- 페이지 없음 오류용 페이지 : 404.jsp

- 프로그램에서 발생되는 오류(Exception)

  DB 접속 실패, 파일 처리 등 : 500.jsp

 

비인가 접속제어 - SessionInterceptor

ppt자료 

@Component
@Slf4j
public class SessionInterceptor implements AsyncHandlerInterceptor {
    // 컨트롤러로 요청(request)이 전달되기 전에 처리
    // 로그인 전에 처리하는 메소드
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("preHandle()");

        // 세션의 로그인 정보가 있는지 확인하기 위해 session 구하기
        HttpSession session = request.getSession();
        // 로그인을 안한 상태로 페이지 접근
        if(session.getAttribute("mb") == null){
            log.info("인터셉트! - 로그인 안함");
            response.sendRedirect("/");
            return false;
        }
        return true;
    }
    // 로그아웃 후에 처리하는 메소드
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.info("postHandle()");
        // 현재 사용하는 웹 프로토콜(http) 버전은 1.1과 1.0 혼용
        if(request.getProtocol().equals("HTTP/1.1")){
            response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
        } else {
            response.setHeader("Pragma", "no-cache");
        }
    }
}

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    SessionInterceptor interceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 인터셉터 영역에 모든 것을 다 추가 /**
        // 제외할 것들 excludePathPatterns
        registry.addInterceptor(interceptor).addPathPatterns("/**")
                .excludePathPatterns("/","/css/**", "/js/**", "/images/**")
                .excludePathPatterns("/joinForm", "/idCheck", "/joinProc", "/loginForm", "/loginProc", "/error/**");
    }
}