[TIL] 240419

Geehyun(장지현)·2024년 4월 22일

TIL

목록 보기
65/70
post-thumbnail

Today

  • MyBatis에서 쿼리 넘길 때 기본적으로 파라미터 하나만을 보낼 수 있음
    => 2개 이상 보내기 위에서는

    1. @Param("이름") 으로 명시해주는 방법
    2. sql에서 값을 넣어줄 때 #{arg0}, #{arg1} ... 또는 #{param1}, #{param2} ... 로 사용
      * arg는 0부터 시작 param은 1부터 시작! 오타 아님!
  • request.getSession(false) : 세션이 없으면 생성하지 말고, 있는것만 리턴해
    request.getSession(true) : 세션이 없으면 생성해서 리턴, 있으면 있는거 리턴 (기본값)

  • 사이트 돌아다니다가 로그인 하고, 로그인 하고나면 보던 페이지로 가는 방법

    1. Login 페이지에 referer 정보를 넘긴다.
    <form action="/login/login" method="post">
        <input type="hidden" name="acc_url" value="${header.referer}">
        <div><span>아이디 : <input type="text" name="user_id" id="user_id" <c:if test="${!empty cookie['save_id'].value}">value="${cookie['save_id'].value}" </c:if></span></div>
        <div><span>비밀번호 : <input type="password" name="pwd" id="pwd" value=""></span></div>
        <div>
            <label for="save_id"><input type="checkbox" name="save_id" id="save_id" <c:if test="${!empty cookie['save_id'].value}">checked</c:if> >아이디 저장</label>
            <label for="auto_login"><input type="checkbox" name="auto_login" id="auto_login" <c:if test="${!empty cookie['auto_login'].value}">checked</c:if> >자동 로그인</label>
        </div>
        <div>
            <button type="submit">로그인</button>
        </div>
    </form>
    1. LoginController에서 @RequestParam을 이용해서 기본값을 지정해준 후 값을 받는다.
     @RequestMapping(value = "/login", method = RequestMethod.POST)
        public String loginPOST(@Valid MemberDTO memberDTO,
                                @RequestParam(name = "acc_url", defaultValue = "/bbs/list") String acc_url,
                                @RequestParam(name = "save_id", defaultValue = "") String save_id,
                                @RequestParam(name = "auto_login", defaultValue = "") String auto_login,
                                RedirectAttributes redirectAttributes,
                                HttpServletRequest request,
                                HttpServletResponse response,
                                BindingResult bindingResult
                                ) {
            log.info("---------------------");
            log.info("LoginController => loginPOST()");
            log.info("user_id : " + memberDTO.getUser_id());
            log.info("pwd : " + memberDTO.getPwd());
            log.info("save_id : " + save_id);
            log.info("auto_login : " + save_id);
            log.info("---------------------");
            if(bindingResult.hasErrors()) {
                redirectAttributes.addFlashAttribute("err", bindingResult.getAllErrors());
                return "redirect:/login/login";
            }
            MemberDTO loginDTO = serviceIf.login(memberDTO.getUser_id(), memberDTO.getPwd());
            if (loginDTO != null) {
                if (save_id.equals("on")) {
                    Cookie cookie = new Cookie("save_id", loginDTO.getUser_id());
                    cookie.setPath("/");
                    cookie.setMaxAge(999999);
                    response.addCookie(cookie);
                }
                if (auto_login.equals("on")) {
                    Cookie cookie = new Cookie("auto_login", loginDTO.getUser_id());
                    cookie.setPath("/");
                    cookie.setMaxAge(999999);
                    response.addCookie(cookie);
                }
                HttpSession session = request.getSession();
                session.setAttribute("user_id", loginDTO.getUser_id());
                return "redirect:"+acc_url;
            }
            redirectAttributes.addFlashAttribute("err", "로그인 실패");
            return "redirect:/login/login";
        }
        @RequestMapping(value = "/logout")
        public String logout(HttpServletRequest request) {
            log.info("---------------------");
            log.info("LoginController => logout()");
            log.info("---------------------");
            HttpSession session = request.getSession(false);
            //`request.getSession(false)` : 세션이 없으면 생성하지 말고, 있는것만 리턴해
            //`request.getSession(true)` : 세션이 없으면 생성해서 리턴, 있으면 있는거 리턴 (기본값)
            session.invalidate();
            return "redirect:/bbs/list";
        }
    }

Review

  • 과제로 현재 진행중인 spring 웹 mvc 게시판 부분 회원가입/마이페이지/관련 제한 사항 추가 하는 부분 진행 필요!!!
  • 부트스트랩의 경우 ui관련해서 많은 기능들이 제공되나 제대로 쓰려면 좀 공부가 필요할 것 같음!
    다음 팀 플젝은 부트스트랩을 이용할 수 있으면 좋을 것 같음!
  • 정처기 실기...준비중!
profile
블로그 이전 했습니다. 아래 블로그 아이콘(🏠) 눌러서 놀러오세요

0개의 댓글