Spring

[jsp] 내장객체, 액션태그,자바빈

sian han 2022. 5. 13. 23:17

 ※ 내장객체

  - 별다른 선언과정과 객체 생성 없이 사용할 수 있는 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