mjeongriver
article thumbnail
Published 2022. 11. 30. 18:31
day41-jsp TIL/JSP

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>

'TIL > JSP' 카테고리의 다른 글

day44-jsp  (0) 2022.12.05
day43-jsp  (1) 2022.12.02
day42-jsp  (0) 2022.12.01
day40-jsp  (0) 2022.11.29
day39-jsp  (2) 2022.11.28
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그