1. 1) request 예제(1)
<%@ 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>
<%--
1. form 태그를 이용해서 post 형식으로 이름, 키와 몸무게를 입력 받음
2. req_quiz02_ok.jsp로 전송
3. 해당 페이지에서는 넘어간 값을 bmi 지수를 처리
4. bmi공식 = kg/ (cm/100 * cm/100) - 문자열이기 때문에 형변환 진행(실수)
화면에 이름, 키, 몸무게 bmi 지수를 출력
if를 통해 bmi지수가 25이상이면 과체중, 18 이하라면 저체중, 나머지는 정상으로 출력
--%>
<form action="req_quiz02_ok.jsp" method="post">
<h3>입력 양식</h3>
이름: <input type = "text" name = "name"><br>
키: <input type = "number" name = "height"><br>
몸무게: <input type = "number" name = "weight"><br>
<input type = "submit" value="확인">
<input type = "reset" value="폼초기화">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
//키
String a = request.getParameter("height");
double height = Double.valueOf(a).doubleValue();
//double height = Double.parseDouble(a); 도 가능
//몸무게
String b = request.getParameter("weight");
double weight = Double.valueOf(b).doubleValue();
double str = (weight / (height/100 * height/100));
double bmi = Double.valueOf(str).doubleValue();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
이름: <%=name %> <br>
키: <%=height %> <br>
몸무게: <%=weight %> <br>
bmi: <%=bmi %> <br>
<%--
<% if(bmi >= 25) { %>
<b> 과체중 </b> = 이렇게 써도 됨
--%>
<% if(bmi >= 25){
out.println("과체중");
} else if(bmi <= 18) {
out.println("저체중") ;
} else {
out.println("정상");
}
%>
</body>
</html>
1. 2) request 예제(2)
- i는 자바니까 <%= %> 얘로 감싸줄 것
<%@ 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>
<form action = "req_quiz03_ok.jsp">
<h3>req_quiz03.jsp</h3>
<h6>다음을 구현하고 a태그 클릭시 req_quiz03_ok에 학생 번호를 출력하세요</h6>
<% for(int i = 1; i <= 30; i++){ %>
<a href="req_quiz03_ok.jsp?info=<%=i %>"> <%=i %>번 학생</a> <br>
<%} %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String info = request.getParameter("info");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=info %>번 학생 선택<br>
</body>
</html>
2.
* response 객체의 이해
- 웹 브라우저의 요청에 응답하는 것을 response라고 합니다.
- 이러한 응답의 정보를 가지고 있는 객체를 response객체라고 합니다.
1) response 예제(1)
<%@ 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>
<form action = "res_ex01_result.jsp" method="post">
이름: <input type = "text" name = "name"><br>
나이: <input type = "text" name = "age"><br>
<input type = "submit" value = "확인"><br>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8"); //한글 처리
String name = request.getParameter("name");
String age = request.getParameter("age");
//age에 따라서 다른 결과 페이지로 이동(결과 처리 페이지)
//age를 정수 변환
int result = Integer.parseInt(age);
if(result >= 20){
response.sendRedirect("res_ex01_ok.jsp"); //강제 페이지 이동
} else {
response.sendRedirect("res_ex01_no.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>
ok 페이지
</body>
</html>
<%@ 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>
no 페이지(20세 미만)
</body>
</html>
2) response 예제(2)
<%@ 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>
<style>
.container {
display: flex;
height : 100vh;
background-color: yellow;
justify-content: center;
align-items: center;
}
#wrap {
border: 1px solid #777;
background-color: #ffffff;
padding: 10px;
text-align: center;
}
</style>
</head>
<body>
<!--
태그의 class 속성 - 태그를 식별하는 이름(화면에서 중복이 가능 O)
주로 디자인을 적용하는데 사용
선택자 class는 .으로 나타내고 id는 #으로 지칭해서 나타냄
태그의 id - 고유하게 식별하는 이름(화면에서 중복이 있으면 안됨 X)
-->
<div class = "container">
<form action="res_ex02_result.jsp" method="post" id="wrap">
<h3>로그인 연습</h3>
아이디: <input type="text" name="id" placeholder="아이디"> <br>
비밀번호: <input type="password" name="pw" placeholder="비밀번호"> <br>
<input type="submit" value="로그인">
</form>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/*
1. id, pw을 받아서 처리합니다.
2. id가 abc1234이고 비밀번호가 asd123이라면 로그인 성공으로 간주하고 res_ex02_ok 리다이렉트
3. id or pw가 틀린 경우 res_ex02_no페이지로 리다이렉트
*/
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
if(id.equals("abc1234") && pw.equals("asd123")){
response.sendRedirect("res_ex02_ok.jsp");
} else {
response.sendRedirect("res_ex02_no.jsp");
}
%>
3.
* 쿠키(Cookie)
- 웹 브라우저에서 서버로 어떤 데이터를 요청하면, 서버측에서는 알맞은 로직을 수행한 후 데이터를 웹 브라우저에 응답합니다.
- 그리고 Http 프로토콜은 응답 후에 웹 브라우저와의 관계를 종료합니다.
- 연결이 끊겼을 때, 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식을 사용합니다.
- 쿠키는 서버에서 생성하여, 서버가 아닌 클라이언트측(local)에 정보를 저장합니다.
- 서버에서 요청할 때마다 쿠키의 속성값을 참조 또는 변경할 수 있습니다.
- 쿠키는 개당 4kb로 용량이 제한적이며, 300개까지(1.2MB) 데이터 정보를 가질 수 있습니다.
- 쿠키문법: 쿠키클래스에서 쿠키 생성 -> setter메서드로 쿠키의 속성 설정 -> response객체에 쿠키 탑재 -> 로컬 환경에 저장
1) 쿠키 예제(1)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//쿠키는 서버에서 생성해서 response에 담아서 클라이언트로 보냅니다.
//1. 쿠키 생성문
Cookie idCookie = new Cookie("user_id", "kkk123"); //이름, 값
//2. 쿠키 시간 설정(초)
idCookie.setMaxAge(3600); //1시간
//3. 쿠키를 response에 저장
response.addCookie(idCookie);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="cookie_ex01_ok.jsp">쿠키 확인하기</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//쿠키 확인하기
//브라우저에 쿠키는 request 객체에 자동으로 넘어와서 저장됩니다. (만료되기 전까지 어디서든 사용 가능)
Cookie[] cookies = request.getCookies();
//쿠키가 없다면 null이기 때문에 에러 발생
if(cookies != null){
for(Cookie c : cookies){
out.println(c.getName() + "<br>");
out.println(c.getValue() + "<br>");
}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3> 쿠키 사용하기 </h3>
<a href = "cookie_ex01_reset.jsp">쿠키 삭제</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//쿠키 삭제 - 쿠키는 삭제가 없어서 동일한 이름의 쿠키의 0초로 만들어서 삭제 해야 함.
Cookie idCookie = new Cookie("user_id", "kkk123");
idCookie.setMaxAge(0);
response.addCookie(idCookie);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>쿠키 삭제</h3>
</body>
</html>
- 열린 창에서 f12 눌러서 application 확인 하면 쿠키 지워짐
2) 쿠키 예제(2)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/*
이 페이지 처음 진입하면 idCheck쿠키를 찾아서 값을 얻고 아이디 태그 안에
미리 값을 넣어주는 코드를 작성합니다.
input 태그에 value 속성을 쓰면 됩니다.
*/
Cookie [] arr = request.getCookies();
String userID = "";
if(arr != null){
for(Cookie c : arr) {
if( c.getName().equals("idCheck") ) {
userID = c.getValue();
}
}
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2> 쿠키 로그인 연습</h2>
<form action = "cookie_ex02_ok.jsp" method = "post">
아이디: <input type = "text" name = "id" size = "10" value = "<%=userID %>"> <br>
비밀번호: <input type = "password" name = "pw" size = "10"> <br>
<input type = "submit" value = "로그인">
<input type = "checkbox" name = "idCheck" value = "y"> 아이디 기억하기
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String idCheck = request.getParameter("idCheck");
//로그인 성공이라 가정
if(id.equals("aaa123") && pw.equals("1234")){
//로그인 성공 시 id 쿠키 생성
Cookie cookie = new Cookie("user_id", id);
cookie.setMaxAge(1800);
response.addCookie(cookie);
//idCheck 쿠키
//사용자가 체크박스를 체크 했다면 idCheck를 생성, 생성 시간은 30초
if(idCheck != null){
if(idCheck.equals("y")){
Cookie idCheckCookie = new Cookie("idCheck", id);
idCheckCookie.setMaxAge(30);
response.addCookie(idCheckCookie);
}
}
response.sendRedirect("cookie_ex02_welecome.jsp"); //성공 페이지
} else {
if(idCheck != null){
if(idCheck.equals("y")){
Cookie idCheckCookie = new Cookie("idCheck", id);
idCheckCookie.setMaxAge(30);
response.addCookie(idCheckCookie);
}
}
response.sendRedirect("cookie_ex02.jsp");
}
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//user_id 쿠키를 찾는 작업
Cookie [] arr = request.getCookies();
String id = "";
if(arr != null){
for(Cookie c : arr) {
if( c.getName().equals("user_id") ) {
id = c.getValue();
}
}
}
if(id.equals("")){
response.sendRedirect("cookie_ex01.jsp");
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
어서오시요. (<%=id %>님)
</body>
</html>
4.
* 세션(Session)
- 세션도 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단입니다.
- 단, 쿠키와 달리 클라이언트의 특정 위치에 저장되는 것이 아니라, 서버상에 객체형태로 존재합니다.
- 서버당 하나의 세션 객체를 가질 수 있습니다. (브라우저 별 서로 다른 세션 사용)
- 세션 객체는 브라우저 창을 종료하면 삭제됩니다.
- 따라서 세션은 서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없습니다.
- 세션은 클라이언트의 요청이 발생하면 자동생성되어 고유한 ID값을 클라이언트에 넘겨주며 이것은 쿠키에 저장됩니다.
- JSP에서는 session이라는 내장 객체를 지원하여 세션의 속성을 설정할 수 있습니다.
1) 세션 예제(1)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/*
세션은 서버와 정보를 유지하기 위해 사용하는 내장객체 입니다.
setAttribute("이름", 값)으로 저장합니다.
*/
session.setAttribute("user_id", "ccc123");
session.setAttribute("user_name", "이순신");
//시간 설정
session.setMaxInactiveInterval(3600); //1시간 - 기본값 30분
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href = "session_ex01_ok.jsp"> 세션 확인하기 </a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/*
세션에 저장된 값은 브라우저가 종료되기 전까지 또는 기본 30분 유지되고
어느 페이지에서나 사용할 수 있습니다.
getAttribute("이름")을 사용합니다.
*/
String user_id = (String)session.getAttribute("user_id");
String user_name = (String)session.getAttribute("user_name");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
세션 값: <%=user_id %><br>
세션 값: <%=user_name %><br>
<a href = "session_ex01_remove.jsp">세션 삭제</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//세션
session.removeAttribute("user_id");
//세션 얻기
String user_id = (String)session.getAttribute("user_id");
String user_name = (String)session.getAttribute("user_name");
//세션 전부 삭제
session.invalidate();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3> remove된 결과</h3>
세션 값: <%=user_id %><br>
세션 값: <%=user_name %><br>
</body>
</html>
2) 세션 예제(2)
<%@ 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>
<h2>세션 로그인 연습</h2>
<form action="session_login_ok.jsp" method="post">
아이디:<input type="text" name="name"><br>
비밀번호:<input type="password" name="pw"><br>
닉네임:<input type="text" name="nick"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/*
1. 아이디, 비밀번호, nick을 받습니다.
2. 아이디 비밀번호가 동일하면 로그인 성공이라고 간주하고 (user_id, id)의 세션생성
(user_nick, 닉네임)을 세션을 생성
session_welcome로 이동해서 화면에 "id님 환영합니다"를 출력합니다.
틀린경우는 로그인페이지로 리다이렉트 처리해주세요.
session_welcome페이지에서는 a태그를 이용해서 session_logout을 만들고,
세션을 무효화한 이후에 로그인 페이지로 리다이렉트 시키면 됩니다
*/
String id = request.getParameter("name");
String pw = request.getParameter("pw");
String nick = request.getParameter("nick");
if(id.equals("minjeong") && pw.equals("12345")){
session.setAttribute("user_id", id);
session.setAttribute("user_password", pw);
session.setAttribute("user_nick", nick);
session.setMaxInactiveInterval(3600);
response.sendRedirect("session_welcome.jsp");
} else {
response.sendRedirect("session_login.jsp");
}
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = (String)session.getAttribute("user_nick");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
어서오시요. (<%=name %>님)
<a href = "session_logout.jsp">로그아웃</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
session.invalidate();
response.sendRedirect("session_login.jsp");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
3) 세션 예제(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>
<h2>세션 로그인 연습</h2>
<form action="session_login_ok.jsp" method="post">
아이디:<input type="text" name="name"><br>
비밀번호:<input type="password" name="pw"><br>
닉네임:<input type="text" name="nick"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/*
1. 아이디, 비밀번호, nick을 받습니다.
2. 아이디 비밀번호가 동일하면 로그인 성공이라고 간주하고 (user_id, id)의 세션생성
(user_nick, 닉네임)을 세션을 생성
session_welcome로 이동해서 화면에 "id님 환영합니다"를 출력합니다.
틀린경우는 로그인페이지로 리다이렉트 처리해주세요.
session_welcome페이지에서는 a태그를 이용해서 session_logout을 만들고,
세션을 무효화한 이후에 로그인 페이지로 리다이렉트 시키면 됩니다
*/
request.setCharacterEncoding("utf-8");
String id = request.getParameter("name");
String pw = request.getParameter("pw");
String nick = request.getParameter("nick");
if(id.equals("minjeong") && pw.equals("12345")){
session.setAttribute("user_id", id);
session.setAttribute("user_password", pw);
session.setAttribute("user_nick", nick);
session.setMaxInactiveInterval(3600);
response.sendRedirect("session_welcome.jsp");
} else {
response.sendRedirect("session_login.jsp");
}
//
//if(id.equals(pw)){ //login 성공
// session.setAttribute("user_id", id); //세션(이름, 값)
// session.setAttribute("user_nick", nick);
// response.sendRedirect("session_welcome.jsp");
//} else {
// response.sendRedirect("session_login.jsp");
//}
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
session.invalidate();
response.sendRedirect("session_login.jsp");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//세션 사용
//String id = (String)session.getAttribute("user_id");
//String nick = (String)session.getAttribute("user_nick");
String name = (String)session.getAttribute("user_nick");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
어서오시요. (<%=name %>님)
<a href = "session_logout.jsp">로그아웃</a>
</body>
</html>