- 1213 WebServer 6일차2023년 12월 13일 09시 30분 05초에 업로드 된 글입니다.작성자: 삶은고구마
로그인 하는 과정
사용자 입장에서는
-메인
-로그인화면
-로그인성공화면
이렇게만 보이지만 실제로는 이런 방식으로 진행된다..
session & cookie 이해하기
http는 상태를 관리하지 않음.(보관x)
오는 요청에 응답할 뿐...
그리고 응답이 완료되면 연결이 끊김.
하지만 상태를 유지해야할 경우가 있다. [사용자 로그인 유지]
이것을 가능하게 해주는게 쿠키와 세션이다.[로그인과 무관하고 상태만 유지]
쿠키:클라이언트쪽에 저장
세션:서버쪽에 저장
[기본 30분 제한 시간이있고, 이 후 폐기되어 유효하지않은 세션이 됨, 이런 경우 새로운 세션을 생성하여 클라이언트에 전송]
서버에는 하나의 세션만 있는게 아니고 수많은 세션들이 있음.
이중에서 내가 원하는 세션을 찾아 매칭할수있어야하는데, 클라이언트와 서버간 요청/응답시 헤더에 원하는 sid로 매칭.
db의 정보는 갱신이 되었는데 페이지에 즉각 반영이 되지 않은 이유
현재 세션이 이전 loginMember 세션이기 때문임.
회원탈퇴 a 태그 : get 방식
하지만 회원탈퇴는 delete 이므로 post방식을 사용해야 한다.
우회하는 방법
Filter
filter servlet마다 공통된 작업이 있다면 filter를 사용해서 중복을 제거할 수 있다.
servlet보다 앞 / jsp보다 늦게 즉, client<->server단 에서 말 그대로 "필터" 역할을 하는 것.
-
http://localhost:8080/mvc/member/memberDetail
=>로그인 후 마이페이지 순으로 접근해야 하는데
주소창에 해당 주소만 쳐도 비로그인 상태에서도 접근이 가능해짐
이런경우를 막아보자.
//인증여부검사 HttpSession session = req.getSession(); Member loginMember = (Member) req.getSession().getAttribute("LoginMember"); if(loginMember==null) { session.setAttribute("msg","로그인 후 사용 가능합니다."); //그리고 인덱스페이지로 강제이동 resp.sendRedirect(req.getContextPath()+"/"); return;//조기리턴 이후 코드 실행되지않는다 } //tip:redirect나 forward 이후에는 실행코드는 없어야 한다.
각 서블릿 상단에 중복되는 코드라 filter를 적용하면 좋을 것 같다.
filter 역할을 할 class를 하나 생성한 뒤,
WebFilter annotation에 해당 필터를 적용할 servlet 페이지를 나열하면 된다.
@WebFilter(urlPatterns = { "/member/memberDetail", "/member/memberUpdate", "/member/memberDelete" }) public class AuthenticationFilter extends HttpFilter { @Override protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { //인증여부검사 HttpSession session = request.getSession(); Member loginMember = (Member) request.getSession().getAttribute("LoginMember"); if(loginMember==null) { session.setAttribute("msg","로그인 후 사용 가능합니다."); //그리고 인덱스페이지로 강제이동 response.sendRedirect(request.getContextPath()+"/"); return;//조기리턴 이후 코드 실행되지않는다 } //tip:redirect나 forward 이후에는 실행코드는 없어야 한다. super.doFilter(request, response, chain); } }
get post 조회 (멱등) 즉, 조회 전 후 상태가 달라지지 않음. 등록 수정 삭제 select insert update delete forward를 통한 view(jsp)사용 redirect를 통한 url 변경
forward인 경우 계속 그 페이지를 실행하기 때문에
등록,수정,삭제가 새로고침 등을 할 때마다 중복 실행됨.a태그
location href 속성
open()함수
form - method getform - method post 멱등: 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
다음글이 없습니다.이전글이 없습니다.댓글