1. login.html Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>login.jsp Test</title>

</head>

<body>


<h2> 로그인 테스트 </h2>


<%

request.setCharacterEncoding("UTF-8");

String userid = request.getParameter("userid");

String passwd = request.getParameter("passwd");

String tel = request.getParameter("tel");

%>


<%

if(userid.equals("")){

%>

<jsp:include page="loginhandle.jsp">

<jsp:param value="guest" name="userid"/>

<jsp:param value="anonymous" name="passwd"/>

<jsp:param value="0000" name="tel"/>

</jsp:include>

<%

} else{


%>

<jsp:include page="loginhandle.jsp"/>

<%


}

%>


</body>

</html>

login.jsp로 저장



<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>loginhandle.jsp Test</title>

</head>

<body>


<%

request.setCharacterEncoding("UTF-8");

String userid = request.getParameter("userid");

String passwd = request.getParameter("passwd");

String tel = request.getParameter("tel");

%>


<%

if(userid.equals("guest")){

out.println("회원이 아니시군요. 반갑습니다.<br>");

out.println("회원가입을 하신 후 이용해주세요.<br>");

}

else{

out.println("회원님, 반갑습니다. <hr size='5' color='red'>");

}


%>


아이디 : <%=userid %><br>

암호 : <%=passwd %><br>

전화번호 : <%=tel %>


</body>

</html>

loginhandle.jsp로 저장



<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>login.html Test</title>

</head>

<body>

<h2> 로그인 </h2>


<form method="post" action="login.jsp">


아이디 :<input type="text" name="userid"><br>

암호 :<input type="text" name="passwd"><br>

전화번호 :<input type="text" name="tel"><br>


<input type="submit" value="로그인">

<input type="reset" value="다시 입력">


</form>


</body>

</html>




2. forwardlogin.html Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>forwardlogin.jsp Test</title>

</head>

<body>


<h2> forward 태그를 이용한 로그인 테스트 </h2>


<%

request.setCharacterEncoding("UTF-8");

String userid = request.getParameter("userid");

String passwd = request.getParameter("passwd");

String tel = request.getParameter("tel");

%>


<%

if(userid == null && passwd == null){

%>


<jsp:forward page="forwardloginhandle.jsp"/>

<%

} else {

%>

<jsp:forward page="forwardloginhandle.jsp">

<jsp:param value="2017-0215" name="ssdate"/>


</jsp:forward>

<%

}

%>

</body>

</html>

forwardlogin.jsp로 저장



<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>forwardloginhandle.jsp Test</title>

</head>

<body>

<%

request.setCharacterEncoding("utf-8");


String userid = request.getParameter("userid");

String passwd = request.getParameter("passwd");

String studentNum = request.getParameter("ssdate");

String tel = request.getParameter("tel");

%>


<%

if(userid == null ? true : userid.equals("")){

%>


<h3> 로그인 2 </h3>


<form action="forwardlogin.jsp" method="post">


아이디 : <input type="text" name="userid"><br>

암호 : <input type="text" name="passwd"><br>

전화번호 : <input type="text" name="tel"><p>


<input type="submit" value="로그인">

<input type="reset" value="다시입력">


</form>

<%

}else{

%>

아이디 : <%=userid %> ,

암호 : <%=passwd %> ,

학번 : <%=studentNum %> ,

전화번호 : <%=tel %>


<hr size="5" color="red">

회원님 반갑습니다.


<%

}

%>


</body>

</html>

forwardloginhandle.jsp로 저장



<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>forwardlogin.html Test</title>

</head>

<body>


<h2> 로그인 </h2>


<form action="forwardlogin.jsp" method="post">


아이디 : <input type="text" name="userid"><br>

암호 : <input type="text" name="passwd"><br>

전화번호 : <input type="text" name="tel"><p>


<input type="submit" value="로그인">

<input type="reset" value="다시입력">


</form>


</body>

</html>




Cookie & Session


: 웹의 비연결 특성


. 웹에서 클라이언트가 요청을 하면 서버는 응답을 한다.

  즉 한 페이지의 요청과 그 요청에 대한 응답이 있을때만 클라이언트와

  서버가 Connection(연결) 될뿐 그 이후에는 자동으로 종료된다.

  

  동일한 클라이언트가 다시 서버에 연결을 하더라도 서버는

  그 이전에 연결에 대한 클라이언트의 어떠한 상태(State) 정보도 가지고

  있지 않은 상태에서 다시 연결과 종료가 이루어 진다.

  

  즉 웹 서비스에서 클라이언트와 서버는 웹 페이지들 사이에서 서로 연관없이

  각각 독립적으로 연결이 이루어지므로, 상태의 지속성을 유지 할 수 없다.

  

  이것은 웹을 지원하는 HTTP 통신 규약이 비연결(Connectionless) 또는

  무상태(Stateless) 특성을 가지기 때문이다.

  

  . HTTP 의 웹 브라우저에서 서버에 정보를 요청하여 그 결과를 얻어오는 것으로

  모든 상태는 단절된다. 이러한 비 연결성은 서로 연관없는 페이지들을

  접속할때는 아무 문제가 되지 않으며 오히려 서버에 접속한 클라이언트의 수가

  많더라도 서버의 부담이 적고 서버의 자원을 효율적으로 사용할 수 있는

  등의 장점이 적용된다.

  

  그러나 웹 서비스를 이용해 다양하고 복잡한 정보 시스템을 구축하면서

  이러한 웹 의 비연결 특성은 많은 문제점을 야기 한다.

  

  예를 들어 쇼핑몰의 장바구니 사용이다.

  인터넷 쇼핑몰에서 상품을 구매하는 경우 이미 선택한 상품도 보고 

  다른 페이지로 이동하여 또다른 상품도 구입하는데 장바구니에서

  구매 목록이 사라질 수 있다.

  

  이런 경우 장바구니 페이지는 다른 페이지로 이동하더라도 현재

  선택된 상품 목록과 관련 정보를 지속적으로 유지 관리 해야 한다.

  HTTL 의 비 연결성은 이러한 상태 정보 관리를 어렵게 한다.

  

  

  . 비연결성의 보완

  

  : 이러한 비연결을 보완하고 페이지 간의 지속적인 서비스를

  제공하기 위한 기법이 Cookie 와 Session 이다.

  

  cookie 는 넷스케이프 사에서 제안한 방법으로 CGI 프로그래밍 방식때 부터

  사용하던 클라이언트 정보 관리 기법으로 클라이언트의 사용자 컴퓨터에

  사용자 정보를 저장 관리한다. 그러므로 쿠키 방식은 서버에 부하를 주지 않으면서

  사용자 정보를 관리할 수 있는 방법이다.

  

  Session 은 JSP 에서 제공하는 클라이언트의 브라우저 정보 관리 기법으로

  브라우저 마다 각기 다른 사용자 정보를 서버에 저장하는 방법이다.

  

  즉 session은 클라이언트 사용자 별로 여러 페이지 이동을 인식하며 필요한

  정보를 서버에 저장하고 조회할 수 있는 방법과 세션을 관리할 수 있는 방법을

  제공한다.

  

  . cookie 와 session 비교

  

  : JSP 에서는 cookie 를 지원하기 위해 cookie 클래스를 제공한다.

    또한 JSP는 session 의 역활을 담당하는 session 내장 객체를 제공한다.

    쿠키는 클라이언트 별로 사용자 정보를 클라이언트 사용자 컴퓨터에

    저장하나 세션은 서버에 저장한다.

    그러므로 웹 서버가 종료 되더라도 유효기간이 지나지 않은 쿠키는

    조회가 가능하지만 세션 정보는 웹 서버가 종료되거나 일정한 시간동안

    서버에 반응을 하지 않으면 세션 정보가 삭제 된다.

    

    

    

  . 쿠키 정보는 클라이언트 컴퓨터에 화일 형태로 저장되어 다른 사람이나

    시스템이 볼 수 있으므로 비밀 유지가 어려운 단점이 있습니다.

    반면에 세션은 클라이언트 별로 모든 객체 형태의 자료를 서버에

    저장하므로 클라이언트 JSP 프로그램을 통해서만 참조가 가능합니다.

    그러므로 세션은 보안 유지에 강력한 장점이 있으며 또한

    서버 용량만 가능하다면 저장할 수 있는 세션정보 크기도 한계가 없습니다.

    

    

    비교 함수                      cookie                              session

    

    사용자 클래스 및          class                               interface

    인터페이스           javax.servlet.http.Cookie    javax.servlet.http.HttpSession

    

    관련 내장 객체      response ,  request             session

    

    저장값 유형          String 형태만 가능               Object(자바의 모든 객체)

    

    저장 장소             클라이언트에 저장                서버에 저장

    

    정보 크기             총 1.2 MB 로 제한                제한 없음

    

    보안                     어려움                                  강력함



3. 쿠키 만들기 예제


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>


<h1>쿠키 조회 예제</h1>

<hr>

<%

Cookie[] cookies = request.getCookies();

// 클라이언트에 저장된 쿠키를 조회하려면 내장 객체 request 의

// getCookies() 를 이용해서 반환 받는다

// 반환값은 쿠키 배열이다.

// 이후 getName() 과 getValue() 메소드를 이용

// 이름과 값을 얻을 수 있다.


if (cookies == null){

out.println("쿠키가 없습니다.");

}else{

/*

for (int i = 0; i < cookies.length; ++i){

out.println("쿠키 이름(name) : " + cookies[i].getName() + ", ");

out.println("쿠키 값(value) : " + cookies[i].getValue() + "<br>");

}

*/

for (Cookie c : cookies) {

out.println("쿠키 이름(name) : " + c.getName() + ", ");

out.println("쿠키값(value) : " + c.getValue() + "<br>");

}

}


%>

</body>

</html>

getcookies.jsp로 저장



<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>


<h1>현재 시각을 쿠키로 저장</h1>

<hr>

String now = new java.util.Date().toString(); <br>

Cookie cookie = new Cookie("lastconnect", now); <br>

cookie.setMaxAge(10); //초 단위 : 10초 <br>

response.addCookie(cookie);<br>

<%

String now = new java.util.Date().toString();

Cookie cookie = new Cookie("lastconnect", now);

cookie.setMaxAge(10); //초 단위 : 10초

response.addCookie(cookie);


%>

<hr><a href=getcookies.jsp>쿠키 조회</a>

</body>

</html>

addtimecookie.jsp로 저장



<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>


<h1> 쿠키 만들기 예제 </h1>

<hr>

Cookie cookie = new Cookie("user", "dalmoon");<br>

cookie.setMaxAge(2 * 60); //초 단위 : 2분 <br>

response.addCookie(cookie);<br>

<!-- response 의 addCookie()메소드를 이용해서

생성된 Cookie 객체를 인자로 클라이언트에게 쿠키를 전송하여 저장한다.

-->

<%

Cookie cookie = new Cookie("user", "dalmoon");

cookie.setMaxAge(2 * 60); //초 단위 : 2분

response.addCookie(cookie);

Cookie cookie1 = new Cookie("user1", "tikipong");

cookie1.setMaxAge(1 * 60); //초 단위 : 1분

response.addCookie(cookie1);

%>

<hr><a href=addtimecookie.jsp>현재 접속 시각을 쿠키로 추가</a>


</body>

</html>



4. cookie 를 이용한 화면 설정 Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>


    <%

    Cookie cookie = new Cookie("language", request.getParameter("language"));

    cookie.setMaxAge(60*60);

    response.addCookie(cookie);

    %>

    

    <SCRIPT type="text/javascript">

    <!-- 

    location.href="cookie_11.jsp"

    //-->

    </SCRIPT>

addtimecookie.jsp로 저장



<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%

String language = "korea";

String cookie = request.getHeader("Cookie");

if(cookie != null)

{

Cookie[] cookies = request.getCookies();

for(int i = 0; i < cookies.length; i++)

{

if(cookies[i].getName().equals("language"))

{

language = cookies[i].getValue();

}

}

}

%>


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title> cookie 를 이용한 화면 설정 Test </title>

</head>

<body>

<%

if(language.equals("korea"))

{

%>

<h3>안녕하세요. 이것은 아름다운 쿠키 입니다.</h3>

<%

}else if(language.equals("english")){

%>

<h3>Hello. This is a Cookie Excmple.</h3>

<%

}else if(language.equals("a")){

%>

<h3>Bonjour. Ceci est une belle cookies.</h3>

<%} %>

<form action="cookie_22.jsp" method="post">

<input type="radio" name="language" value="korea"

<%if(language.equals("korea")) {%> checked

<%} %>> 한국어로 내용보기

<input type="radio" name="language" value="english"

<%if(language.equals("english")) {%> checked

<%} %>> 영어로 내용보기

<input type="radio" name="language" value="a"

<%if(language.equals("a")) {%> checked

<%} %>> 프랑스어로 내용보기<br>

<input type="submit" value="설정">

</form>

</body>

</html>



5. session_1.jsp Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>session_1.jsp Test</title>

</head>

<body>

<%@ page import="java.util.Date" %>


<h1> Session Test </h1>


<hr size="5" color="red">


<h2> 세션 주요 정보 조회 </h2>


세션 ID(유일한 식별자) : <%= session.getId() %><br>

세션 MaxInactiveInterval (기본 세션 유지 시간) : <%=session.getMaxInactiveInterval()%><br>

<%

long mseconds = session.getCreationTime();

Date ttime = new Date(mseconds);

%>

세션 CreateTime (1970 년 1월 1일 0시 이후의 지난 밀리 second) : <%=mseconds %><br>

세션 CreateTime (시각으로 다시 계산) : <%=ttime.toLocaleString() %><br>


<hr size="5" color="green">


</body>

</html>


+ Recent posts