학교/JAVA

07) 내장 객체 예제

서윤-정 2023. 12. 15. 12:04

(login1.jsp)

<%@ page contentType="text/html" pageEncoding="utf-8" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%
	// Date 클래스를 사용하여 현재 날짜 및 시간 정보 가져오고, 
    // SimpleDateFormat을 사용하여 "yyyy-MM-dd" 형식으로 포맷
	Date now = new Date();
	SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
	String date = df.format(now);
	
	// date 변수의 값이 11로 끝난 경우, "underCheck.jsp"로 리다이렉션
    // response.sendRedirect()를 사용하여 새로운 페이지로 이동,
    // return; 통해 현재 페이지의 실행을 중단
	if (date.endsWith("11")) {
		response.sendRedirect("underCheck.jsp");
		return;
	}

	// 사용자가 입력한 아이디 받아와 출력
    // 현재 날짜 및 시간 정보 문자열로 변환해 "로그인 시간" 출력
    // 최종 결과물을 HTML 형식으로 구성하여 출력
    String uid = request.getParameter("id");
    String res = "<h3>사용자 아이디: " + uid + "</h3>";
    res += "<br>로그인 시간: " + now.toString();
    out.print(res);
%>

// "visitCount.jsp" 페이지를 현재 페이지에 include 하여 방문자 수 출력
// include 문 사용해 해당 파일의 내용을 현재 위치에 삽입
<br><br><%@ include file="visitCount.jsp" %>

 

--> 사용자 아이디를 받아 로그인 시간과 함께 출력하고, 현재 날짜가 11일인 경우 "underCheck.jsp"로 리다이렉션하는 기능을 가지고 있다.

또한, "visitCount.jsp" 페이지를 include하여 방문자 수를 출력하고 있다.

 

 

(underCheck.jsp)

<%@ page contentType="text/html" pageEncoding="utf-8" %>
<%
    String res = "<h3>매월 12일은 시스템 점검일니다.</h3>";
    res += "<br>12일 이후 다시 이용해주세요.";
    out.print(res); 
%>

 

(visitCount.jsp)

<%@ page contentType="text/html" pageEncoding="utf-8" %>
<%
// application 객체를 사용하여 웹 애플리케이션 범위에 저장된 속성 중 
// counter라는 이름의 속성 값을 가져온다.
    String strcnt = (String) application.getAttribute("counter");
    
// counter 속성의 값이 null이면 0으로 초기화하고, 
// 그렇지 않으면 해당 값을 정수로 변환하여 count 변수에 저장
    int count = (strcnt == null) ? 0 : Integer.valueOf(strcnt);
    out.print("방문자수: " + count);
    
// 방문자 수를 1 증가시킨 후, 다시 counter 속성으로 설정하여 웹 애플리케이션 범위에 저장한다.
// 이렇게 하면 다음 사용자가 페이지를 요청할 때마다 방문자 수가 업데이트 된다.
    application.setAttribute("counter", String.valueOf(++count));
%>

--> 매 페이지 요청마다 방문자 수를 증가시키고 그 값을 출력하는 예제

--> 페이지가 로드될 때마다 application 객체를 사용하여 방문자 수를 추적하고 업데이트

 

int count = (strcnt == null) ? 0 : Integer.valueOf(strcnt);          (삼항연산자)

--> strcnt이가 null이면: count에 0 할당

--> 그렇지 않으면: Integer.valueOf(strcnt)를 통해 문자열 형태의 숫자를 정수로 변환하여 count에 할당

 

application.setAttribute("counter", String.valueOf(++count));

--> 증가된 count값을 문자열로 변환. 이렇게 하면 정수값을 문자열로 변환하여 저장 가능

--> counter라는 이름의 속성에 증가된 방문자 수를 문자열로 변환한 값 저장

 

+ setAttribute

void setAttribute(String name, Object value);

--> name: 설정할 속성의 이름. 일반적으로 문자열로 지정되며, 이 이름 통해 해당 속성을 나중에 검색 가능

--> value: 설정할 속성의 값. 어떤 타입의 객체든 상관없이 받을 수 있음

--> 지정된 이름과 값으로 속성 저장, 이 메서드 호출하면 객체 내부에 지정된 이름으로 속성 저장

