프로그래밍/JSP Servlet

JSP/Servlet - 자바빈 관련 표준액션 사용 방법

가카리 2016. 1. 17. 22:01
반응형

 

JSP/Servlet - 자바빈 관련 표준액션 사용 방법

 

표준액션에서 자바빈 객체를 만드려면 다음과 같이 합니다.

 

    <jsp:useBean id="obj명" class="패키지명.클래스명"/>

 

자바빈 객체를 만든다음 그 객체의 프로퍼티를 설정할 때는 <jsp:setProperty> 표준액션을 사용합니다.

 

    <jsp:setProperty name="변수이름" property="프로퍼티이름" value="프로퍼티값 />

 

자바빈 객체에 값을 설정하고 값을 가져오려면 <jsp:getProperty> 표준액션을 사용합니다.

 

    <jsp:getProperty name="변수이름" property="프로퍼티값" />

 

 

 

처음에 자바빈 클래스를 만듭니다. WEB-INF 폴더 아래에 classes라는 폴더를 만들고 그 아래에 info라는 폴더를 만듭니다.

 

그다음 클래스를 생성합니다.

 

PersonalInfo.java

 

package info;

 

public class PersonalInfo {

    private String name;//이름

    private char gender;//성별

    private int age;//나이

    

    public void setName(String name){

        this.name = name;

    }

    

    public String getName(){

        return name;

    }

 

    public void setGender(char gender){

        this.gender = gender;

    }

    

    public char getGender(){

        return gender;

    }

    

    public void setAge(int age){

        this.age = age;

    }

    

    public int getAge(){

        return age;

    }

}

 

 

CustomerInfo.jsp

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

    <!-- 일종의 객체 선언 -->

    <jsp:useBean class="info.PersonalInfo" id="myinfo"/>

    

    <!-- 자바빈 프로퍼티에 값을 저장함 -->

    <jsp:setProperty name="myinfo" property="name" value="gakari"/>

    <jsp:setProperty name="myinfo" property="gender" value="man"/>

    <jsp:setProperty name="myinfo" property="age" value="25"/>

    

    <!-- 자바빈 프로퍼티의 값을 가져옴 -->

    이름 : <jsp:getProperty name="myinfo" property="name"/> <BR>

    성별 : <jsp:getProperty name="myinfo" property="gender"/> <BR>

    나이 : <jsp:getProperty name="myinfo" property="age"/> <BR>

    

</body>

</html>

 

 

실행화면

자바빈의 값을 저장하고 가져올 수 있습니다.

 

이번에는 JSP페이지에서 JSP페이지로 자바빈 객체를 전달하는 방법을 알아보겠습니다.

 

다른 페이지를 호출 할 때는 <jsp:forward>액션을 통하는데 이때 호출된 페이지에서는 자바빈 객체를 사용 할 수 없습니다.

 

이때 자바빈 객체가 저장되는 영역을 넓힌다면 호출된 페이지에서도 사용 가능 하게 됩니다.

 

넓히는 방법은 scope라는 애트리뷰트를 사용하면 됩니다.

 

예제를 통해 scope 애트리뷰트를 사용해 봅시다.

 

 

예제는 2개의 jsp로 구성됩니다. 자바빈 객체는 위에서 작성한 PersonalInfo.java클래스를 사용합니다.

 

CustomerInfoSave.jsp

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

<!-- scope 애트리뷰트를 통해서 request 범위로 설정합니다. -->

<jsp:useBean class="info.PersonalInfo" id="minfo" scope="request"/>

 

<!-- 자바빈 객체의 값을 설정해주는 부분 -->

<jsp:setProperty name="minfo" property="name" value="gakari"/>

<jsp:setProperty name="minfo" property="gender" value=""/>

<jsp:setProperty name="minfo" property="age" value="25" />

 

<!-- forward 액션을 통해서 jsp 페이지를 호출합니다. -->

<jsp:forward page="CustomerInfoViewer.jsp"/>

 

 

CustomerInfoViewer.jsp

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

    <!-- 여기서 request영역의 자바빈 객체를 가져오기위해 scope 애트리뷰트를 사용합니다. -->

    <jsp:useBean class="info.PersonalInfo" id="minfo" scope="request"/>

    

    <!-- 자바빈 객체의 값을 가져와서 출력해주는 부분입니다. -->

    이름은? : <jsp:getProperty name="minfo" property="name"/> <BR>

    성별은? : <jsp:getProperty name="minfo" property="gender"/> <BR>

    나이는? : <jsp:getProperty name="minfo" property="age"/> <BR>

</body>

</html>

 

실행 화면

자바빈 객체의 값을 잘 넘겨서 출력하네요.

 

마지막으로 서블릿 클래스가 forward 메소드를 이용해서 jsp 페이지를 호출하면서 자바빈 객체를 넘겨주는 방법을 알아 봅시다.

 

계속 같은 프로젝트에서 진행됩니다.

PersonalInfoServlet.java 파일만 추가해주면 됩니다.

 

PersonalInfoServlet.java

 

package info;

 

import java.io.IOException;

 

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

* Servlet implementation class PersonalInfoServlet

*/

@WebServlet("/PersonalInfoServlet")

public class PersonalInfoServlet extends HttpServlet {

    

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)

            throws ServletException, IOException {

        PersonalInfo obj = new PersonalInfo();

        obj.setName("gakari");

        obj.setGender('');

        obj.setAge(25);

        req.setAttribute("minfo", obj);//자바빈 객체를 request영역에 저장합니다.

        

        //forward 메소드를 위해서 미리 목적지를 정해둡니다.

        RequestDispatcher dispatcher = req.getRequestDispatcher("CustomerInfoViewer.jsp");

        dispatcher.forward(req, resp);

    }

    

}

 

 

실행 화면

자바빈 객체를 jsp에 잘 넘겨줬음을 알 수 있습니다.

 

반응형