※ 내장객체
- 별다른 선언과정과 객체 생성 없이 사용할 수 있는 9개의 객체들을 웹 컨테이너가 제공함
- 대표 : request, session, application, pageContext 내장 객체
속성(attribute)값을 저장하고 읽을 수 있는 메서드인 setAttribute(), getAttribute() 메서드를 제공함
setAttribute() : 주어진 key 속성의 값을 value로 지정한다
getAttribute(String key) : 주어진 key 속성의 값을 얻어낸다
request.setAttribute("msg", "성공!");
String msg=(String)request.getAttribute("msg");
session.setAttribute("userid", "hong");
String id = (String)session.getAttribute("userid");
▶ 내장객체의 영역
- 객체의 유효기간
- 객체를 누구와 공유할 것인가를 나타냄
- 웹 어플리케이션은 page, request, session, application 4개의 영 역을 가지고 있음
▷ page 영역
page 영역은 객체를 하나의 페이지 내에서만 공유함
한 번의 웹 브라우저(클라이언트)의 요청에 대해 하나의 jsp 페이지가 호출됨
▷ request 영역
같은 request를 사용하는 페이지에서는 객체를 공유함
★★★ include 액션 태그, forward 액션 태그를 사용하면
request 내장 객체를 공유하게 되어서 같은 request 영역이 됨 ★★★
▷ session 영역
하나의 웹 브라우저당 1개의 session 객체가 생성됨
같은 웹 브라우저 내에서 요청되는 페이지들은 같은 객체를 공유하게 됨
▷ application 영역
하나의 웹 어플리케이션당 1개의 applicatoin 객체가 생성됨
같은 웹 어플리케이션에 요청되는 페이지들은 같은 객체를 공유함
▶ request 내장객체
- 웹 브라우저에서 jsp 페이지로 전달되는 정보의 모임
▷ request 객체의 요청 파라미터 메서드
String getParameter(name) : 이름이 name인 파라미터에 할당된 값을 리턴하며,
지정된 파라미터 값이없 으면 null값을 리턴함
String[] getParameterValues(name) : 이름이 name인 파라미터의 모든 값을
String 배열로 리턴함 Checkbox 에서 주로 사용됨
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head><title>폼 생성</title></head>
<body>
폼에 데이터를 입력한 후 '전송' 버튼을 클릭하세요.
<form action="/test/viewParameter.jsp" method="post">
이름: <input type="text" name="name" size="10"> <br>
주소: <input type="text" name="address" size="30"> <br>
좋아하는 동물:
<input type="checkbox" name="pet" value="dog">강아지
<input type="checkbox" name="pet" value="cat">고양이
<input type="checkbox" name="pet" value="pig">돼지
<br>
<input type="submit" value="전송">
</form>
</body>
</html>
▷ request 기본객체
- 클라이언트 정보 및 서버 정보 읽기
String getRequestURI() : 요청에 사용된 URL 로부터 URI를 리턴
String getRemoteHost() : 클라이언트의 호스트 이름을 리턴
String getRemoteAddr() : 클라이언트의 IP 주소를 리턴
String getContextPath() : 해당 jsp 페이지가 속한 웹 어플리케이션의 컨텍스트 경로를 리턴
▶ response 내장객체
- 웹 브라우저로 응답할 응답 정보를 가지고 있음
- 응답 정보와 관련하여 주로 헤더 정보 입력, 페이지 리다이렉트 등의 기능 제공
▷ response 내장 객체의 메서드
void setContentType(type) : 요청의 결과로 보여질 페이지의 contentType을 설정 한다
void sendRedirect(url) : 지정된 url로 페이지가 이동한다.
▶ out 내장객체
- jsp 페이지가 생성한 결과를 웹 브라우저에 전송해 주는 출력 스트림
▶ pageContext 내장 객체
- 현재 jsp 페이지의 컨텍스트를 나타내며,
주로 다른 내장 객체를 얻어내거나, 페이지의 흐름제어, 에러 데이터를 얻어낼 때 사용됨
▶ session 내장 객체
- ★ session 객체는 웹 브라우저(클라이언트)당 1개가 할당 됨
▶ application 내장 객체
- 웹 어플리케이션이 실행되는 서버의 설정 정보 및 자원 에 대한 정보를 얻어내거나
어플리케이션이 실행되고 있는 동안에 발생할 수 있는 이벤트 로그 정보와 관련된 기능들을 제공함
- ★ application 내장 객체는 웹 어플리케이션당 1개의 객체 가 생성됨
- 하나의 웹 어플리케이션에서 공유하는 변수로 사용됨
▷ application 내장 객체의 메서드
String getRealPath(path) : 지정한 경로를 웹 어플리케이션 시스템 상의 경로로 변 경하여 리턴함
▶ config 내장 객체
- 서블릿이 초기화될 때 참조해야 하는 정보를 가지고 있다가 전달해줌
- ★ config 내장 객체는 컨테이너당 1개의 객체가 생성됨
▷ config 내장 객체의 메서드
ServletContext getServletContext() : 실행하는 서블릿 ServletContext 객체를 리턴
※ 액션태그
스크립트, 주석,디렉티브와 함께 jsp 페이지를 이루고 있는 요소
페이지와 페이지 사이의 제어를 이동시킬 수도 있고 다른 페이지의 실행결과를 현재의 페이지에 포함시킬 수 있으며
다른 페이지의 실행결과를 현재의 페이지에 포함시킬 수 있으며
자바빈도 jsp 페이지에서 사용할 수 있는 기능을 제공함
▶ <jsp:include> : include 액션태그
다른페이지의 실행결과를 현재 페이지에 포함시킬 때 사용됨
<jsp:include page="포함될 페이지" flush="false"/>
<jsp:include page="includeTagTop1.jsp" />
<jsp:include page="<%=content%>" flush="false"/> //flush 속성은 false 로 지정하는것이 일반적
▽ include 액션태그의 처리과정
★★★ <jsp:include>액션 태그는 같은 request 내부 객체를 공유 하므로,
a.jsp와 b.jsp 는 같은 request 내부 객체를 공유함
사용예제 )
<%@ page contentType="text/html;charset=utf-8"%>
<h1>include 액션태그 사용법 예제</h1>
<FORM METHOD=POST ACTION="includeTag1.jsp">
이름 : <INPUT TYPE="text" NAME="name"><p>
<INPUT TYPE="submit" VALUE="보내기">
</FORM>
<%@ page contentType="text/html;charset=utf-8"%>
<h1>includeTag1.jsp 입니다.</h1>
<%
request.setCharacterEncoding("utf-8");
%>
<hr>
<jsp:include page="includeTagTop1.jsp" flush="false"/>
<hr>
includeTag1.jsp의 나머지 내용입니다.
▷ <jsp:include>액션 태그에서 포함되는 페이지에 값 전달하기
- body 안에 <jsp:param> 액션태그를 사용하여 전달
<jsp:include page="포함되는 페이지" flush="false">
<jsp:param name="paramName1" value="var1"/>
<jsp:param name="포함되는 jsp 페이지에 전달할 파라미터의 이름"
value="전달할 파라미터의 값"/>
</jsp:include>
<jsp:include page="b.jsp" flush="false">
<jsp:param name="no" value="<%=var%>" />
</jsp:include>
사용예제 )
<%@ page contentType="text/html;charset=utf-8"%>
<h2>include 액션 태그에서 포함되는 페이지에 값 전달하기</h2>
<FORM METHOD=POST ACTION="includeTag2.jsp">
사이트 명 : <INPUT TYPE="text" NAME="siteName1"><p>
<INPUT TYPE="submit" VALUE="보내기">
</FORM>
<%@ page contentType="text/html;charset=utf-8"%>
<h2>includeTag2.jsp페이지 입니다</h2>
<%
request.setCharacterEncoding("utf-8");
String siteName1 = request.getParameter("siteName1");
%>
<hr>
<jsp:include page="includeTagTop2.jsp">
<jsp:param name="siteName" value="<%=siteName1%>"/>
</jsp:include>
<hr>
includeTag2.jsp페이지의 나머지 내용입니다.<p>
<%@ page contentType="text/html;charset=utf-8"%>
<%
String siteName = request.getParameter("siteName");
%>
포함되는 페이지 includeTagTop2.jsp 입니다.<p>
<b>사이트명 : <%=siteName%></b>
▷ jsp 페이지의 중복 영역 처리: jsp 페이지의 모듈화
▷ <%@ include%> : include 디렉티브
단순하게 소스의 내용이 텍스트로 포함됨
중복되는 부분을 포함시켜 사용함
▶ <jsp:forward> 액션태그
페이지의 제어 흐름을 현재 페이지에서 다른 페이지로 이동시킬 때 사용됨
<jsp:forward page="이동할 페이지명"/>
<jsp:forward page="이동할 페이지명"></jsp:forward>
<jsp:forward page='<%=expression + ".jsp" %>'/>
page 속성 - 이동할 페이지명 기술
요청된 페이지는 a.jsp 이지만 웹 브라우저에 표시되는 내용은 b.jsp 임
예제 )
<%@ page contentType="text/html;charset=utf-8"%>
<h1>Forward 사용법 예제</h1>
<FORM METHOD=POST ACTION="forwardTagFrom1.jsp">
아이디 : <INPUT TYPE="text" NAME="id"><p>
패스워드 : <INPUT TYPE="password" NAME="pwd"><p>
<INPUT TYPE="submit" VALUE="보내기">
</FORM>
<%@ page contentType="text/html;charset=utf-8"%>
<h2>포워딩하는 페이지: forwardTagFrom1.jsp</h2>
<%
request.setCharacterEncoding("utf-8");
%>
<html>
<body>
forwardTagFrom1.jsp의 내용 입니다.<br>
화면에 절대 표시 안됩니다.
<jsp:forward page="forwardTagTo1.jsp"/>
</body>
</html>
<%@ page contentType="text/html;charset=utf-8"%>
<h2>포워딩되는 페이지: forwardTagTo1.jsp</h2>
<%
String id = request.getParameter("id");
String password = request.getParameter("pwd");
%>
<b><%=id%></b>님의<p>
패스워드는 <b><%=password%></b>입니다.
▷ <jsp:forward>액션 태그에서 포워딩되는 페이지에 값 전달하기
<jsp:forward>액션 태그에서 <jsp:param>태그로 프로그램의 제어가 이동할 페이지에 파라미터 값을 전달 할 때 사용
<jsp:forward page="이동할 페이지명">
<jsp:param name="paramName1" value="var1"/>
<jsp:param name="paramName2" value="var2"/>
</jsp:forward>
※ 자바빈
로직을 담고 있는 자바 클래스
▷ 자바빈 작성 순서
1. package 패키지명; //없으면 생략 가능
2. import 패키지명을 포함한 클래스의 풀네임; //없으면 생략 가능
3. class 클래스명{
}
자바빈의 클래스 선언은 접근 제어자로 public을 사용
멤버 변수는 접근 제어자로 private을 사용 : 자바빈에서는 멤버변수를 프로퍼티(property)라고 부름
ㄴ 값을 저장하기 위한 필드
작성예제 )
package study.javaBean;
public class SimpleBean {
//프로퍼티
private String msg ;
//getter
public String getMsg() {
return msg;
}
//setter
public void setMsg(String msg) {
this.msg = msg;
}
}
▶ 자바빈 관련 액션 태그
▷ <jsp:useBean> 액션태그
- 자바빈 객체를 생성
<jsp:useBean id="" class="" scope=""/>
<jsp:useBean id="빈 이름" class="자바빈 클래스 이름" scope="범위" />
id : 생성될 자바빈 객체의 이름을 명시
class : 객체가 생성될 자바빈 클래스명을 기술하는 곳 (패키지명을 포함한 자바 클래스의 풀네임을 기술)
scope : 자바빈 객체의 유효 범위로 자바빈 객체가 공유되는 범위를 지정 (속성값 : page, request, session, application)
id 속성값에 지정한 이름이 이미 존재하는 경우
: 자바빈 객체를 새로 생성하는 것이 아니라 기존에 생성된 객체를 그대로 사용함.
단, id, class, scope 속성값이 모두 동일해야 같은 객체가 됨
▷ <jsp:setProperty>액션태그
- 자바빈 객체의 프로퍼티 값을 저장하기 위해 사용됨
<jsp:setProperty name="" property="" value="" />
<jsp:setProperty name="빈 이름" property="프로퍼티 이름"
value="프로퍼티에 저장할 값 />
name : 자바빈 객체의 이름을 명시하는 곳
property : 프로퍼티명을 기술하는 곳
value : 프로퍼티에 저장할 값을 기술하는 곳
<jsp:getProperty name="빈 이름" property="프로퍼티 이름" />
name : 자바빈 객체의 이름을 명시하는 곳
property : 프로퍼티명을 기술하는 곳
<jsp:getProperty name="" property="" /> : 생성된 자바빈 객체에서 저장된 프 로퍼티 값을 가져옴
'Spring' 카테고리의 다른 글
[jsp] 모델2 기반의 MVC 패턴 게시판의 흐름 (0) | 2022.05.22 |
---|---|
회원가입 (0) | 2022.05.19 |
[jsp] 모델2 기반의 MVC 패턴 (0) | 2022.05.18 |
[jsp] 에러 (0) | 2022.05.17 |
[jsp] 쿠키 / 세션 (0) | 2022.05.16 |