JSP 내장 객체는 JSP 페이지 내에서 특별한 선언 없이 사용할 수 있는 객체들입니다.
이 객체들은 자동으로 생성되며, 서버와 클라이언트 간의 상호작용을 처리하고 웹 애플리케이션의 다양한 기능을 지원하는 데 사용됩니다.
주요 내장 객체
- request: 클라이언트의 요청 정보를 포함하는 객체.
- response: 서버에서 클라이언트로 전송할 응답을 나타내는 객체.
- session: 사용자별 정보를 서버에 저장하는 객체.
- application: 애플리케이션 범위의 속성을 저장하는 객체.
- out: 클라이언트에 데이터를 출력하는 데 사용되는 객체.
- config: JSP 페이지의 설정 정보를 포함하는 객체.
- pageContext: JSP 페이지의 실행 환경을 제공하는 객체.
- exception : 예외 정보를 제공 (에러 페이지에서만 사용)
- page : 현재 JSP 페이지를 나타냄
1. request
- 설명: 클라이언트의 요청 정보를 포함하는 객체입니다.
HTTP 요청 매개변수, 헤더, 쿠키 등의 정보를 제공합니다. - 주요 메서드:
- getParameter(String name): 요청 파라미터 값을 반환합니다.
- setAttribute(String name, Object value): 요청 속성을 설정합니다.
- getAttribute(String name): 요청 속성 값을 반환합니다.
2. response
- 설명: 서버에서 클라이언트로 전송할 응답을 나타내는 객체입니다.
HTTP 상태 코드, 응답 헤더, 쿠키 등을 설정할 수 있습니다. - 주요 메서드:
- setContentType(String type): 응답의 MIME 타입을 설정합니다.
- sendRedirect(String location): 클라이언트를 다른 URL로 리다이렉트합니다.
- addCookie(Cookie cookie): 응답에 쿠키를 추가합니다.
3. session
- 설명: 세션은 사용자별 정보를 서버에 저장하는 객체입니다.
사용자별 상태 정보를 관리할 수 있습니다. - 주요 메서드:
- getAttribute(String name): 세션 속성 값을 반환합니다.
- setAttribute(String name, Object value): 세션 속성을 설정합니다.
- invalidate(): 세션을 무효화합니다.
4. application
- 설명: 애플리케이션 범위의 속성을 저장하는 객체입니다.
모든 사용자와 모든 세션에 대해 공통적인 데이터를 저장할 수 있습니다. - 주요 메서드:
- getAttribute(String name): 애플리케이션 속성 값을 반환합니다.
- setAttribute(String name, Object value): 애플리케이션 속성을 설정합니다.
5. out
- 설명: 클라이언트에 출력하는 데 사용되는 객체입니다.
JSP 페이지의 출력 버퍼를 제어합니다. - 주요 메서드:
- print(String s): 문자열을 출력합니다.
- println(String s): 문자열을 출력하고 줄바꿈을 추가합니다.
- clear(): 출력 버퍼를 지웁니다.
6.config
- 설명: JSP 페이지의 설정 정보를 포함하는 객체입니다.
JSP 페이지에 대한 초기화 파라미터를 제공합니다. - 주요 메서드:
- getInitParameter(String name): 초기화 파라미터 값을 반환합니다.
7. pageContext
- 설명: JSP 페이지의 실행 환경을 제공하는 객체입니다.
모든 범위에 접근할 수 있는 메서드를 제공합니다. - 주요 메서드:
- getAttribute(String name, int scope): 특정 범위의 속성 값을 반환합니다.
- setAttribute(String name, Object value, int scope): 특정 범위의 속성을 설정합니다.
8. exception
- 설명: JSP 페이지에서 발생한 예외 정보를 포함하는 객체로, 오류 페이지에서만 유효합니다.
- 주요 메서드:
- getMessage(): 예외 메시지를 반환합니다.
- printStackTrace(): 예외의 스택 추적을 출력합니다.
9. page
- 설명: 현재 JSP 페이지의 인스턴스를 나타내는 객체입니다. 일반적으로 this와 동일합니다.
class_jsp_v04 폴더 생성
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 페이지</title>
</head>
<body>
<h2>로그인</h2>
<%-- welcome.jsp : 상대경로 --%>
<!-- 로그인 처리는 예외적인 사항으로 POST 요청을 하자! 이유: GET 방식은 주소창에 데이터가 보이고 취약하다. -->
<form action="welcome.jsp" method="POST">
<label for="username">username : </label>
<input type="text" id="username" name="username" value="홍길동">
<label for="password">password : </label>
<input type="text" id="password" name="password" value="1234">
<button type="submit">로그인</button>
</form>
</body>
</html>
welcome.jsp
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>환영해요</title>
</head>
<body>
<%-- <% %> 스크립트 릿 이라고한다. --%>
<%
// http://localhost:8080/jsp/welcome.jsp
// session 객체를 사용하여 사용자 정보 여부를 확인하자.
String username = (String)session.getAttribute("username");
if(username == null || username.trim().isEmpty()){
// request 객체에서 사용자 정보를 추출하자.
username = request.getParameter("username");
if(username != null && !username.trim().isEmpty()) {
// 홍길동 ok
// "" && !""
// 세션 객체를 사용해서 사용자 정보를 저장(속성과 같음)
session.setAttribute("username", username);
} else {
// 사용자가 정상적인 데이터를 보내지 않는다면 (클라이언트를 다시 뒤로 돌린다.)
response.sendRedirect("login.jsp"); // login.jsp 로 응답해서 돌려보낸다.
return;
}
}
// application 내장 객체를 사용하여 방문 횟수 증가
Integer visitCount = (Integer)application.getAttribute("visitCount");
if(visitCount == null){
visitCount = 1;
} else {
visitCount++;
}
// chrome 이나 edge에서 각각 로그인 해서 새로고침 하면 방문 횟수는 공유가 된다.
application.setAttribute("visitCount", visitCount);
Date now = new Date();
%>
<h2>환영 합니다. <%= username %> </h2>
<p>현재 시간 : <%= now %></p>
<p>방문 횟수 : <%= visitCount %> </p>
</body>
</html>


