[필기정리]Day78 - ActionTag, JavaBeans, DAO, DTO, VO 등

Web/JSP

2020. 10. 20. 01:06

# ActionTag(액션 태그) : 서버나 클라이언트에게 어떤 행동을 하도록 명령하는 태그

                                 스크립트태그, 주석, 디렉티브 태그와 함께 JSP 구성하는 태그

- 액션태그의 형태

<% ... %>

<jsp: ... /> // 끝나는 태그로 명확히 표시하는 것

 

- 액션태그의 기능

① JSP 페이지와 페이지 사이를 제어

② 다른 페이지의 실행결과 내용을 현재 페이지에 포함

③ 자바빈즈(JavaBeans) 등 다양한 기능 제공

 

- 표준 액션 태그 (대표적)

① <jsp:include>

    RequestDispatcher 객체의 include() 기능을 실행하며 다른 페이지를 현재 페이지에 포함하고자 할 때 사용

// 액션 태그를 사용한 페이지 경로 설정

<jsp:include page="경로" />
<jsp:include page="<%= %>" />

// include 지시자를 통한 파일 경로 설정

<%@ include file="coderbear.jsp"%>

<jsp:forward>

    RequestDispatcher 객체의 forward() 기능을 실행하며 다른 페이지로 이동할 때 사용

<jsp:forward page="경로" />
<jsp:forward page="<%= %>" />

// Tip : forward vs sendRedirect 차이점

- forward : request, response의 재사용 가능 및 다른 페이지의 정보는 전달하나 주소창 주소는 변경되지 않음

- sendRedirect : request, response의 재사용 불가 및 주소창 주소 자체가 변경됨

 

<jsp:useBean>

    새로운 객체를 생성하는 표준 액션 태그

 // class 속성 : 새로 생성할 클래스명

 //  id 속성 : 생성된 객체를 참조하는 변수명

<jsp:useBean class="Hello" id="coderbear">

   

# JSP 모듈화

  기능별로 프로그램을 쪼개는 것

 

[서블릿/JSP] 액션 태그 동작 방식 및 JSP 모듈화 개념

이전글 [서블릿/JSP] JSP out 기본 객체 [서블릿/JSP] JSP 출력 버퍼란 웹사이트의 페이지 분할 구성 웹사이트에서(예를 들면 게시판) 한 페이지의 구성을 살펴보면 다음과 같이 사이드 메뉴, 상단 메��

dololak.tistory.com

∴ <jsp:include>액션태그로 중복된 코드를 한 번만 작성하여 효율적이게 프로그래밍 할 수 있다

 

- JSP 모듈화 방식

 

[서블릿/JSP] include 디렉티브로 다른 JSP 페이지 포함시키기

include 디렉티브로 다른 JSP 페이지 포함시키기 include 디렉티브를 이용하면 include 디렉티브를 사용한 위치에 다른 JSP의 스크립트 내용을 포함시킬 수 있습니다. 이를 이용하면 여러 JSP 페이지에 ��

dololak.tistory.com

★ JSP @include 지시어와 <jsp:include> 액션 태그의 차이점

비교항목 @include  <jsp:include>
정의 원래 페이지 안으로
include 지시어로 지정한 페이지 소스가
그대로 복사되는 것
소스 복사가 아니라
제어권 자체가 include 액션으로
지정된 페이지로 넘어갔다가
다시 원래 페이지로 돌아옴
기능 현재 파일에 삽입시킴 별도 파일로 요청 처리 흐름 자체를 이동시킴
처리시간 JSP 파일을 자바소스로 변환 시 처리함 요청 시간에 처리함
데이터 전달방법 페이지 내 변수 선언 후,
변수에 값을 저장하여 전달
request 기본객체나
<jsp:param>을 이용한 파라미터로 전달
용도 다수의 JSP 페이지에서 공통 사용되는
변수 지정 코드나 저작권 같은 문장 포함
화면 레이아웃의 모듈화 시 주로 사용

 

// Tip - <jsp:param> : 액션태그의 자식 태그

   부모 페이지에서 submit 시 다른 페이지에서 request.getParameter()로 받게 됨

   hidden태그처럼 사용 가능하나 <jsp:include>을 통해 포함되는 페이지에서만 유효

 