--> 이후에는 같은 이름으로 getAttribute 메서드 사용하여 해당 속성 가져올 수 있음

 

 


 

(login.jsp)

<%@ page contentType="text/html" pageEncoding="utf-8" %>
<%
    String uid = request.getParameter("id");
    
    if (uid == null) {
    	out.print("로그인 정보가 없습니다.");
    }
    else {
    // 전달받은 아이디가 null이 아닌 경우(사용자가 아이디 입력한 경우),
    // 세션 객체를 사용하여 사용자 아이디 세션에 저장
    // 세션은 사용자의 브라우저와 웹 애플리케이션 간에 상태 정보를 유지하는 데 사용됨
		session.setAttribute("id", uid);
    // 사용자가 로그인 후에 메인 페이지로 이동하게 됨
		response.sendRedirect("main.jsp");
    }
%>

 

(main.jsp)

<%@ page contentType="text/html" pageEncoding="utf-8" %>
<%
	// 세션 객체를 사용하여 id라는 이름의 속성을 읽어옴. (이전에 로그인한 사용자의 아이디)
    String uid = (String) session.getAttribute("id");
    if (uid == null) {
    	out.print("로그인 정보가 없습니다.");
    }
    else {
    	out.print("메인 페이지입니다.");
		// session.setAttribute("id", uid);
		
%>
		 <br><br>
         <form action="logout.jsp">
             <input type="submit" value="로그아웃">
         </form>
 <%
     }
 %>

 

(logout.jsp)

<%@ page contentType="text/html" pageEncoding="utf-8" %>
<%
	// 현재 사용자 세션을 무효화함. (사용자의 로그인 상태 종료 후 세션에 저장된 모든 정보 삭제)
    session.invalidate();
   	// out.print("로그아웃 하였습니다.");
   	response.sendRedirect("login.html");
%>

 

 

 


 

HTTP 요청 메시지 헤더 출력 예제

(getHttpHeaders.jsp)

<%@ page contentType="text/html" pageEncoding="utf-8" %>
<%@ page import="java.util.Enumeration" %>
<%
	// 현재 요청의 모든 헤더 이름을 나타내는 Enumeration을 가져옴
    // request.getHeaderNames 메서드는 모든 헤더 이름을 Enumeration 형태로 반환함
	Enumeration<String> en = request.getHeaderNames();
    
    // hasMoreElements 메서드 통해 Enumeration에 더 이상 요소가 있는지 확인, 있으면 반복
	while (en.hasMoreElements()) {
    	// Enumeration에서 다음 헤더 이름 가져옴
		String name = (String) en.nextElement();
        // 현재 헤더 이름에 대한 헤더 값 가져옴
		String value = request.getHeader(name);
        // 각 헤더 이름, 값에 대한 정보를 HTML 형식으로 출력
	    out.print(name + ": " + value + "<br>");
	}
%>

 

 

 


 

(moveURL.html)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="moveURL.jsp">
<select name="site">
<option value="naver">네이버
<option value="daum">다음
<option value="google">구글
</select>
<input type="submit" value="submit" >
</form>
</body>
</html>

 

(moveURL.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>
<%
// 클라이언트가 보낸 데이터 받기
// 사용자가 선택한 웹사이트의 값을 selectedSite 변수에 저장
String selectedSite = request.getParameter("site");


// 데이터 값에 따른 분기(sendRedirect())
 if (selectedSite != null) {
        if (selectedSite.equals("naver")) {
            response.sendRedirect("https://www.naver.com");
        } else if (selectedSite.equals("daum")) {
            response.sendRedirect("https://www.daum.net");
        } else if (selectedSite.equals("google")) {
            response.sendRedirect("https://www.google.com");
        } else {
            // 선택된 값이 유효하지 않을 경우 예외 처리
            out.println("잘못된 선택입니다.");
        }
    } else {
        // 선택된 값이 없을 경우 예외 처리
        out.println("선택된 값이 없습니다.");
    }%>
</body>
</html>

 

'학교 > JAVA' 카테고리의 다른 글

06) JSP 예제  (0) 2023.12.17
05) 서블릿 예제  (0) 2023.12.16
05) 서블릿  (0) 2023.12.14
06) JSP  (0) 2023.12.14
07) JSP 내장 객체 종류  (0) 2023.12.14