한페이지에 4개만 나오게한다.
include directive -> JSP파일이 만들어질때 실행될것인가
standard tag -> 바로 실행이 될것인가 차이
jsp언어 : jsp:include를 많이 사용한다!! forward는 많이 사용 안함!!
header.jsp footer.jsp 파일가 만들어져 있어야한다.
jsp 파일을 만들고 include 시켜주면
el표기법 = %{ }
el을 이용하면 값이 null 이면 빈 문자열로 바꾸어서 출력해준다!!!
--> nullpointexception 을 안해줘도 된다.
요청전달 데이터 : id
이렇게 출력된다.
jstl-1.2jar파일이 import가 안되서 노란줄이 떠있음
JSP내장객체 (=내장변수)
request : httpServletRequest
response : HttpSerlvetRespconse
pageContext : PageContext
session : HttpSession
application : ServletContext
config : ServletConfig
out : jspWriter (PrintWriter + BufferdWriter)
page : Object
application 내장변수를 사용하여 한줄로 만든다!
사용자 전용 tag (greeting용 객체는 사용 x)
Session
상태 정보값을 유지하는 기술 = session tracking
1. 쿠키 : 클라이언트 정보유지
2. 세션 : 서버쪽 정보유지
쿠키 -> 보안상 취약, 보안을 안해도 되는 자료들 유지시키기 위한
쿠키값은 문자열로만 저장된다.
ex) 몇일동안 안보게하기 팝업창
$(()=>{
const formObj = $('form.login')
const cbobj = formObj.find("input[type=checkbox]") //아이디 저장체
const savedId = localStorage.getItem("savedId")
if(savedId != null){
formObj.find("input[name=id]").val(savedId)
}
cbobj.click((e)=>{
if($(e.target).prop('checked')) {//체크가된경우
localStorage.setItem("savedId", formObj.find('input[name=id]').val())
} else {//체크가 된경우
localStorage.removeItem("savedId")
}
})
// const btObj = $('form.login>button')
formObj.submit((e)=>{
const data = $(e.target).serialize()
$.ajax({
url: 'http://localhost:8888/back/login',
method: 'post',
data : formObj.serialize(),
success: (responseObj)=>{
if(responseObj.status == 0){//로그인 실패인 경우
alert(responseObj.msg)
$('form.login>input[name=id]').focus()
}else{ //로그인 성공인 경우
alert(responseObj.msg)
}
},
error: (xhr)=>{
alert("에러:" + xhr.status)
}
})
return false
})
})
아이디가 저장이됨
요청한 클라이언 http 세션객체가 있는가 찾아보는 것! 없으면 새로만든다.
httpsession -> getsession()
어트리뷰트에 loginedid값-id값이 들어가진다.
if 로그인이 되는경우 else 안되는 경우
http session은 30분이내 사용하지않으면 메모리에서 자동으로 소멸된다!!
클라이언트 웹브라우저가 닫히면 클라이언트랑은 무관하고 서버쪽이랑 관련이 있다.
로그인 정보값 기억
장바구니 정보값 기억을 세션에 저장
결제하는것도 활용
쿠키는 문자열만 저장 ,길이도 제한되어있음,
많은 데이터를 저장하지 못하기때문에 세션에 저장해야한다.