▩ cookie 객체의 사용 - Tomcat 서버가 Client에 저장하는 텍스트 파일로 된 정보 - 쿠키는 국제 표준에 따라 작성되어야 합니다. - 보안성이 없음으로 계정과 패스워드를 동시에 쿠키에 저장하면, 쿠키의 내용을 전부 편집기로 열어 볼 수 있음으로 보안에 문제가 될 수 있습니다. - 4Kb까지 저장할 수 있다. - 쿠키의 저장 폴더는 2000서버의 경우 "C:\Documents and Settings\각 계정(Administrator)\Cookies"가 지정됨 - 사용예 : 하루동안 이벤트창 오픈하기, ID자동으로 저장기능 등 - setMaxAge() : 쿠키의 생존 기간, 초 단위, 12시간의 경우 12*60*60, 생존 기간이 지나면 쿠키가 Servlet Container에 의해 인식이 되지 않습니다. - Cookie cname = new Cookie("cname", "Java"); --> Cookie cname = new Cookie(쿠키 변수명, 쿠키 값) ------------------------------------------------------------------------------ >>>>> jcookieWrite.jsp, http://127.0.0.1:8081/jsp2030/jcookieWrite.jsp ------------------------------------------------------------------------------ <%@ page language="java" contentType="text/html; charset=EUC-KR" %> <% //쿠키 변수 선언 Cookie cname= null; Cookie ckuk = null; Cookie ceng = null; Cookie cmat = null; cname = new Cookie("cname", "Java"); //cname이란 쿠키변수에 "Java"를 저장합니다. cname.setMaxAge(20); //20초 response.addCookie(cname); //쿠키를 Client에 저장합니다. ckuk = new Cookie("ckuk", "100"); ckuk.setMaxAge(20); response.addCookie(ckuk); ceng = new Cookie("ceng", "90"); ceng.setMaxAge(20); response.addCookie(ceng); cmat = new Cookie("cmat", "100"); cmat.setMaxAge(20); response.addCookie(cmat); %> <html> <head> <title>쿠키 저장하기(Cookie객체의 사용)</title> </head> <body> <p>성적을 쿠키로 저장 했습니다.</p> <p><a href="jcookieRead.jsp">쿠키로 저장된 성적 읽어오기</p> </body> </html> ------------------------------------------------------------------------------ >>>>>>>>>> jcookieRead.jsp ------------------------------------------------------------------------------ <%@ page language="java" contentType="text/html; charset=EUC-KR" %>
<html> <head> <title>쿠키 읽어 오기(Cookie객체의 사용)</title> </head> <body> <% //client안에 있는 모든 쿠키를 전부 읽어 옵니다. Cookie[] cookies = request.getCookies(); Cookie cItem=null; String name=null; int kuk=0; int eng=0; int mat=0; for (int i = 0; i < cookies.length; i++) { //쿠키 변수를 각각 추출합니다. cItem = cookies[i];
if (cItem.getName().equals("cname")) name = (String)(cItem.getValue()); if (cItem.getName().equals("ckuk")) kuk = Integer.parseInt(cItem.getValue()); if (cItem.getName().equals("ceng")) eng = Integer.parseInt(cItem.getValue()); if (cItem.getName().equals("cmat")) mat = Integer.parseInt(cItem.getValue()); } out.println ("성명 : " + name + "<br><br>"); out.println ("국어 : " + kuk + "<br><br>"); out.println ("영어 : " + eng + "<br><br>"); out.println ("수학 : " + mat + "<br><br>"); out.println ("총점 : " + (kuk+eng+mat) + "<br><br>"); out.println ("평균 : " + (kuk+eng+mat)/3 + "<br><br>"); %> </body> </html> http://127.0.0.1:8081/jsp2030/jcookieWrite.jsp ▩ session 객체의 사용 - javax.servlet.http.HttpSession Interface - 서버의 메모리상에 저장되는 정보 - 보안성이 높으나 서버의 메모리를 사용함으로 비용이 많이 발생되어 사용을 최대한 줄여야 함 - 아이디, 패스워드, 쇼핑카트등 로그인 정보를 저장함 - 사용자가 웹사이트에 접속시 접속자별로 웹서버는 세션ID를 생성해 줌 - 서버상에서 세션의 유지시간은 초단위로 session.setMaxInactiveInterval(600); 로 지정합니다. 만약 사용자가 JSP페이지를 열어놓고 링크를 마우스 클릭등의 작업을 하지 않아도 session은 삭제됩니다. - 서버상에 있는 세션 변수의 값을 삭제하려면 session.invalidate();을 이용합니다. - Session ID는 서블릿컨테이너가 부여하는 것으로 접속자의 상태를 파악해서 일정 시간이 흐르면 session을 삭제할 것인지를 결정하게 됩니다. 개발자는 이 Session ID값을 읽어 올수만 있습니다. - Session ID외에 개발자는 필요한 만큼 Session 변수를 만들어 사용할 수 있습니다. - 페이지 흐름도 YES ⓐ main.jsp -----> 로그인여부 판단 -----┬----> main.jsp -----> logout.jsp -----> ⓐ │ │NO └----> login.jsp -----> session.jsp -----> ⓐ ------------------------------------------------------------------------------ >>>>>>>>>> login.jsp ------------------------------------------------------------------------------ <%@ page language="java" contentType="text/html; charset=EUC-KR" %> <html> <head> <title>session객체 사용하기</title> </head> <body> <center> <form method="post" action="session.jsp"> <table border=1 cellspacing=1 cellpadding=0> <tr> <th>ID</th> <td><input type="text" name="id" value='java'></td> </tr><tr> <th>Password</th> <td><input type="password" name="passwd" value='1234'></td> </tr><tr> <td colspan="2" align="center"><input type="submit" value="Login"></td> </tr> </table> </form> * 인증을 위한 ID는 java, Password는 1234입니다. </center> </body> </html> ------------------------------------------------------------------------------ >>>>>>>>>> session.jsp ------------------------------------------------------------------------------ <%@ page language="java" contentType="text/html; charset=EUC-KR" %>
<html> <head> <title>session처리 페이지</title> </head> <body> <% String inid = request.getParameter("id"); String inpasswd = request.getParameter("passwd"); //System.out.println("id : " + inid+ " passwd:" + inpasswd); String id = "java"; String passwd = "1234"; //== : 참조값 비교 if (!id.equals(inid)){ %> <script Language="JavaScript"> alert("등록된 아이디가 아닙니다."); history.back(); </Script> <%} if (!passwd.equals(inpasswd)){ %> <script Language="JavaScript"> alert("비밀번호가 잘못되었습니다."); history.back(); </Script> <%}
if (id.equals(inid) && passwd.equals(inpasswd)) { //session 변수 생성 session.setAttribute("user", id); response.sendRedirect("main.jsp"); } %> </body> </html> ------------------------------------------------------------------------------ >>>>>>>>>> main.jsp ------------------------------------------------------------------------------ <%@ page language="java" contentType="text/html; charset=EUC-KR" import="java.util.*"%> <% session.setMaxInactiveInterval(600); %> <html> <head> <title>회원 전용 메인 페이지</title> </head> <body> <font size=5> <% try { if (session.getAttribute("user")!=null){ %> <p>로그인 된 아이디 : <%=session.getAttribute("user")%><p> <p>현재 session ID : <%= session.getId() %></p>
<% Date dd = new Date(session.getCreationTime());
Calendar rightNow = Calendar.getInstance(); rightNow.setTime(dd); int year = rightNow.get(Calendar.YEAR); int month = rightNow.get(Calendar.MONTH)+1; int day = rightNow.get(Calendar.DATE);
int hour = rightNow.get(Calendar.HOUR); int min = rightNow.get(Calendar.MINUTE); int sec = rightNow.get(Calendar.SECOND); String sd = year + "년 " + month + "월 " + day + "일 "; sd += hour + "시 " + min + "분 " + sec + "초 ";
%> <p>session이 만들어진 시각 : <%=sd%></p> <p>설정된 session Timeout 시간 : <%= session.getMaxInactiveInterval() %></p> <p><a href="logout.jsp">로그 아웃하기</a></p> <%}else{%> <p>회원만 이 페이지에 접속할 수 있습니다.</p> <Script Language='JavaScript'> alert("로그인을 해주세요......"); location.href='login.jsp'; </Script> <%} } catch(NullPointerException e) { System.out.println("에러가 발생했습니다. 원인: "+e.toString()); } %> </font> </body> </html> ------------------------------------------------------------------------------ >>>>> logout.jsp ------------------------------------------------------------------------------ <%@ page language="java" contentType="text/html; charset=EUC-KR" %>
<html> <head> <title>로그 아웃</title> </head> <body> <% session.invalidate(); //response.sendRedirect("main.jsp"); %> <p>로그아웃 되었습니다. 이용하여 주셔서 감사합니다.</p> <a href='main.jsp'>메인화면으로 가기</a> </body> </html> http://127.0.0.1:8081/jsp2030/main.jsp
▩ application 객체 - javax.servlet.ServletContext Interface 1. 서블릿 또는 어플리케이션의 외부 환경 정보(Context) 제공 ------------------------------------------------------------------------------ >>>>> application.jsp ------------------------------------------------------------------------------ <%@ page contentType="text/html;charset=EUC-KR"%> <% String serverInfo = application.getServerInfo(); String mimeType = application.getMimeType("test.html"); String realPath = application.getRealPath("/"); application.log("application 내부 객체 로그 테스트"); %> <h1>application.jsp</h1> 서블릿 컨테이너의 이름과 버전 : <%=serverInfo%><p> test.html의 MIME Type : <%=mimeType%><p> 로컬 파일 시스템 경로 : <%=realPath%> ▩ exception 객체 - java.lang.Throwable 1. 에러 처리 페이지에 에러를 전달하는 역활을 함 ------------------------------------------------------------------------------ >>>>> errorStart.jsp ------------------------------------------------------------------------------ <%@ page contentType="text/html;charset=EUC-KR" errorPage="error.jsp"%> <% int one = 1; int zero = 0; %> <h1>errorStart.jsp</h1> one / zero = <%=one/zero%><p> ------------------------------------------------------------------------------ >>>>> error.jsp ------------------------------------------------------------------------------ <%@ page contentType="text/html;charset=EUC-KR" isErrorPage="true"%> <% String message = exception.getMessage(); String objectMessage = exception.toString(); %> <h1>error.jsp</h1> 에러 메세지 : <b><%=message%></b><p> 에러 실체의 클래스명과 에러 메세지 : <b><%=objectMessage%></b><p> http://127.0.0.1:8081/jsp2030/errorStart.jsp |