반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- interrupt()
- ObjectInputStream
- first-of-child
- include액션태그
- sleep()메소드
- String char[] 형변환
- isinterrupted()
- 스레드그룸
- 동기화
- include 지시자
- include지시자
- 리눅스셋팅
- 상관 서브 쿼리
- interrupted()
- 아이디중복
- MemoryStream
- ThreadGroup()
- 표현 언어
- first-child
- StringWriter
- Daemon()
- 리눅스세팅
- Linux셋팅
- 상관서브쿼리
- ID중복
- char[] String 형변환
- InputDialog
- Linux세팅
- StringReader
- 메모리스트림
Archives
- Today
- Total
다연이네
[days05] 자바 빈즈(Java Beans) 본문
반응형
1. 자바빈즈(Java Beans) - JSP 기반 웹 어플리케이션에서 정보를 표현하기 위한 객체
( POJO - Spring 기반 (같은건데 스프링에서는 pojo라고 함) )
2. 자바빈 규약 == DTO == VO
ㄱ. 직렬화
ㄴ. private 필드 선언
ㄷ. getter, setter
3. 자바빈(즈) : days05.MemberInfo 클래스 선언
days05.MemberInfo
package days05;
import java.io.Serializable;
import java.util.Date;
//Java Beans 얘만 붙히면 직렬화 가능해짐
public class MemberInfo implements Serializable{
//private 필드 선언
private String id;
private String passwd;
private String name;
private Date registerDate;
private String email;
//getter, setter
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getRegisterDate() {
return registerDate;
}
public void setRegisterDate(Date registerDate) {
this.registerDate = registerDate;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
<%@page import="java.util.Date"%>
<%@page import="days05.MemberInfo"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
});
</script>
</head>
<body>
<%
MemberInfo info = new MemberInfo();
info.setId("admin");
info.setName("관리자");
info.setPasswd("1234");
info.setRegisterDate(new Date());
info.setEmail("admin@ss.com");
%>
<h3>멤버 정보 출력</h3>
아이디 : <%=info.getId() %><br>
이름 : <%=info.getName() %><br>
비밀번호 : <%=info.getPasswd() %><br>
등록일 : <%=info.getRegisterDate() %><br>
이메일 : <%=info.getEmail() %><br>
</body>
</html>
자바빈즈를 사용하는 액션태그를 사용해 출력해보자
<jsp:useBean id="" class="패키지명.클래스명" scope="page"></jsp:useBean>
<body>
<!--기본:페이지, 현재 페이지에서만 사용 가능 -->
<jsp:useBean id="info" class="days05.MemberInfo" scope="page"></jsp:useBean>
<jsp:setProperty value="admin" property="id" name="info"/>
<jsp:setProperty value="관리자" property="name" name="info"/>
<jsp:setProperty value="1234" property="passwd" name="info"/>
<jsp:setProperty value="<%=new Date() %>" property="registerDate" name="info"/>
<jsp:setProperty value="admin@ss.com" property="email" name="info"/>
<!-- setProperty value 속성값 : 값, 표현식, EL -->
<h3>멤버 정보 출력</h3>
아이디 : <jsp:getProperty property="id" name="info"/><br>
이름 : <jsp:getProperty property="name" name="info"/><br>
비밀번호 : <jsp:getProperty property="passwd" name="info"/><br>
등록일 : <jsp:getProperty property="registerDate" name="info"/><br>
이메일 : <jsp:getProperty property="email" name="info"/><br>
</body>
똑같은 결과로 출력된다.
그런데 왜 어렵게 jsp:useBean, jsp:setProperty, jsp:getProperty 액션태그를 사용하는걸까?
그 이유는 밑에 있다.
위와 같이 회원 정보(?)를 입력해 제출하는 폼이 있다.
(해당 폼의 코드)
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
});
</script>
</head>
<body>
<!-- 꼭 기억해야할 사항 : 모든 입력태그의 name 속성값은 자바빈즈의 필드명과 동일하게 선언 -->
<form action="ex07_03.jsp">
<table border="1" style="width:400px">
<tr>
<td>아이디</td>
<td><input type="text" name="id" value="admin" /></td>
</tr>
<tr>
<td>이름</td>
<td><input type="text" name="name" value="관리자" /></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="password" name="passwd" value="1234" /></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="text" name="email" value="admin@naver.com " /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" />
<input type="reset" />
</td>
</tr>
</table>
</form>
</body>
</html>
자바빈즈 액션태그를 사용하지 않는다면,
해당 폼이 제출되는 페이지에서는 매개변수를 통해 하나하나 값을 넘겨받아야 할 것이다.
<%@page import="java.util.Date"%>
<%@page import="days05.MemberInfo"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
});
</script>
</head>
<body>
<%
String id = request.getParameter("id");
String name = request.getParameter("name");
String passwd = request.getParameter("passwd");
String email = request.getParameter("email");
MemberInfo info = new MemberInfo();
info.setId(id);
info.setName(name);
info.setPasswd(passwd);
info.setRegisterDate(new Date()); //등록일은 받아오지 않고 현재로
info.setEmail(email);
%>
<h3>멤버 정보 출력</h3>
아이디 : <%=info.getId() %><br>
이름 : <%=info.getName() %><br>
비밀번호 : <%=info.getPasswd() %><br>
등록일 : <%=info.getRegisterDate() %><br>
이메일 : <%=info.getEmail() %><br>
</body>
</html>
그러나 자바빈즈 액션태그를 사용하면 훨씬 간편해진다.
<jsp:setProperty property="*" name="info"/> 를 사용해 한 번에 속성 설정이 가능하다.
<%@page import="java.util.Date"%>
<%@page import="days05.MemberInfo"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
$(document).ready(function (){
});
</script>
</head>
<body>
<jsp:useBean id="info" class="days05.MemberInfo" scope="page"></jsp:useBean>
<jsp:setProperty property="*" name="info"/>
<jsp:setProperty value="<%=new Date() %>" property="registerDate" name="info"/>
<!-- date는 입력폼에 없어서 null 나오니까 따로 주기 -->
<h3>멤버 정보 출력</h3>
아이디 : <jsp:getProperty property="id" name="info"/><br>
이름 : <jsp:getProperty property="name" name="info"/><br>
비밀번호 : <jsp:getProperty property="passwd" name="info"/><br>
등록일 : <jsp:getProperty property="registerDate" name="info"/><br>
이메일 : <jsp:getProperty property="email" name="info"/><br>
</body>
</html>
반응형
'JSP' 카테고리의 다른 글
[days06] 쿠키 (쿠키수정 추가 필요) (0) | 2021.01.01 |
---|---|
[days05] 게시판 만들기 (0) | 2020.12.29 |
[days05] 페이지 모듈화 - <%@include %>지시자와 <jsp:include>액션태그 (0) | 2020.12.29 |
[days05] JSP 예외처리 (0) | 2020.12.29 |
[days04] 웹 어플리케이션의 4가지의 영역(scope) (0) | 2020.12.28 |
Comments