JSP

JSP 공부한것 요약

Real_G 2007. 6. 18. 04:08
 

    1. jsp 설정부분에서는

       문서의 타입

       커스텀 태그

       표현언어의 사용 엽부

       사용할 자바 클래스 지정

      을 한다.


    2. JSP페이지의 구성 요소

      ○ 디렉티브 : JSP페이지에 대한 설정 정보를 지정할때 사용

               사용 예 : <%@ 디렉티브이름 속성1="값1" 속성2="값2" ... %>

               디렉티브의 종류 : page - JSP페이지에 대한 정보를 지정, 문서의타입, 출력버퍼의 크기 에러페이지등

                               taglib - JSP에서 사용할 태그 라이브러리를 지정

                               include - JSP페이지의 특정 영역에 다른 문서를 포함시킨다.

      ○ 스크립트 : 스크립트릿 - 자바코드를 실행한다.

                  표현식 - 값을 출력한다.

                  선언부 - 자바 메소드를 만든다.

      ○ 표현언어 : JSP 페이지 내부에서 사용되는 간단한 스크립트 언어이다. (자바를 모르는 사람들을 위한언어)

      ○ 기본(내장)객체 : request, response, session, application, page, out, pageContext, exception 등

      ○ 정적인 데이터

      ○ 액션태그 : 액션태그는 XML문서의 태그와 같은 모양을 취한다.

               예) <jsp:include page="header jsp" flush="true" />

      ○ 커스텀태그 : JSP를 확장시켜 주는 기능, 사용자가 직적 개발해주어야 한다. 액션태그와 같이 태그 형태로 기능을 제공



     2-1. 디렉트브 중 page 디렉티브  <%@ page

          page 디렉트브는 기본이 되는 정보를표기하기 떄문에 jsp 소스의 가장 첫줄에 입력하는 것이 일반적이다.

          속성 : language : jsp 스크립트 코드에서 사용되는 프로그래밍 언어를 지정한다.  기본값 = java

                contentType : jsp가 생성할 문서의 타입을 지정한다. 기본값 = text/html

                              contentType="text/html; charset=euc-kr" %>

                import : jsp페이지에서 사용할 자바 클래스를 지정한다.

                         import = "java.utile.Calendar" %>

                         import = "java.util.Date" %>

                         import = "java.utile.Calendar, java.utile.Date" %> 한줄에 여러개도 가능

                         import = "java.util.*" %>

                         ※ 클래스는 특별한 기능을 하는 모듈

                         ※ 패키지는 클래스를 모아놓은 단위

                session : jsp 페이지가 세션을 사용할지의 여부를 지정한다. 기본값 = true

                buffer : jsp페이지의 출력버퍼 크기를 지정한다 none일 경우 버퍼를 사용 안한다. 최소값=8kb

                autoFlush : 출력버퍼가 다 찼을 경우 자동으로 버퍼에 있는 데이터를 출력 스트림에 보내고 비울지의 여부를 나타낸다.

                            true일 경우 버퍼 내용을 웹브라우저에 보낸후 버퍼를 비우고, false일때는 에러를 발생시킨다. 기본값 = true

                info : jsp페이지에 대한 설명을 입력한다.

                errorPage : jsp 실행도중 에러발생시 보여줄 페이지를 지정

                isErrorPage : 현재 페이지가 에러가 발생할 때 보여지는 페이지인지의 여부를 지정한다.

                              true 일때 에러페이지, false일때는 에러페이지가 아니다. 기본값 = flase

                pageEncoding : jsp페이지 자체의 캐릭터 인코딩을 지정한다.

                isELIgnored : true일 경우 표현 언어를 지원하며 false일경우 표현언어를 지원하지 않는다.

               

     2-2. 스크립트

          - Scroptlet : JSP페이지에서 자바 코드를 실행할 때 사용되는 코드의 목록

                        <%

                            int sum = 0;

                            for ( int i=0 ; i<=10 ; i++){

       sum = sum+1;

                        %>

          - 표현식 : <%= 값 %>

          - 선언부 : 함수를 작성할 때

                    <%!

                         public 리턴타입 메소드이름(파라미터 목록){

                              자바코드 1;

                              자바코드 2;

                              return 값;

                         }

                     %>

                     실제 jps로 웹 어플리케이션을 작성할 때에는 선언부를 쓰지 않고 클래스를 작성해서 사용한다.


     2-3. 기본(내장)객체

           -@request : 웹 브라우저의 요청과 관련이 있다.

                      * 웹브라우저 관련 정보 읽기 기능

                      * 서버와 관련된 정보 읽기 기능

                      * 클라이언트가 전송한 요청 파라미터,헤더, 쿠키 읽기 기능

                      * 속성 처리 기능

                      String getRemoteAddr() : 클라이언트 IP 구하기

                      long getContentLength() : 클라이언트가 전송한 요청 정보의 길이

                      String getCharacterEncoding() : 클라이언트가 요청 정보 전송시 사용한 캐릭터의 인코딩을 구한다.

                      String getContentType() : 클라이언트가 요청 정보를 전송시 사용한 컨텐츠 타입을 구한다.

                      String getProtocol()

                      String getMethod()

                      String getRequestURI() : 웹브라우저가 요청한 URL에서 경로를 구한다. (/chap02/requestInfo.jsp)

                      String getContextPath() : jsp페이지가 속한 웹 어플리케이션의 콘텍스트 경로를 구한다. (/chap02)

                      String getServerName() : 연결할 때 사용한 서버 이름을 구한다.

                      int getServerPort() : 서버가 실행 중인 포트 번호를 구한다.


                      웹브라우저에 입력한 정보는 파라미터로 전송 된다.

                      String getParameter(String name) : 이름이 name인 파라미터 값을 구한다.

                      String[] getParameterValues(String name) : 이름이 name인 모든 파라미터의 값을 배열로 구한다.

                      java.utile.Enumeration getParameterNames() : 웹브라우저가 전송한 파라미터의 이름을 구한다.

                      java.util.Map getParameterMap() : 웹브라우저가 전송한 파라미터의 맵을 구한다. 

                                                                                         

    <%@ page contentType="text/html; charset=euc-kr" %>

    <%@ page import="java.util.Enumeration" %>

    <%@ page import="java.util.Map" %>

    <%

        request.setCharacterEncoding("euc-kr");

    %>

    <html>

    <head><title>요청 파라미터 출력</title></head>

    <body>

    <b>request.getParameter() 메소드 사용</b><br>

    name 파라미터 = <%= request.getParameter("name") %> <br>

    address 파라미터 = <%= request.getParameter("address") %>

    <p>

    <b>request.getParameterValues() 메소드 사용</b><br>

    <%

        String[] values = request.getParameterValues("pet");

        if (values != null) {

                for (int i = 0 ; i < values.length ; i++) {

    %>

        <%= values[i] %>

    <%

                      }

              }

    %>

    <p>

    <b>request.getParameterNames() 메소드 사용</b><br>

    <%

        Enumeration enum = request.getParameterNames();

        while(enum.hasMoreElements()) {

            String name = (String)enum.nextElement();

    %>

            <%= name %>

    <%

        }

    %>

    <p>

    <b>request.getParameterMap() 메소드 사용</b><br>

    <%

        Map parameterMap = request.getParameterMap();

        String[] nameParam = (String[])parameterMap.get("name");

        if (nameParam != null) {

    %>

    name = <%= nameParam[0] %>

    <%

    }

    %>

    </body>

    </html>

      <!-- 체크박스나 라디오 버튼은 선책하지 않으면 파라미터 자체가 전송되지 않지만, 텍스트입력과 같은 일반적인 입력 요소들은 값을 입력하지 않더라도 빈 문자열("")이 파라미터의 값으로 전달 된다. -->


                      요청 헤더 정보의 처리

                      String getHeader(String name) : 지정한 이름의 헤더 값을 구한다.

                      java.utile.Enumeration gerHeaders(String name) : 지정한 이름의 헤더 목록을 구한다.

                      java.utile.Enumeration getHeaderName() : 모든 헤더의 이름을 구한다.

                      int getIntHeader(String name) : 지정한 헤더의 값을 정수값으로 읽어온다.

                      long getDateHeader(String name) : 지정한 헤더의 값을 시간 값으로 읽어온다.( 1970.1.1 이후로 흘러간 1/1000초 단위의 값)


           -@response : 웹 브라우저의 요청과 관련이 있다.

                      void addDateheader(String name, long date)  : name헤더에 date를 추가한다.

                      void addHeader(String name, String value) : name 헤더에 value 값을 추가한다.

                      void addIntHeader(String name, int value) : name 헤더에 정수값 value 값을 추가한다.

                      void setDateHeader(String name,long date) : name헤더의 값을 date로 지정한다.

                      void setHeader(String name, String value) :

                      void setIntHeader(String name,int value) :

                      boolean constinsHeader(String name) : 이름이 name 인헤더를 포함하고 있을 경우 true를 리턴

                  

                     response 객체에거 가장 많이 사용되는 기능은 redirect 기능이다.

                     response.sendRedirect("/index.jsp");

                     response.sendRedirect("http://hybridego.net/");  <-- 외부 연결이 가능하다.


    <%@ page import = "java.net.URLEncoder" %>

    <%

        String value = "자바";

        String encodedValue = URLEncoder.encode(value);

        response.sendRedirect("/index.jsp?name=" + encodedValue);

    %>


    ★Enumeration 쓰는 방법

    Enumeration enum = request.getHeaderNames();

    While ( enum.hasMoreElements() ) {

    String headerName = (String)enum.nextElement();

    …………..

    }


    ★랜덤함수 쓰는 방법

    <%@ page contentType="text/html; charset=euc-kr" %>

    <%@ page import = "java.util.Random" %>

    <html>

    <head><title>break 사용 예</title></head>

    <body>

    <%

        Random random = new Random();

        for (int i = 1 ; i <= 20 ; i++) {

            int number = random.nextInt(10) + 1;

    %>

    <%= i %> 번째 = <%= number %> <br>

    <%

            if (number == 7) break;

        }

    %>

    </body>

    </html>


    <%@ page buffer = "none" autoFlush="false" %>


           -@out 객체의 메쏘드들

                      int getBufferSize() : 버퍼의 크기를 구한다.

                      int getRemaining() : 현재 버퍼의 남은 크기를 구한다.

                      void clear() : 버퍼의 내용을 비운다. 만약 이미 버퍼가 플러시 된 경우 IOException을 발생시킨다.

                      void clearBuffer() : 버퍼의 내용을 비우는데 버퍼 플러시 된 경우에도 IOException 발행 안시킨다.

                      void flush() : 버퍼 플러쉬 한다.

                      boolean isAutoFlush() : 버퍼가 다 찼을때 자동으로 플러시할 경우 true를 리턴한다.


           -@pageContext 의 메소드들  : 하나의 JSP 페이지와 1:1로 매핑되는 객체

                      ServletRequest getRequest()  : request 기본 객체를 구한다.

                      ServletResponse getResponse() : response 기본객체를 구한다.

                      HttpSession getSession() : session 기본 객체를 구한다.

                      ServletContext getServletConfig() : config기본객체를 구한다.

                      JspWriter getOut() : out기본객체를 구한다.

                      Exception getException() : exception 기본객체를 구한다.

                      Object getPage() : page 기본 객체를 구한다.


           -@application : 특정 어플리케이션과 관련된 기본 객체

                      String getinitParameter(String name) : 이름이 name인 웹 어플리케이션 초기화 파라메터의 값을 읽어온다. 없으면 null.

                      Enumeration getInitParameternames() : 웹 어플리케이션 초기화 파라미터의 이름 목록을 리턴한다.

                      String getServerinfo() : 서버정보를 구한다.

                      String getMajorVersion() : 서버가 지원하는 서블릿 규약의 메니저 버전을 리턴한다.

                      String getMinorVersion() : 서버가 지원하는 서블릿 규약의 마이너 버전을 리턴한다., 버전의 소수 부분을 리턴한다.

                      void log(String msg) : 로그메세지 msg를 기록한다.

                      void log(String msg, Throwable throwable) : 로그 메시지 msg를 기록한다. 예외정보도 함께 로그 파일에 기록한다.

                      String getRealPath(String path) : 웹 어플리케이션 내에서 지정한 경로에 해당하는 자원의 시스템 상에서의 자원 경로를 턴한다.

                      java.net.URL getResource(String path) : 웹어플리케이션 내에서 지정한 경로에 해당하는 자원에 접근할 수 있는 URL 객체를 리턴한다.

                      java.io.InputStream getResourceAsStream(String path) : 웹어플리케이션 내에서 지정한 경로에 해당하는 자원으로부터 데이터를 읽어올 수 있는 InputStream을 리턴한다.



     3. Scope

          PAGE 영역 - pageContext 기본객체

          REQUEST 영역 - request 기본객체

          SESSION 영역 - session 기본객체

          APPLICATION 영역 - application 기본객체


         위의 네가지 기본 객체는 다음의 메소드를 제공한다.

             void setAttrivute(String name, Object value) : 이름이 name인 속성값을 value로 지정한다.

             Object getAttribute(String name) : 이름이 name 인 속성의 값을 구한다. 지정한 이름의 속성이 존재하지 않을 경우 null을 리턴

             void removeAttribute(String name) : 이름이 name인 속성을 삭제한다.

             java.util.Enumeration getAttributeNames() : 속성의 이름 목록을 구한다.(pageContext 기본 객체는 이 메소드를 제공하지 않는다.)


            지정할때 는 아래와 같이 하고

            session.setAttribute("session_start", new java.util.Date());

            session.setAttribute("memberid","madvirus");

            application.setAttribute("application_temp",new File("c://temp"));


           읽어올때는 다음과 같이 한다.

           Date date=(Date)session.getAttribute("session_start");

           String memberID = (String)session.getAttribute("memberid");

           File tepDir = (File)application.getAttribute("application_temp");


          기본타입을 쓰고 싶을 때는 wrapper 클래스를 사용해야 한다.

           Integer intValue = new Integer(100);

           request.setAttribute("ratio", intValue);


           Integer intValue = (Integer)request.getAttribute("ratio");

           int value = intValue.intValue();



     4. 에러처리

         page디렉티브의 errorPage 속성을 사용하여 에러를 처리한다.

         <%@ page errorPage = "/error/viewErrorMessage.jsp" %> 이렇게 지정하고 여기에서 지정한 viewErrorMessage.jsp 페이지에서는 다음과 같이 세팅한다.

          <%@ page isErrorPage="true" %> 이 페이지는 에러 페이지라는 것을 앞에 표시한다.

          이렇게 하면 exception 기본 객체를 사용할 수 있게 된다.


          JSP에서는 WEB-INF/web.xml 파일에서 각각의 에러 상태 코드별로 보여줄 페이지를 지정할 수 있도록 하고 있다.

          <web-app>

          <error-page>

               <error-code>에러 코드</error-code>

               <location>에러페이지의 URI</location>

          </error-page>

          </web-app>


           <error-page>

               <exception-type>java.lang.NullPointerException(/exception-type> 으로 하면 예외 종류별 에러페이지를 작성할 수 있다.

               <location>에러페이지의 URI</location>

          </error-page>


              -- 에러페이지의 우선숭의 및 에러페이지 지정 형태

                    1. page 디렉티브의 errorPage 속성

                    2. JSP 페이지에서 발생한 예외타입이 web.xml의 <exception-type> 에서 지정한

                    3. <error-code>

                    4. 아무것도 해당 안되면 톰캣 기본 에러


     5. 페이지 이동

           <jsp:forward page="이동할 페이지" /> 액션 태그를 이용한 이동


            추가로 정보를 전달하고 싶을때

            <jsp:forward page="moveTo.jsp">

                <jsp:param name="first" value="BK" />

                <jsp:param name="last" value="Choi" />

            </jsp:forward>


            파라미터를 이용한 정보 전달

            request.setAttribute(String name, Object value) 로 넘긴다.


             리다이렉트를 이용한 페이지 이동

            <%

                  String paramString = "code=A000&type=C";

                  response.sendRedirect("/to/move.jsp?"+paramString);

            %>


            자바스크립트를 이용한 페이지 이동


     6. jsp페이지 모듈화

            <jsp:include> 액션태그를 이용한 페이지 모듈화

            <jsp:include page=sub.jsp" flush="true" />  여기에서 flush를 true로 설정하면 sub.jsp에서 response.setheader()처럼 헤더를 지정하거나 추가해 주는 메소드를 실행해도 헤더가 반영되지 않는다.


             포함할 페이지에 값을 전달하기

            <jsp:include page="moveTo.jsp" flush="false">

                <jsp:param name="first" value="BK" />

                <jsp:param name="last" value="Choi" />

            </jsp:forward>


           *include 디렉티브를 이용한 중복된 코드 삽입

          <%@ include file="포함할 파일" %>


           ※<jsp:include> 액션태그는 jsp 파일을 컴파일한 결과 값을 가져온다.

             하지만 <%@ include > 디렉티브는 그상태 그대로 코드를 가져와서 한꺼번에 컴파일 한다.


           ※ include 디렉티브를 사용해서 포함하는 파일의 경우 일반 파일과 구분짓기 위해서 확장자를 jspf로 사용한다.

              여기서 jspf는 JSP Fragment 즉, jsp의 소스코드 조각을 의미한다.

    <?xml version="1.0" encoding="euc-kr"?>


    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

                            http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

        version="2.4">

      <display-name>8장 예제</display-name>

      <description>

         8장의 예제 소스 코드 및 실행 코드

      </description>

     

      <jsp-config>

        <jsp-property-group>

          <url-pattern>/view/*</url-pattern>

          <include-prelude>/common/variable.jspf</include-prelude>

          <include-coda>/common/footer.jspf</include-coda>

        </jsp-property-group>

      </jsp-config>

     

    </web-app>


    비교

    <jsp:inlcude>

    include 디렉티브

    처리시간

    요청시간에 처리

    jsp파일을 자바 소스로 변환 할 때 처리

    데이터 전달 방법

    request 기본 객체나 <jsp:param>을 이용한 파라미터 전달

    페이지 내의 변수를 선언한 후, 변수에 값 저장

    용도

    화면의 레이아웃의 일부분을 모듈화 할 떄 주로 사용

    다수의 JSP 페이지에서 공통으로 사용되는 변수를 지정하는 코드나 저작권과 같이 공통의 문장을 포함한다.

    기능

    병도의 파일로 요청처리 흐름을 이용

    현재파일에 삽입시킴

             

     7. 쿠키와 세션

          7-1. 쿠키 사용

                  ○절차 : 쿠키 생성 - 쿠키 저장 - 쿠키 전송

                  ○쿠키의 구성 요소 : 이름(쿠키 구별하는데 씀),   --<알파벳과 숫자만 쓸수 있다.>

                                              값(쿠키 이름과 관련된 값),

                                              유효시간(쿠키 유지 시간),

                                              도메인(쿠키를 전송할 도메인),

                                              경로(쿠키를 전송할 요청 경로)


                  ○생성하기

                    <%

                           Cookie cookie = new Cookie("cookieName", "cookieValue");

                           response.addCookie(cookie);

                    %>

                   ○쿠키 메소드들

                       String getName() : 쿠키의 이름을 구한다.

                       String getValue() : 쿠키의 값을 구한다.

                       void setValue(String vlaue) 쿠키의 값을 지정

                       void setDomain(String pattern) : 이 쿠키가 전송될 서버의 도메인을 지정한다.

                       String getDomain() : 쿠키의 도메인을 구한다.

                       void setPath(String uri) :쿠키를 전송할 경로를 지정한다.

                       String getPath() : 쿠키의 전송 경로를 구한다.

                       void setMaxAge(int expiry) : 쿠키의 유효 시간을 초 단위로 지정한다. 음수를 입력하면 웹브라우저 닫을 때 쿠키도 같이 삭제 된다.

                       int getMaxAge() : 쿠키의 유효 시간을 구한다.                  


                   ○쿠키 값 읽어오기

                     Cookie[] cookies = requeset.getCookies();


                   ○쿠키 값 변경 및 삭제

    <%@ page contentType = "text/html; charset=euc-kr" %>

    <%@ page import = "java.net.URLEncoder" %>

    <%

        Cookie[] cookies = request.getCookies();

        if (cookies != null && cookies.length > 0) {

            for (int i = 0 ; i < cookies.length ; i++) {

                if (cookies[i].getName().equals("name")) {

                    Cookie cookie = new Cookie("name",

                             URLEncoder.encode("JSP프로그래밍"));

                    response.addCookie(cookie);

                    //cookies[i].setValue(URLEncoder.encode("자바와 JSP"));

                    //response.addCookie(cookies[i]);

                }

            }

        }

    %>

    <html>

    <head><title>값 변경</title></head>

    <body>

    name 쿠키의 값을 변경합니다.

    </body>

    </html>


    ---------------------------------------------------------------------------------------------------------------

    삭제는 다음과 같이 한다.

    <%@ page contentType = "text/html; charset=euc-kr" %>

    <%@ page import = "java.net.URLEncoder" %>

    <%

        Cookie[] cookies = request.getCookies();

        if (cookies != null && cookies.length > 0) {

            for (int i = 0 ; i < cookies.length ; i++) {

                if (cookies[i].getName().equals("name")) {

                    Cookie cookie = new Cookie("name", "");

                    cookie.setMaxAge(0);

                    response.addCookie(cookie);

                }

            }

        }

    %>

    <html>

    <head><title>쿠키 삭제</title></head>

    <body>

    name 쿠키를 삭제합니다.

    </body>

    </html>



                   ○쿠키 도메인

                      .hybridego.net - 점으로 시작하는 경우 관련 도메인 모두 쿠키를 전송

                                            mail.hybridego.net www.hybridego.net, asdf.hybridego.net 등으로 모두 전송 된다.

                      www.hybridego.net - 특정 도메인에 대해서만 쿠키를 전송한다.


          7-2. 세션 사용

                      세션은 기본적으로 하나의 웹 브라우저에 하나의 세션을 생성한다.

                   ○세션 생성하기

                      <%@ page contentType = … %>

                      <%@ page session = "true" %>  

                      페이지 디렉티브의 session속성의 기본값이 true 이기 때문에 별도로 지정하지 않아도 세션이 기본적으로 생성 된다.

                     

                   ○세션 메소드

                      String getId() : 세션의 고유 ID를 구한다.

                      long getCreationTime() : 세션이 생성된 시간을 구한다. (1970-1-1일 이후 흘러간 시간, 단위는 1/1000초

                      long getLastAccessedTime() : 웹 브라우저가 가장 마지막에 세션에 접근한 시간

                  

    <%@ page contentType = "text/html; charset=euc-kr" %>

    <%@ page session = "true" %>

    <%@ page import = "java.util.Date" %>

    <%@ page import = "java.text.SimpleDateFormat" %>

    <%

        Date time = new Date();

        SimpleDateFormat formatter =

           new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    %>

    <html>

    <head><title>세션정보</title></head>

    <body>

    세션ID: <%= session.getId() %> <br>

    <%

        time.setTime(session.getCreationTime());

    %>

    세션생성시간: <%= formatter.format(time) %> <br>

    <%

        time.setTime(session.getLastAccessedTime());

    %>

    최근접근시간: <%= formatter.format(time) %>


    </body>

    </html>

              ※ 쿠키대신 세션을 사용하는 이유

                    쿠키는 네트워크를 통한 전송 도중 다른사람이 볼 수도 있지만 세션은 서버에만 있기 때문에 안전하고

                    웹 브라우저에서 쿠키사용을 막으면 쿠키를 생성할 수 없지만 세션은 상관이 없다.


                   ○세션 종료

                        session.invalidate();

                        session.removeAttribute("이름"); 이렇게 세션을 삭제해도 로그 아웃한 효과를 볼수 있다.


                   ○세션 타임아웃 설정

                            - web.xml에

                                 <session-config>

                                       <session-timeout>50</session-timeout>  분단위

                                 </session-config>

                              이렇게 설정


                            - session 기본객체가 제공하는 setMaxInactiveInterval() 메소드 사용

                                 <%

                                       session.setMaxInactiveInterval(60*60); 초단위

                                 %>


     8. jsp에서 자바빈 활용하기

          JavaBean은 데이티를 표현하는 것을 목적으로 하는 자바 클래스이다.

              public class BeanClassname implements java.io.Serializalble {

                      /*값을 저장하는 필드 */

                      private String value;

              

                      /*BeanClassName 의 기본 생성자 */

                      public BeanClassName(){

                      }

                      /*필드의 값을 읽어 오는 값 */

                      public String getValue() {

                         return value;

                      }

                      public void setValue(String value){

                         this.value - value;

                      }

              }


            자바빈 규약에 따르는 클래스를 자바빈이라고 부른다.

            자바빈 클래스는 데이터저장 필드, 데이터를 읽어오는 메소드, 데이터를 저장하는 메소드로 구성된다.


           <jsp:useBean id="info" class="hybridego.member.MemberInfo" scope="request" />


            위의 액션태그는 다음과 같은기능을 한다.


            memberinfo info = (Memberinfo)request.getAttribute("info");

            if (info==null){

                  info = new MemberInfo();

                  request.setAttribute("info", info);

            }


           <jsp:useBean id="info" type="hybridego.member.MemberInfo" scope="request" /> 이렇게 쓰면 지정한 영역에 이미 객체가 존재한다고 가정한다. 객체가 존재하지 않을 경우 에러를 발생시킨다.


           <jsp:getProperty name = "info" property="name" />
         

           <jsp:setProperty name = "info" property="name" value="전호철" />


           value 속성 대신 param 속성을 활용할 수도 있다.

           param속성은 값을 프로퍼티의 값으로 지정할 때 사용된다.

           <jsp:setProperty name="info" property="name" param="name" /> 이렇게 하면 name 파라메터값을 지정한다.


           <jsp:setProperty name="info" property="*" /> 이렇게 하면 각각의 파라메터값이 각각의 프로퍼티에 들어간다.



반응형