[서블릿/JSP] 액션 태그 태그로 데이터 전달하기

이전글 [서블릿/JSP] 액션 태그 설명 및 사용 방법 forward 액션태그 사용시 태그로 데이터 전달하기 이전글에서 보았던 forward 액션태그를 사용하여 다른 JSP 페이지로 제어

dololak.tistory.com

+ 추가내용

 

[서블릿/JSP] 액션태그와 사용자 요청 파라미터 겹칠 때 처리 우선순위

이전글 [서블릿/JSP] 액션 태그 사용법. 으로 데이터 넘기기. 데이터 공유하기 액션태그와 사용자 요청 파라미터가 겹치는 경우 만약 greeting이라는 파라미터 속성에 대해

dololak.tistory.com

∴ 사용자 요청 파라미터와 중복 시 <jsp:param> 태그가 우선 적용된다.

 

//Tip : flush 속성

  포함될 페이지로 제어 이동 시 현재 포함하는 페이지가 지금까지 출력 버퍼에 저장한 결과 처리 방식을 결정하는 것 

① true : 포함될 페이지로 제어 이동 시

            현재 페이지가 지금까지 버퍼에 저장한 내용을 웹 브라우저에 출력하고 버퍼를 비운다.

② false : 일반적으로 false를 지정하는 것이 좋다.

            'true'로 지정하면 일단 출력 버퍼를 웹브라우저에 전송하게 되는데 이 때 헤더 정보도 같이 전송되는데                      헤더 정보가 일단 웹 브라우저에 전송이 되고 나면 헤더 정보를 추가해도 결과가 반영되지 않기 때문이다. 

 

ex) 

- main.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>

	<h1>main.jsp</h1>
	
	<jsp:forward page="sub.jsp" />

</body>
</html>

- sub.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>

	<h5>sub.jsp</h5>

</body>
</html>

- forward.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>
	<h1>forward.jsp</h1>
	<jsp:forward page="forward_param.jsp">
		<jsp:param name="id" value="abcdef" />
		<jsp:param name="pw" value="1234" />
	</jsp:forward>

</body>
</html>

- forward_param.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>
	<%!
		String id, pw;
	%>

	<%
		id = request.getParameter("id");
		pw = request.getParameter("pw");
	%>
	
	<h1>forward_param.jsp</h1>
	¾ÆÀ̵ð : <%= id %><br />
	ºñ¹Ð¹øÈ£ : <%= pw %>

</body>
</html>

- include01.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>

	<h1> include01.jsp 페이지 입니다. </h1>
	<jsp:include page="include02.jsp" flush="false" />
	<h1> 다시 include01.jsp 페이지 입니다. </h1>

</body>
</html>

- include02.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>

	<h1>include02.jsp</h1>

</body>
</html>

- include03.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
</head>
<body>
	<jsp:include page="include_param.jsp">
		<jsp:param name="id" value="abcdef" />
		<jsp:param name="pw" value="1234" />
	</jsp:include>
</body>
</html>

 - include_param.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>include_param</title>
</head>
<body>
	<%!
		String id, pw;
	%>

	<%
		id = request.getParameter("id");
		pw = request.getParameter("pw");
	%>
	
	<h1>include_param.jsp 입니다.</h1>
	아이디 : <%= id %><br />
	비밀번호 : <%= pw %>
</body>
</html>

 

# JavaBeans : 자바 코드로 작성된 컴포넌트들

                  JSP 페이지에서 로직을 제거하기 위한 방법으로 제공하는 기술

 

- MemberBean.java

package com.dto;
import java.io.Serializable;

