Skip to content

HHNebula/toy_springboot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring - Mybatis CRUD Practice Project

📃 Info 🔍

📅 개발기간

2023-01-20 ~ 2023-01-21

📚 기술스텍


❓ 개발목적

MVC 패턴 ( Client > Servlet > Service > DAO > DB ) 에 대해 이해한다.

웹 프로그래밍 학습 노트


View

Main


주요 코드

설문조사 Page 로그인 필터

@WebFilter(value = { "/form/*", "/form" })
public class FromFilter implements Filter {

    private static final String[] whitelist = { "/form/login", "/form/logout", "/form/signup" };

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        String requestURI = httpRequest.getRequestURI();
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        if (isLoginCheckPath(requestURI)) {
            HttpSession session = httpRequest.getSession(false);
            if (session == null || session.getAttribute("userInfo") == null) {
                httpResponse.sendRedirect("/form/login");
                return;
            }
        }
        chain.doFilter(httpRequest, httpResponse);
        return;
    }

    private boolean isLoginCheckPath(String requestURI) {
        return !PatternMatchUtils.simpleMatch(whitelist, requestURI);
    }

}

로그인 실패 시 메세지 전달

@PostMapping(value = "/login")
public Object loginPost(@RequestParam Map<String, Object> params, ModelAndView modelAndView,
        HttpSession session) {

    Object userInfo = formService.loginAttempt(params);

    if (userInfo == null) {
        modelAndView.addObject("msg", "로그인 정보가 불일치합니다.");
        modelAndView.setViewName("form/login");
        return modelAndView;
    } else {
        session.setAttribute("userInfo", userInfo);
        return "redirect:/form/survey";
    }

}

View 재사용 (회원가입 및 정보수정)

...

<!-- 로그인 여부에 따라 페이지명을 다르게 출력 -->
<div class="fs-1 text-center mt-5 mb-3">${userInfo == null ? 'Sign Up To Survey' : 'My Page'}</div>

<!-- 로그인 여부에 따라 input:hidden 추가 및 form action 동작 -->
<form action="/form/${userInfo == null ? 'signup' : 'mypage'}" method="post" id="userForm">
<c:if test="${userInfo != null}">
    <input type="hidden" name="muid" id="muid" value="${userInfo.get("MUID")}">
</c:if>

    <!-- 로그인 여부에 따라 value 작성 -->
    <div class="row d-flex justify-content-center">
        <div class="col-3 my-3">
            <label class="form-label" for="id">ID</label>
            <input class="form-control w-100" type="text" name="id" id="id" value="${userInfo.get("ID")}" required>
        </div>
    </div>

    ...

    <!-- 로그인 여부에 따라 버튼명 작성 -->
    <div class="row d-flex justify-content-center">
        <div class="col-3 my-3">
        <c:if test="${userInfo == null}">
            <button class="btn btn-dark w-100" type="submit" id="insertButton">가입하기</button>
        </c:if>
        <c:if test="${userInfo != null}">
            <button class="btn btn-dark w-100" type="submit" id="updateButton">수정하기</button>
        </c:if>
        </div>
    </div>
</form>

<!-- 정보수정일 경우에만 탈퇴하기 버튼 노출 -->
<c:if test="${userInfo != null}">
    <form action="/form/delete" method="post" id="dropForm">
        <input type="hidden" name="muid" id="muid" value="${userInfo.get("MUID")}">
        <div class="row d-flex justify-content-center">
            <div class="col-3 my-3">
                <div class="btn btn-danger w-100" id="dropButton">탈퇴하기</div>
            </div>
        </div>
    </form>
</c:if>
...

About

Spring boot와 Mybatis를 활용한 CRUD 연습 개인 프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published