@PostMapping("/loginok.do")
public String loginok(String mid,HttpServletRequest req) {
HttpSession session = req.getSession();
session.setAttribute("mid", mid);
//일반 쇼핑몰 기준 페이지 이동 없을 때 유지시간 30분 지정
//-> 해당 부분이 없으면 페이지 몇번 이동하다보면 계속 로그아웃 발생해서 에러 발생할 수 있음
session.setMaxInactiveInterval(1800); //1800초 : 30분
System.out.println(mid);
return null;
}
@PostMapping("/loginok.do")
public String loginok(
@RequestParam(value="null", required = false) String mid,
HttpSession session
) {
if(mid != null) {
session.setAttribute("mid", mid);
session.setMaxInactiveInterval(1800);
}
System.out.println(mid);
return null;
}
=> 요건 session 등록하는 좀더 편한 다른 방식! (원래 정통은 위에 방식)
HttpSesson : Interfaced를 활용하여 세션을 빠르게 구현하는 방식 스타일
로그인 성공 -> 세션이 등록되어있는 경우
@GetMapping("/restapi.do")
public String restapi(
@SessionAttribute(name="mid", required = false) String mid
) throws Exception {
System.out.println(mid); //등록되어있는 세션값 찍힘
return null;
}
가져올 때는 굳이 http ~ interface ~ getattribute~ 어쩌구~~ 또 만들어서 안가져와도 되고 어노테이션 사용하면 됨!
@SessionAttribute 어노테이션을 사용 :
session이 이미 등록외어있는 상황일 경우 해당 정보를 가져올 수 있음
=> null 뜨면 로그인 하라고 alert띄우면 됨 ! (required = false 사용 : 넘어와도 되고 안넘어와도 됨)
===> RESTAPI 제작시 사용하면 좋다 !
로그인 하면 -> 해당 사용자에 맞게 데이터를 ajax로 전송!
세션 파기 : hs.invalidate();
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
HttpSession hs = request.getSession();
String mid = (String)hs.getAttribute("mid");
out.print(mid);
hs.invalidate(); //session 전체 파기
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
'CLASS > SPRING,JSTL' 카테고리의 다른 글
#10-2 / 사용자 정보 찾기 (0) | 2024.07.29 |
---|---|
#10-1 / 패스워드를 md5형태로 변환 (0) | 2024.07.29 |
☀ mybatis - mapper ☀ (0) | 2024.07.25 |
#9-2 / notice list + category 검색기능( 동적 query문 ), delete (1) | 2024.07.24 |
별도의 config, mapper를 사용하는 방식 (1) | 2024.07.24 |