728x90
범위, 생명주기
page < request < sessing < application
세션 범위 : 브라우저 당 생성되는 객체
ex) 하나의 차에서 로그인 하면 다른 탭을 열어도 여전히 로그인 상태 유지
세션 기술 - 세션 관련 정보를 웹 서버에 저장
쿠키 기술 - 세션 관련 정보를 클라이언트에 저장
데이터 공유 쿠키 예)
// ... /scope?m=c&id=kim& ...
@WebServlet("/scope")
public class Controller extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String mode = req.getParameter("m");
if(mode.equals("c"))
{
String id = req.getParameter("id");
req.setAttribute("a_id", id); //request 영역
req.getSession().setAttribute("a_id", id); //세션 영역
req.getServletContext().setAttribute("a_id", id); //어플리케이션 영역
}
req.setAttribute("mode", mode); //(키, 값)
PrintNumber printer = new PrintNumber(); //PrintNumber 로 넘긴다
printer.print(req, resp);
}
}
public class PrintNumber{
public void print( HttpServletRequest req , HttpServletResponse resp) throws ServletException, IOException{
PrintWriter out = resp.getWriter();
String idRequest = (String) req.getAttribute("a_id"); //object 타입을 String 으로
String idSession = (String) req.getAttribute("a_id");
String idApplication = (String) req.getServletContext().getAttribute("a_id");
out.printf("request scope: %s \n" , idRequest);
out.printf("session scope: %s \n" , idSession);
out.printf("application scope: %s \n" , idApplication);
String mode = (String) req.getAttribute("mode");
if(mode.equals("c")) {
setCookie(req,resp);
printCookie(req,resp);
}
}
public void setCookie( HttpServletRequest req , HttpServletResponse resp) { //쿠키를 설정한다.
Cookie idCookie = new Cookie("id", "kim"); //키와 값
idCookie.setMaxAge(60*60*24); //하루 , 쿠키 유지 시간
Cookie ageCookie = new Cookie("pwd", "25");
resp.addCookie(idCookie);
resp.addCookie(ageCookie);
}
public void printCookie( HttpServletRequest req , HttpServletResponse resp) { //쿠키 출력
Cookie[] cookies = req.getCookies();
if(cookies != null) {
for(Cookie coo : cookies) {
System.out.printf("Name: %s, Value:%s \n", coo.getName(),coo.getValue());
}
}
}
}
세션 관련 함수
setAttribute / getAttribute
getId
invalidate : 현재 생성된 세션을 무효화
removeAttribute
getCreationTime : 70년 1월 1일 0시 0초를 기준으로 현재 세션이 생성된 시간까지 경과 시간
setMaxInactiveInterval(int interval) : 세션 객체의 유효 시간을 초단위로 설정
쿠키 관련 함수
setMaxAge(int expiry)
getName()
getValue()
setName(String name)
setValue(String value)
setPath(String url)
getPath()
extern int num; // 같은 프로젝트에 속한 모든 파일에서 접근 가능
'Back-end > 웹(web)' 카테고리의 다른 글
웹프로그래밍 JSP 기초 문법 정리 (0) | 2020.07.16 |
---|---|
Could not publish server configuration for Tomcat v9.0 Server at localhost. Multiple Contexts have a path of "/". (0) | 2020.05.31 |
[웹] 서블릿 초기화 파라미터 (0) | 2020.05.22 |
[웹] JSP 파일에 서블릿 적용하기 (0) | 2020.05.20 |
[웹] 서블릿 시작하기 / 세팅 / NULL처리 (0) | 2020.05.19 |
댓글