<%@ page contentType="text/html;charset=utf-8" %>
<html>
<head><title>MEMBER 테이블 레코드 삽입</title></head>
<body>
<form action="usingBean_insert.jsp" method="post">
<table border="1">
<tr>
<td>아이디</td>
<td><input type="text" name="memberid" size="10"></td>
<td>암호</td>
<td><input type="text" name="password" size="10"></td>
</tr>
<tr>
<td>이름</td>
<td><input type="text" name="name" size="10"></td>
<td>이메일</td>
<td><input type="text" name="email" size="10"></td>
</tr>
<tr>
<td colspan="4"><input type="submit" value="삽입"></td>
</tr>
</table>
</form>
</body>
</html>
메인 페이지입니다.
package ch06.memberRegister;
public class RegisterBean {
private String memberid;
private String password;
private String name;
private String email;
public String getMemberid() {
return memberid;
}
public void setMemberid(String memberid) {
this.memberid = memberid;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
} // private은 본인 클래스 내에서만 접근 가능
<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import = "java.sql.*" %>
<% request.setCharacterEncoding("utf-8");%>
<jsp:useBean class = "ch06.memberRegister.RegisterBean" id = "regBean" scope = "session"/>
<!-- 위는 이와 같다 RegisterBean regBean = new RegisterBean();
class는 src 자바파일을 의미함-->
<jsp:setProperty name = "regBean" property = "memberid" value = "chang"/>
<!-- 위는 이와 같다 regBean.memberid = "chang" 기본값이 chang 넘어온 거에서 값이 있으면 getProperty에서 바뀜-->
<jsp:setProperty name ="regBean" property = "*" />
<!-- insertForm에 name과 RegisterBean에 필드명하고 같아야한다 -> *를 쓰면 다 입력할 필요 없음
private String memberid;
private String password;
private String name;
private String email;
<input type="text" name="memberid" size="10"></td>....
-->
<html>
<head><title>삽입</title></head>
<body>
<h3>회원정보</h3>
<table bordercolor="#0000ff" border="1">
<tr>
<td><strong>ID</strong></td>
<td><strong>PASSWD</strong></td>
<td><strong>NAME</strong></td>
<td><strong>EMAIL</strong></td>
</tr>
<td> <jsp:getProperty property="memberid" name="regBean"/> </td> <!-- regBean.memberid를 가져옴 -->
<td> <jsp:getProperty property="password" name="regBean"/> </td>
<td> <%= regBean.getName() %></td> <!-- regBean 객체를 만들었으니 거기에 있는 값을 가져온다 -->
<td> <%= regBean.getEmail() %> </td> <!-- inserForm name과 regBean.java에 필드명하고 같아야함 email = private String email -->
</tr>
</table>
</body>
</html>
자바빈과 자바빈의 사용이유에 대해서 알아보겠습니다.
HTML안의 JAVA인 JSP로 웹 어플리케이션을 작성하다 보면 html 코드와 java 코드가 겹쳐지기 때문에
가독성이 매우 떨어지게 됩니다. (스크립트릿으로 작성된 걸 의미)
또, JSP 페이지에 뷰(View)와 로직(Logic)을 공존시키면 코드의 재사용성도 현저히 떨어집니다.
JSP라는 녀석이 본래 View의 역할을 담당하기 때문에 이를 분리하여
빈으로 작성하는 것이 코드의 가독성과 재사용성을 높이는 것이 좋습니다.
이러한 이유로 JavaBean이라고 불리게 되는 것입니다.
일단 src에는 클래스를 만드는 곳이죠 여기에는 자바코드가 들어가게 되는 곳입니다.
직접 스크립트릿으로 로직을 짜는게 아니라 여기에서 로직을 짜서 이용할 수 있게 만드는 것이죠
일단 간단하게 id, password, name, email의 getter와 setter를 만들어서 사용해보겠습니다.
<jsp:useBean class = "ch06.memberRegister.RegisterBean" id = "regBean" scope = "session"/>
jsp:useBean을 이용해 우리가 만든 클래스를 사용한다고 선언을 해줘야합니다.
class에는 경로를 적어줍니다. 자기가 만든 경로와 동일하게 적어주시면 됩니다.
scope로 영역을 지정할 수 있고 id로 객체명을 지정해줄 수 있습니다.
이걸로 RegisterBean 클래스의 regBean라는 객체를 생성한 것과 동일하다고 생각하시면 됩니다.
그리고 여기에서 선언한 변수명은 메인페이지의 name과 똑같이 만들어야합니다.
<jsp:setProperty name = "regBean" property = "memberid" value = "chang"/>
<jsp:setProperty name = "useBean에서 설정한 name" property = "저장된 변수" value ="defualt값">
<jsp:setProperty name ="regBean" property = "*" />
또한 이렇게 property에 *를 쓰면 자동적으로 RegisterBean.java의 변수를 사용할 수 있게 됩니다.
<jsp:getProperty property="memberid" name="regBean"/>
<jsp:getProperty property ="저장된 변수" name = "useBean에서 설정한 name"/>
이걸 통해 저장된 변수를 출력할 수 있습니다.
<%= regBean.getName() %>
이런식으로 스크립트릿으로 사용도 가능합니다. 하지만 이렇게 쓰면 useBean을 쓰는 이유가 없죠
로직과 뷰를 구분하기 위해서 쓰는 것인데 말이죠
'[Java] > [JSP, Servlet]' 카테고리의 다른 글
[JSP, Servlet] EL(표현 언어) (0) | 2021.08.09 |
---|---|
[JSP, Servlet] DB연결 (JDBC, ResultSet, executeQuery, executeUpdate) (0) | 2021.07.30 |
[JSP, Servlet] page, request, session, application 영역 (0) | 2021.07.29 |
[JSP, Servlet] include file, <jsp:include page> (0) | 2021.07.29 |
[JSP, Servlet] forward, sendRedirect (0) | 2021.07.28 |