login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 페이지</title>
</head>
<body>
<h2>로그인</h2>
<%-- welcome.jsp : 상대경로 --%>
<!-- 로그인 처리는 예외적인 사항으로 POST 요청을 하자! 이유: GET 방식은 주소창에 데이터가 보이고 취약하다. -->
<form action="welcome2.jsp" method="POST">
<label for="username">username : </label>
<input type="text" id="username" name="username" value="홍길동">
<label for="password">password : </label>
<input type="text" id="password" name="password" value="1234">
<button type="submit">로그인</button>
</form>
</body>
</html>
welcome2.jsp
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>환영해요</title>
</head>
<body>
<%-- <% %> 스크립트 릿 이라고한다. --%>
<%
// http://localhost:8080/jsp/welcome2.jsp
// session 객체를 사용하여 사용자 정보 여부를 확인하자.
String username = (String)session.getAttribute("username");
if(username == null || username.trim().isEmpty()){
// 여기에 들어 온다면 최초 요청이 아닐까??
// 폼 데이터 있는지 없는지 확인 .... 가정 있다면
session.setAttribute("username", "홍길동");
session.setAttribute("visitCount", 1);
} else {
Integer visitCount = (Integer)session.getAttribute("visitCount");
if(visitCount == null){
visitCount = 1;
} else {
visitCount++;
}
// 두번째 요청 인듯 ...
session.setAttribute("visitCount", visitCount);
}
%>
<h2>환영 합니다, <%= username %> </h2>
<p>방문 횟수 : <%= session.getAttribute("visitCount") %> </p>
</body>
</html>
// 두번째 요청 인듯 . . .
session.setAttribute("visitCount", 1); <-- 이렇게 수정해야 될거같다.
새로고침 해도 방문횟수가 1 이상 증가하지 않는다.


'Java' 카테고리의 다른 글
| 2024.07.04 JSP 프로그래밍 기본 쿠키와 세션 관리 (0) | 2024.07.04 |
|---|---|
| 2024.07.04 JSP 프로그래밍 기본 폼 처리와 요청 방식 (0) | 2024.07.04 |
| 2024.07.04 JSP 프로그래밍 기본 JSP 지시자(Directive) 간단 정리 (0) | 2024.07.04 |
| 2024.07.03 JSP 프로그래밍 기본 JSP 기본 태그 (스크립트릿, 선언, 표현식) (0) | 2024.07.03 |
| 2024.07.03 JSP 프로그래밍 기본 JSP 주석과 지시자 (미완) (0) | 2024.07.03 |