[23.01.03] 51일차 [프론트엔드] login창만들기, application 내장객체

W·2023년 1월 3일
0

국비

목록 보기
76/119
서버 세션 기억공간에 (이름,값) 이름=값 : 
<%
session.setAttribute("sname", "svalue");
%>
<br>
서버 세션 기억공간에 이름에 해당하는 값을 가져오기 :
<%=session.getAttribute("sname") %>
[출력]
서버 세션 기억공간에 이름에 해당하는 값을 가져오기 : svalue

login 창 만들기

  • login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/login.jsp</title>
</head>
<body>
<h1>jsp1/login.jsp</h1>

<form action="loginPro.jsp" name="fr" method="get">

아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pass"><br>

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

</body>
</html>
  • loginPro.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/loginPro.jsp</title>
</head>
<body>

<h1>jsp1/loginPro.jsp</h1>
<%
String id = request.getParameter("id");
String pass = request.getParameter("pass");
%>

폼에서 입력한 아이디 : <%=id %><br>
폼에서 입력한 비밀번호 : <%=pass %><br>

<%
// 데이터베이스 저장된 아이디 admin, 비밀번호 p123
String dbId="admin";
String dbPass="p123";
%>

데이터베이스에서 입력한 아이디 : <%=dbId %><br>
데이터베이스에서 입력한 아이디 : <%=dbPass %><br>

<%
// 주소값 비교하기때문에 ==로 비교하면 틀리다고 나옴
// 기본자료형 비교 숫자 == 숫자
// 참조형 비교 문자열 비교 문자열.equals(문자열)
if(id.equals(dbId) && pass.equals(dbPass)){ 
	// 아이디 비밀번호 일치 => 권한부여 
	//                  => 연결만 되어 있으면 페이지 상관없이 값을 유지
	//					=> 세션값을 부여
	session.setAttribute("id",id);
	// loginMain.jsp 이동
	response.sendRedirect("loginMain.jsp");

}else {
	// 아이디 비밀번호 틀림
	// 뒤로 이동
	out.println("아이디 비밀번호 틀림");
	%>
	<script type="text/javascript">
	alert("아이디 비밀번호 틀림");
	history.back();
	</script>
	<%

}
%>
</body>
</html>
  • loginMain.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/loginMain.jsp</title>
</head>
<body>

<h1>jsp1/loginMain.jsp</h1>
<%=session.getAttribute("id") %>님이 로그인하셨습니다.
</body>
</html>
  • logout
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/logout.jsp</title>
</head>
<body>
<h1>jsp1/logout.jsp</h1>
<%
session.invalidate();
// response.sendRedirect("login.jsp");
%>
<script type="text/javascript">
alert("로그아웃");
location.href="login.jsp";
</script>
</body>
</html>

  1. 아이디 비밀번호 불일치하는 경우

    login.jsp 화면으로 돌아감

  2. 아이디 비밀번호 일치하는 경우

    loginMain.jsp 화면으로 넘어감
    로그아웃 버튼 눌리면 그냥 login.jsp로 넘어가는 방법, 팝업메시지 뜬 후 login.jsp로 넘어가는 방법 2가지 있음

application 내장객체

  • 웹서버(웹애플리케이션서버)
    객체생성 => 기억장소 할당

서버의 정보를 저장하는 내장객체
서버 start 하면 application 기억장소 할당
서버 stop 하면 application 기억장소 삭제
서버 당 1개 application 기억장소 생성

서버 정보 : <%=application.getServerInfo() %><br>
서버 물리적 경로 : <%=application.getRealPath("/") %><br>
[출력]
서버 정보 : Apache Tomcat/9.0.68
서버 물리적 경로 : D:\workspace_web1\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\webProject\

out 내장객체

출력정보를 저장

<%
out.println("웹 출력 정보 저장");
System.out.println("콘솔 출력");
%>
<br>
출력 정보를 저장하는 기억장소 크기 : <%=out.getBufferSize() %><br>
출력 정보를 사용하고 남은 기억장소 크기 : <%=out.getRemaining() %><br>
<%
// 출력 마감
out.close();
out.println("마감하고 출력"); // 에러 발생
%>
[출력]
출력 정보를 저장하는 기억장소 크기 : 8192
출력 정보를 사용하고 남은 기억장소 크기 : 7823

pageContext 내장객체

현 페이지 정보를 저장하는 내장객체
페이지가 이동하면 기존 페이지 정보는 사라지고 새로운 페이지 정보 저장

기억장소 유지 기간 (Scope 값 유지 영역)

  • pageContext : 하나의 페이지 값만 유지
  • request, response : 요청정보 값 유지
  • session : 연결만 되어있으면 페이지 상관없이 값 유지
  • application : 서버가 start되어 있는 동안 값 유지

기억장소 유지 기간 알아보기

  • scopeForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/scopeFormm.jsp</title>
</head>
<body>
<h1>jsp1/scopeForm.jsp</h1>

<form action="scopePro.jsp" name="fr" method="get">

아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pass"><br>

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


</body>
</html>
  • scopePro.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/scopePro.jsp</title>
</head>
<body>
<h1>jsp1/scopePro.jsp</h1>
<%
// 폼에서 입력한 아이디 비밀번호 => 서버에 전달 request 내장객체 저장
String id = request.getParameter("id");
String pass = request.getParameter("pass");

// 내장객체 저장소에 => 값저장

pageContext.setAttribute("page", "pageContext value");
request.setAttribute("req", "request value");
session.setAttribute("ses", "session value");
application.setAttribute("app", "application value");
%><br>


아이디 : <%= id %><br>
비밀번호 : <%= pass %><br>

// 내장객체에 값 입력하기
pageContext 값 : <%=pageContext.getAttribute("page") %><br>
request 값 : <%=request.getAttribute("req") %><br>
session 값 : <%=session.getAttribute("ses") %><br>
application 값 : <%=application.getAttribute("app") %><br>


<a href="scopePro2.jsp">scopePro2.jsp로 이동</a>
</body>
</html>

  • scopePro2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/scopePro2.jsp</title>
</head>
<body>
<h1>jsp1/scopePro2.jsp</h1>
<%
// 폼에서 입력한 아이디 비밀번호 => 서버에 전달 request 내장객체 저장
String id = request.getParameter("id");
String pass = request.getParameter("pass");
%>

아이디 : <%=id %><br>
비밀번호 : <%=pass %><br>
pageContext 값 : <%=pageContext.getAttribute("page") %><br>
request 값 : <%=request.getAttribute("req") %><br>
session 값 : <%=session.getAttribute("ses") %><br>
application 값 : <%=application.getAttribute("app") %><br>
</body>
</html>

scopePro2.jsp에 아이디 비밀번호 넘기기

  • scopePro.jsp에서 하이퍼링크로 넘기기
<a href="scopePro2.jsp?id=<%=id%>&pass=<%=pass%>">scopePro2.jsp로 이동</a>

주소값에 id pass값 담아서 넘기면 된다.

<script type="text/javascript">
alert("scopePro2.jsp 이동");
location.href="scopePro2.jsp?id=<%=id%>&pass=<%=pass%>";
</script>

javascript로 구현할 수도 있다.

<%
response.sendRedirect("scopePro2.jsp?id="+id+"&pass="+pass);
%>

response 내장객체에 담아서 넘길 수 있다.

0개의 댓글