public class MemberBean implements Serializable {
	private int id;
	private String name;
	public MemberBean() {
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

 

//Tip : useBean 속성
① id : 자바빈즈 식별 위한 이름
② class : 패키지 이름 포함한 자바빈즈 이름

             자바빈즈는 인수가 없는 기존 생성자가 있어야 하며 추상 클래스를 사용할 수 없다.
③ scope : 자바빈즈가 저장되는 영역 설정

              page(기본값), request, session, application 중 하나의 값을 사용

ex)

- useBean01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id = "date" class="java.util.Date" /> // 클래스명 : Date, id : date
	<p>
		<%
			out.print("오늘의 날짜 및 시각");
		%>
	</p>
	<p><%=date %></p>
</body>
</html>

- Calulator.java

package ch04.com.dao;

public class Calculator {
	public int process(int n) {
		return n * n * n;
	}
}

- useBean02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id = "bean" class="ch04.com.dao.Calculator" />
	<%
		int m = bean.process(5);
		out.print("5의 3제곱 : " + m);
	%>
</body>
</html>

- Person.java

package ch04.com.dao;

public class Person {
	private int id = 20181004;
	private String name = "coderbear";
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

- useBean03.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id="person" class="ch04.com.dao.Person" scope="request" />
	<p> 아이디 : <%=person.getId() %>
	<p> 이 름 : <%= person.getName() %>
</body>
</html>

- useBean04.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id="person" class="ch04.com.dao.Person" scope="request" />
	<p>아이디 : <%=person.getId() %></p>
	<p>이 름 : <%=person.getName() %></p>
	
	<%
		person.setId(20182005);
		person.setName("홍길동");
	%>
	<jsp:include page="useBean03.jsp" />
</body>
</html>

//Tip : setProperty 속성 (자바의 setter와 동일하나 표현 방식이 다른 것!)
① name : useBean 태그에 id 속성 값으로 설정된 자바빈즈 식별 위한 이름 
② property : 자바빈즈의 프로퍼티 이름이다.

                 프로퍼티 이름에 "*"를 사용 시 모든 요청 파라미터가 자바빈즈 프로퍼티의 setter()에 전달됨을 의미 
③ value : 변경할 자바빈즈의 프로퍼티 값이다.

             만약 프로퍼티 값이 null 혹은 존재하지 않는 요청 파라미터인 경우 setProperty 액션태그가 무시됨 
④ param : 자바빈즈의 프로퍼티 값을 전달하는 요청 파라미터의 이름

               param과 value를 동시에 모두 사용할 수 없으며 하나를 선택하여 사용하는 것 가능 

 

// Tip : Property = 멤버변수

 

ex)

- setProterty.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id="person" class="ch04.com.dao.Person" scope="request" />
	<jsp:setProperty property="id" name="person" value="20182005"/>
	<jsp:setProperty property="name" name="person" value="홍길동"/>
	<p> 아이디 : <% out.println(person.getId()); %>
	<p> 아이디 : <% out.println(person.getName()); %>
</body>
</html>

 

//Tip : getProperty 속성 (자바의 getter와 동일하나 표현 방식이 다른 것!, value 없음)
① name : useBean 태그에 id 속성 값으로 설정된 자바빈즈를 식별하기 위한 이름
② property : 자바빈즈의 프로퍼티 이름

                  프로퍼티 이름에 "*"를 사용 시 모든 요청 파라미터가 자바빈즈 프로퍼티의 getter()에 전달됨을 의미 

ex)

- getProperty01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id="person" class="ch04.com.dao.Person" scope="request"/>
	<p> 아이디 : <jsp:getProperty property="id" name="person"/>
	<p> 이 름 : <jsp:getProperty property="name" name="person"/>
</body>
</html>

- getProperty02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
</head>
<body>
	<jsp:useBean id="person" class="ch04.com.dao.Person" />
	<jsp:setProperty name="person" property="id" value="20182005"/>
	<jsp:setProperty name="person" property="name" value="홍길동" />
	<p> 아이디 : <jsp:getProperty property="id" name="person"/>
	<p> 이 름 : <jsp:getProperty property="name" name="person"/>	
</body>
</html>

 

ex) 자바빈즈 예시

- studentInfo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="student" class="com.tistory.coderbear.Student" scope="page"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Insert title here</title>
</head>
<body>
<h2>학생정보</h2>
<jsp:setProperty name="student" property="name" value="홍길동"/>
<jsp:setProperty name="student" property="age" value="10"/>
<jsp:setProperty name="student" property="grade" value="3"/>
<jsp:setProperty name="student" property="studentNum" value="28"/>

이름 : <jsp:getProperty name="student" property="name" /><br>
나이 : <jsp:getProperty name="student" property="age" /><br>
학년 : <jsp:getProperty name="student" property="grade" /><br>
학번 : <jsp:getProperty name="student" property="studentNum" /><br>
</body>
</html>

- Student.java

