ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 07) 내장 객체 예제
    학교/JAVA 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 내장 객체 종류  (1) 2023.12.14
Designed by Tistory.