KSI일기장
spring 로그인, 로그아웃, 로그인 실패시 메세지 본문
*login
//MemberController
@Controller //생성된 bean이 Controller임을 명시 + bean 등록
@RequestMapping("/member") //localhost:8080/comm/member 이하의 요청을 처리하는 컨트롤러
@SessionAttributes({"loginMember"}) //Model에 추가된값이 key와 어노테이션에 작성된 값이 같으면
//해당값을 session scope로 이동시키는 역할을 한다
public class MemberController {
private Logger logger = LoggerFactory.getLogger(MemberController.class);
@Autowired
private MemberService service;
//Controller :요청/응답을 제어하는 역할을 하는 클래스
//요청시 파라미터 얻어오는 방법3
//->@ModelAttribute 어노테이션 사용
//@ModelAttribute를 매개변수에 작성하는 경우 사용법
//-> @ModelAttrinbute VO타입 변수명 (index.jsp 로그인영역 input name값과 VO변수명 일치해야 한다)
@PostMapping("/login")
public String login(@ModelAttribute Member inputMember, Model model,
RedirectAttributes ra, HttpServletResponse resp, HttpServletRequest req,
@RequestParam(value="saveId", required=false) String saveId) {
//required=false -> true면 아이디 저장 무조건 체크되있어야하고, false면 체크 안되있어도 무관
logger.info("로그인 기능 수행됨");
//아이디, 비밀번호가 일치하는 회원정보를 조회하는 service 호출 후 결과 반환 받기
Member loginMember = service.login(inputMember);
/*Model :데이터를 맵 형식(k:v) 형태로 담아 전달하는 용도의 객체
* ->request, session을 대체하는 객체
* -기본 scope: request
* -session Scope로 변환하고 싶은 경우
* 클래스 레벨로 @SessionAttribute를 작성하면 된다(맨위 추가)
*/
model.addAttribute("loginMember", loginMember);
return "redirect:/";
}
//member-mapper.xml
*logout
//MemberController
//로그아웃
@GetMapping("/logout")
public String logout(SessionStatus status) {
//로그인 할대 쓰인 @SessionAttributes를 이용해 session scope에 배치된 데이터는
//@SessionStatus라는 별도 객체를 이용해야만 없앨 수 있다
logger.info("로그아웃 기능 수행됨");
status.setComplete(); //세션이 할일 완료 -> 세션 없앤다
return "redirect:/";
}
*로그인 실패시 메세지
-index.jsp
index.jsp 내용 잘라서 main.jsp 만들고 붙여넣기
//footer.jsp
//MainController
package edu.kh.comm.main.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//로그인 정보 불일치시 메세지 띄우기
@Controller
public class MainController {
/*index.jsp(http://localhost:8080/comm/main) 에서 요청보냄
* ->@RequestMapping에 /main 만 작성
*/
@RequestMapping("/main")
public String mainForward() {
return "common/main";
//-> WEB-INF / views / common / main.jsp
//controller -> return 구문 받아 dispatcher
//-> ViewReserve -> servlet-context.xml (prefix, suffix)로 인해
//common/main만 적어줘도 된다
}
}
//MemberController
//요청시 파라미터 얻어오는 방법3
//->@ModelAttribute 어노테이션 사용
//@ModelAttribute를 매개변수에 작성하는 경우 사용법
//-> @ModelAttrinbute VO타입 변수명 (index.jsp 로그인영역 input name값과 VO변수명 일치해야 한다)
@PostMapping("/login")
public String login(@ModelAttribute Member inputMember, Model model,
RedirectAttributes ra) {
logger.info("로그인 기능 수행됨");
//아이디, 비밀번호가 일치하는 회원정보를 조회하는 service 호출 후 결과 반환 받기
Member loginMember = service.login(inputMember);
/*Model :데이터를 맵 형식(k:v) 형태로 담아 전달하는 용도의 객체
* ->request, session을 대체하는 객체
* -기본 scope: request
* -session Scope로 변환하고 싶은 경우
* 클래스 레벨로 @SessionAttribute를 작성하면 된다(맨위 추가)
*/
if(loginMember != null) { //로그인 성공
model.addAttribute("loginMember", loginMember);
}else {
ra.addFlashAttribute("message", "아이디 또는 비밀번호가 일치하지 않습니다");
}
return "redirect:/";
}
'Spring' 카테고리의 다른 글
cmd창,powershell창 lombok설치시 에러 error: could not open 해결방법 및 lombok설치 (0) | 2023.04.26 |
---|---|
spring 아이디 저장(쿠키생성) (0) | 2023.04.25 |
spring 1행조회 테이블의 회원의 전화번호만 조회하기 (0) | 2023.04.25 |
DB연결 및 MyBatis이용한 SELECT문 (0) | 2023.04.25 |
Spring MyBatis 설정하기(mybatis-config) (0) | 2023.04.25 |