getSession(false)
- > session Object가 존재하면, 현재 HttpSession을 반환한다.
존재하지 않으면, null을 반환한다
getSession(true)
-> session Object가 존재하면, 현재 HttpSession을 반환한다.
존재하지 않으면, 새로 생성한다
html
<body>
<!-- Session : Server에 저장(사용자 Hardware, Tomcat) -->
<a href="hello">HelloServlet</a>
<br>
<a href="loginId">loginId Servlet</a>
</body>
HelloServlet.java
세션 Obj객체생성후 생성 확인.
리셋기한 설정, 방문횟수 설정 및 출력
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html; charset=utf-8");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>제목</title>");
pw.println("</head>");
pw.println("<body>");
/*
getSession(false)
session Object가 존재하면, 현재 HttpSession을 반환한다.
존재하지 않으면, null을 반환한다
getSession(true)
session Object가 존재하면, 현재 HttpSession을 반환한다.
존재하지 않으면, 새로 생성한다
*/
//(session 객체생성) seesion을 얻어올때는 항상 request를 통한다
HttpSession session = req.getSession(false);
if (session == null) {
/* session은 Object도 저장 가능 (Cookie는 String만 가능) */
session = req.getSession(true);
//리셋 기한정하기
//일반적으로 2시간정도로 지정 (365*24*60*60은 1년)
session.setMaxInactiveInterval(30);//30초로 지정
session.setAttribute("visited", "1");
pw.println("<p>첫번째 방문입니다</p>");
}else {
//session.getAttribute("visited")는 return값이 obj라서 cast변환 필수
String visited = (String) session.getAttribute("visited");
int count = Integer.parseInt(visited);
count++;
pw.println("<p>방문회수는"+count+"번째 방문입니다</p>");
session.setAttribute("visited", count+"");
}
pw.println("</body>");
pw.println("</html>");
pw.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
LoginIdServlet.java
session을 등록하고 id와 name을 추가함
아래 링크 2개 생성
@WebServlet("/loginId")
public class LoginIdServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html; charset=utf-8");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>제목</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<h3>login id session</h3>");
HttpSession session = null;
if (session == null) {
pw.println("<p>session을 등록합니다</p>");
session = req.getSession(true);
session.setAttribute("id", "만두");
session.setAttribute("name", "홍길동");
}
String id = (String) session.getAttribute("id");
String name = (String) session.getAttribute("name");
session.setAttribute("visited", "1");
pw.println("<p>id : " +id +"</p>");
pw.println("<p>id : " +name +"</p>");
//session의 name들을 다 꺼내라
Enumeration<String> enum_session = session.getAttributeNames();
while(enum_session.hasMoreElements()) {
String key = enum_session.nextElement();
String value = (String) session.getAttribute(key);
pw.println("<p>"+key+":"+value+"</p>");
}
//cookie 삭제 -> session name지우기
pw.println("<a href=delObj>name 삭제</a>");
pw.println("<a href=sessionDel>session 삭제</a>");
pw.println("</body>");
pw.println("</html>");
pw.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
DeleteObject.java
session.removeAttribute("name");로 name만 지우고
session.getAttributeNames();로 세션 모두 꺼내어 나머지 출력
@WebServlet("/delObj")
public class DeleteObject extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
//session은 살아있고 name만 지움
session.removeAttribute("name");
//session의 name들을 다 꺼내라
Enumeration<String> enum_session = session.getAttributeNames();
while(enum_session.hasMoreElements()) {
String key = enum_session.nextElement();
String value = (String) session.getAttribute(key);
System.out.println(key+" : "+value);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
SessionDelete.java
session.invalidate();로 세션 삭제(해방)
@WebServlet("/sessionDel")
public class SessionDelete extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
//delete(삭제), release(해방) : session도 release개념으로 빌려왔던것 돌려주는 개념
session.invalidate();//세션 해방
if (req.getSession(false)==null) {//session삭제 완료시
System.out.println("session이 비어있습니다");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
'Servlet' 카테고리의 다른 글
송장정보// 출력 (0) | 2020.07.21 |
---|---|
id, 비번, 방문회수 보기// Cookie//쿠키 //WebServlet//저장공간 (0) | 2020.07.21 |
회원정보// .jsp파일로 넘기기 (0) | 2020.07.21 |
select로 웹사이트 주소 송신하기 (0) | 2020.07.20 |
에러상태 코드 select로 값을 넘기기 (웹으로 확인하기) (0) | 2020.07.20 |