package com.tistory.coderbear;

public class Student {
	private String name;
	private int age;
	private int grade;
	private int studentNum;
	
	public Student() {
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getGrade() {
		return grade;
	}

	public void setGrade(int grade) {
		this.grade = grade;
	}

	public int getStudentNum() {
		return studentNum;
	}

	public void setStudentNum(int studentNum) {
		this.studentNum = studentNum;
	}
}

 

# DAO, DTO, VO

- DAO(Data Access Object) : 데이터베이스의 data에 접근하기 위한 객체

- DTO(Data Transfer Object) : 데이터베이스의 데이터를 자바로 이동시키는 객체

                                       멤버변수는 private로 setter(), getter()가 필수적으로 필요함

- VO(Value Object) : 값을 저장하고 있는 객체

  자바는 값 타입을 표현하기 위해 불변 클래스를 만들어서 사용하는데, 불변은 readOnly특징을 가짐

  이러한 클래스는 중간에 값을 바꿀 수 없고 새로 만들어야 한다는 특징이 있음

  예를 들어 Color클래스를 보면 Red를 표현하기 위해 Color.RED 등을 사용하며 getter기능만이 존재함

  DTO와 혼용해서 사용되나 차이가 있음

 

// DTO vs VO

- 공통점 : 넣어진 데이터를 getter를 통해 사용함

- 차이점

① DTO : 가변의 성격을 가진 클래스(setter 활용)

② VO : 불변의 성격을 가진 클래스(readonly) 

 

ex)

- list.jsp

<%@page import="java.util.ArrayList"%>
<%@page import="com.tistory.coderbear.*"%>
<%@ page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="HTML Study">
<meta name="keywords" content="HTML,CSS,XML,JavaScript">
<meta name="author" content="coderbear">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>게시판 목록</title>
</head>
<body>
<h3>목록</h3>
<%
	BoardDAO dao = new BoardDAO();
	ArrayList<BoardDTO> list = dao.selectBoard();
	for(int i=0;i<list.size();i++)
	{
		BoardDTO dto = list.get(i);
		out.print("번호 " + dto.getNo()+"<br>");
		out.print("제목 " + dto.getTitle()+"<br>");
		out.print("작성자 " + dto.getName()+"<br>");
		out.print("작성일 " + dto.getWtime()+"<br>");
		out.print("조회수 " + dto.getRcnt()+"<br><br>");
	}
%>
<a href="write.jsp">글쓰기</a>
</body>
</html>

- BoardDAO.java

package package com.tistory.coderbear;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class BoardDAO {
	private String driver = "com.mysql.cj.jdbc.Driver";
	private String url = "jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC";
	private String user = "root";
	private String password = "1234";

	public BoardDAO() {
		try {
			Class.forName(driver);
		} catch(ClassNotFoundException e) {
			System.out.println("드라이버 로드 실패");
		}
	}
	
	public ArrayList<BoardDTO> selectBoard()
	{
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		String sql = "SELECT no, title, name, wtime, rcnt FROM board ORDER BY no DESC";
		ArrayList<BoardDTO> list = new ArrayList<BoardDTO>();
		try {
			conn = DriverManager.getConnection(url, user, password);
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			while(rs.next())
			{
				BoardDTO dto = new BoardDTO();
				dto.setNo(rs.getInt("no"));
				dto.setTitle(rs.getString("title"));
				dto.setName(rs.getString("name"));
				dto.setWtime(rs.getString("wtime"));
				dto.setRcnt(rs.getInt("rcnt"));
				list.add(dto);
			}
		} catch(SQLException e) {
			e.printStackTrace();
		}
		return list;		
	}	
}

- BoardDTO.java

package com.tistory.coderbear;

public class BoardDTO {
	private int no;
	private String title;
	private String name;
	private String password;
	private String email;
	private String contents;
	private String wtime;
	private int rcnt;
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getContents() {
		return contents;
	}
	public void setContents(String contents) {
		this.contents = contents;
	}
	public String getWtime() {
		return wtime;
	}
	public void setWtime(String wtime) {
		this.wtime = wtime;
	}
	public int getRcnt() {
		return rcnt;
	}
	public void setRcnt(int rcnt) {
		this.rcnt = rcnt;
	}	
}

 

 

728x90