티스토리 뷰
내장 객체
- JSP 페이지의 내장 객체(내장 변수)는 JSP가 서블릿으로 변활될 때 컨테이너가 자동으로 생성시키는 멤버 변수를
말한다.
- 즉, 서블릿으로 구현 시 자주 사용했던 객체를 개발자가 일일이 만드는 것이 아니라 서블릿으로 변환 시 컨테이너가
자동으로 생성하여 사용하게끔 제공하는 것이다.
서블릿에 선언된 내장 객체(내장 변수)
JSP에서 제공하는 내장 객체
내장 객체 | 서블릿 타입 | 설명 |
request | HttpServletRequest | 클라이언트의 요청 정보를 저장한다. |
response | ServletResponse | 응답 정보를 저장한다. |
out | javax.servlet.jsp.JspWriter | JSP 페이지에서 결과를 출력한다. |
session | javax.servlet.http.HttpSession | 세션 정보를 저장한다. |
application | javax.servlet.ServletContext | 컨텍스트 정보를 저장한다. |
pageContext | javax.servlet.jsp.PageContext | JSP 페이지에 대한 정보를 저장한다. |
page | java.lang.Object | JSP 페이지의 서블릿 인스턴스를 저장한다. |
config | javax.servlet.ServletConfig | JSP 페이지에 대한 설정 정보를 저장한다. |
exception | java.lang.Exception | 예외 발생 시 예외를 처리한다. |
내장객체의 스코프
- request, session, application은 서블릿의 스코프와 같다.
- page는 요청하는 해당 JSP 페이지에 대해서만 공유할 수 있다.
내장 객체 | 서블릿 | scope |
page | this | 한 번의 요청에 대해 하나의 JSP 페이지를 공유한다. |
request | HttpServletRequest | 한 번의 요청에 대해 같은 요청을 공유하는 JSP 페이지를 공유한다. |
session | HttpSession | 같은 브라우저에서 공유한다. |
application | ServletContext | 같은 애플리케이션에서 공유한다. |
session 내장 객체 데이터 바인딩
- 서블릿에서 getSession() 메서드를 이용해 session 객체를 얻은 후 name을 바인딩한다.
* SessionTest.java
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class SessionTest
*/
@WebServlet("/sess")
public class SessionTest extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
session.setAttribute("name","이순신");
out.print("<html><body>");
out.print("<h1>세션에 이름을 바인딩합니다.");
out.print("<a href='/JSP/sessRequest/session1.jsp'>첫 번째 페이지로 이동하기");
out.print("</body></html>");
}
}
* session1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = (String)session.getAttribute("name");
session.setAttribute("address","서울시");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>session 내장 객체 테스트2</title>
</head>
<body>
이름은 <%=name %>입니다.
<a href="session2.jsp">세 번째 페이지로 이동</a>
</body>
</html>
* session2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = (String) session.getAttribute("name");
String address = (String)session.getAttribute("address");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>session 내장 객체 테스트3</title>
</head>
<body>
이름은 <%=name %>입니다.<br>
주소는 <%=address %>입니다.
</body>
</html>
- 코드 작성 후 브라우저에 localhost:[port]/[project_name]/sess 입력하여 접속하여 세션에 값을 바인딩시킨다.
- "첫 번째 페이지로 이동하기" 링크를 클릭해 보면 서블릿에서 세션 객체에 바인딩한 값이 나타나며,
- "세번 째 페이지로 이동"을 클릭해 보면, session1.jsp에서 세션 객체에 바인딩한 address에 대한 값이 같이 출력된다.
application 내장 객체 데이터 바인딩
- 이번에는 application 내장 객체에 데이터를 바인딩한다.
* appTest1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
session.setAttribute("name","이순신");
application.setAttribute("address", "서울시");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>내장 객체 스코프 테스트1</title>
</head>
<body>
<h1>이름과 주소를 저장합니다.</h1>
<a href="appTest2.jsp">두 번째 웹 페이지로 이동</a>
</body>
</html>
* appTest2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name=(String)session.getAttribute("name");
String address = (String)application.getAttribute("address");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>내장 객체 스코프 테스트2</title>
</head>
<body>
<h1>이름은 <%=name %>입니다.</h1>
<h1>주소는 <%=address %>입니다.</h1>
</body>
</html>
- 코드 작성 후 /appTest1.jsp에 접속해 본다.
- "두 번째 웹 페이지로 이동" 링크를 클릭해 보면 이름과 주소가 출력된다.
- 다른 브라우저에서 /appTest2.jsp 로 바로 접근하면 이름은 null로 출력될 것이다.
- 이름은 세션 객체에 바인딩되는데, 새로운 브라우저로 접근 시 세션에 이름에 대한 값이 바인딩되지 않았기 때문이다.
reqeust 내장 객체 데이터 바인딩
- request 내장 객체에 데이터를 바인딩한다.
* request1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setAttribute("name","이순신");
request.setAttribute("address","서울시");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request 내장객체테스트 1</title>
</head>
<body>
<%
RequestDispatcher dispatcher = request.getRequestDispatcher("request2.jsp");
dispatcher.forward(request, response);
%>
</body>
</html>
* request2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = (String)request.getAttribute("name");
String address= (String)request.getAttribute("address");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request 내장 객체 바인딩 테스트2</title>
</head>
<body>
<h1>이름은 <%=name %></h1>
<h1>주소는 <%=address %></h1>
</body>
</html>
- 코드 작성 후 /request1.jsp 에 접근하면 request 객체에 값을 바인딩하고 /request2.jsp로 포워딩한다.
out 내장 객체
- out 내장 객체를 이용해 데이터를 출력한다.
* out1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>out 내장 객체 테스트 1</title>
</head>
<body>
<form method="post" action="out2.jsp">
이름 : <input type="text" name="name" /><br>
비밀번호 : <input type="text" name="age" /><br>
<input type="submit" value="전송" />
</form>
</body>
</html>
* out2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String age = request.getParameter("age");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>out 내장 객체 테스트 2</title>
</head>
<body>
<%
if(name!=null || name.length() != 0){
%>
<h1><%=name %>, <%=age %></h1>
<%
}else{
%>
<h1>이름을 입력하세요!</h1>
<%
}
if(name!=null || name.length() != 0){
%>
<!-- name과 age의 값을 out 내장 객체로 출력한다. -->
<h1><% out.print(name + ", " + age); %></h1>
<%
}else{
%>
<h1>이름을 입력하세요!</h1>
<%
}
%>
</body>
</html>
- /out1.jsp 페이지에서 이름과 비밀번호를 입력하고 [전송] 버튼을 누른다.
- 값 출력 시 <%= ... =%>와 같이 표현식을 사용해도 되고, <% out.print( ... ) %> 와 같이 스크립틀릿 안에 out 객체를 사용하여 출력할 수도 있다(스클립틀릿은 자바 코드를 작성하는 요소다).
'JSP' 카테고리의 다른 글
[JSP]Welcome 파일 지정 (0) | 2024.08.14 |
---|---|
[JSP]예외 처리 (0) | 2024.08.14 |
[JSP]스크립트 요소 사용 예 (0) | 2024.08.14 |
[JSP]스크립트 요소(선언문, 스크립틀릿, 표현식, 주석문) (0) | 2024.08.13 |
JSP의 구성 요소 (0) | 2024.08.13 |
- Total
- Today
- Yesterday
- 스프링
- 미들웨어
- Servlet
- Session
- Java Server Page
- Redux
- 서브넷팅
- 리액트
- 서블릿
- CSS
- 세션
- httpServletRequest
- script element
- HTML
- Binding
- JSP
- Spring
- 내장객체
- el
- html css
- react
- Network
- FMT
- CSS 속성
- 제이쿼리
- 네트워크
- nodejs
- Spring MVC
- a 태그
- javaserverpage
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |