(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 |