jsp 유즈빈 액션태그
1. 사용자 폼 입력박스의 네임피라미터 이름과 자바빈 클래스 멤버변수명을 같게 주는 것이 좋다. 이유는 코드라인을 줄 이는 방법이다.
2. jsp:useBean 액션태그를 사용하여 자바빈 클래스 객체 생성하기
<jsp:useBean id="객체명" scope="자바빈객체를 저장할 영역" class="풀패키지경로" />
3. <jsp:setProperty> 액션태그를 사용하여 값을 저장할 수 습니다.
<jsp:setProperty name="자바빈클래스 객체명" property="빈클래스변수명" value="저장될 값" />
여기서 property속성값을 *로 처리하면 한꺼번에 값을 저장할수 있습니다.
이런 경우는 네임피라미터 이름과 자바빈 클래스의 변수명이 같은 경우입니다.
그리고 위의 액션태그를 자바코드로 변경하면 객체명.setter(); 메서드를 호출한 것과 같은 효과가 납니다.
4. <jsp:getProperty> 액션태그를 사용하여 저장된 값을 가져올 수 있습니다.
형식)
<jsp:getProperty name="자바빈클래스 객체명“ property="빈클래스변수명” />
위의 액션태그를 자바코드로 객체명.getter(); 메서드를 사용한 것과 같은 효과가 납니다
<jsp:useBean> |
id 속성 |
클래스 객체 별칭 |
|
빈 클래스를 객채화 해주는 태그입니다. |
class 속성 |
빈 클래스의 패키지경로 |
|
Property |
<jsp:setProperty> |
property 속성 |
set혹은 get메서드는 관례상으로 메서드 이름뒤에 필드명 첫글자를 대문자로 세팅하여 지정하게 되는데 자비빈의 필드명 혹은 메서드에 지정된 필드명을 뜻하게 됩니다. |
set메서드의 역할을 해줍니다. |
|||
<jsp:getProperty> |
name 속성 |
usebean id로 지정한 빈 클래스의 객체 이름 입니다. |
|
get메서드의 역할을 해줍니다. |
- id : JSP 페이지에서 자바빈 객체에 접글할 때 사용할 이름을 명시합니다.
- class : 패키지이름을 포함한 자바빈 클래스의 완전한 이름을 입력합니다.
- scope : 자바빈 객체가 저장될 영역을 지정합니다. (page, request, session, application 중 하나, 기본값은 page)
- JSP 페이지에서 사용할 자바빈 객체를 생성하고 지정한 영역에 저장을 합니다.
- 지정한 영역에 이미 id 속성에서 지정한이름의 속성 값이 존재할 경우 객체를 새로 생성하지 않고 기존에 존재하는 객 체를 그대로 사용합니다.
- 각 scope의 영역별로 공유할 데이터를 쉽게 저장할 수 있습니다.
BoardVO 자바빈 클래스입니다.
package net.abc.vo;
public class Board7VO {
private int b_no;
private String b_name;
private String b_title;
private String b_pwd;
private String b_cont;
private int b_hit;
private String b_date;
public int getB_no() {
return b_no;
}
public void setB_no(int b_no) {
this.b_no = b_no;
}
public String getB_name() {
return b_name;
}
public void setB_name(String b_name) {
this.b_name = b_name;
}
public String getB_title() {
return b_title;
}
public void setB_title(String b_title) {
this.b_title = b_title;
}
public String getB_pwd() {
return b_pwd;
}
public void setB_pwd(String b_pwd) {
this.b_pwd = b_pwd;
}
public String getB_cont() {
return b_cont;
}
public void setB_cont(String b_cont) {
this.b_cont = b_cont;
}
public int getB_hit() {
return b_hit;
}
public void setB_hit(int b_hit) {
this.b_hit = b_hit;
}
public String getB_date() {
return b_date;
}
public void setB_date(String b_date) {
this.b_date = b_date;
}
}
board_write.jsp파일 입니다
<body>
<form action="board_write_ok.jsp" method="post">
<h2>게시판 연습</h2>
작성자 <input type="text" name="b_name" id="b_name" size="14" /><br />
제목 <input type="text" name="b_title" id="b_title" size="36" /><br />
비밀번호 <input type="password" name="b_pwd" id="b_pwd" size="14" /><br />
글내용<br />
<textarea name="b_cont" id="b_cont" cols="36" rows="10"></textarea><br />
<input type="submit" value="저장" /> <input type="reset" value="취소" />
</form>
</body>
<jsp:useBean id="b" class="net.abc.vo.BoardVO" />
<jsp:setProperty name="b" property="*" />
<jsp:getProperty property="b_name" name="b" />
넘겨받는 jsp파일에서 이렇게 선언하면 BoardVO클래스를 b객체로 만들고 setter()메서드기능과 getter()메서드 기능을 구현할수 있습니다.
<%@ page import="net.abc.vo.BoardVO"%>
BoardVO b = new BoardVO();
b.setB_no();b.setb_ame();b.setB_title();b.setB_pwd();b.setB_cont();b.setB_hit();b.setB_date();
b.get();
* 은 b객체의 모든 set()메서드를 지칭하는것으로 각 필드 별 set메서드에 지정된 멤버변수명(필드명)과 board_write.jsp파일의 네임파라미터명과 일치하면 b객체로 접근하여 에 필드값을 초기화(저장) 해줍니다. 이것을 자바코드로 설명하면 넘겨받는 모든 파라미터를 해당 객체에 일일히 set()작업을 해주는 것입니다.
<jsp:useBean id="b" class="net.abc.vo.BoardVO" />
JSP유즈빈 액션태그, 자바코드로 변경하면
BoardVO b = new BoardVO();
와 같은 기능입니다.
id명 b가Board7VO 빈클래스의 객체명이 됩니다.
<jsp:setProperty name="b" property="*" />
jsp:setProperty값 저장 액션태그입니다. name속성값 "b" 는 BoardVO 빈 클래스 객체명입니다.
property속성값을 *로 처리한 이유는 board_write.jsp 의 네임 파라미터 이름과 Board7O 빈 클래스의 변수명이 같기 때문에 property속성값을 * 로만 처리해도 b객체에 작성자, 제목, 비번, 내용이 함께 저장되어 있다.
자바코드로는
b.setter();
와 같습니다.
jsp:getProperty값 반환 액션태그 입니다.
<jsp:getProperty property="b_name" name="b" />
name 속성 "b" 는 BoardVO빈클래스 객체명이고
property 속성값 b_name은 Board7VO 빈클래스 멤버변수명 입니다.
자바 코드로 표현하면
g.getB_name();
과 같습니다.
다음은 board_write_ok.jsp입니다.
게시글 수정폼인 board_write.jsp로부터 넘겨받은 JDBC를 구현해주는 로직이 들어있습니다.
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="java.sql.*"%>
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="b" class="net.abc.vo.Board7VO" />
<jsp:setProperty name="b" property="*" />
작성자 : <jsp:getProperty property="b_name" name="b" />
<%
String driver = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
String user = "week";
String pwd = "week";
Connection con = null;
Statement st = null;
String sql = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, pwd);
st = con.createStatement();
sql = "insert into board7 (b_no, b_name, b_title, b_pwd, b_cont, b_date)'"
+ values(bno7_seq.nextval, b.getB_name() + "','" + b.getB_title() + "','"
+ b.getB_pwd() + "','" + b.getB_cont() + "'," + "sysdate)";
int re = st.executeUpdate(sql);
if (re == 1) {
response.sendRedirect("board7_list.jsp");
}
} catch (Exception e) {e.printStackTrace();}
finally {
try {
if (st != null) st.close();
if (con != null) con.close();
} catch (Exception e) {e.printStackTrace();}
}
%>
위에서 받은 값들을 usebean태그 setProperty로 모든 변수를 초기화하였기때문에
아래 JDBC코드에서 b.getB_필드명(); 즉, b객체에 접근 getB_필드명(); 메서드 호출로 하나하나 값을 얻어올수 있게됩니다.
이상입니다.
'JSP&Servlet' 카테고리의 다른 글
IFrame을 사용하여 form의 action 요청 페이지 불러오기 (파라미터값 포함) (0) | 2020.10.05 |
---|---|
폼태그의 요청 경로설정(절대경로) / JSTL 문법과 EL표현식을 활용한 ContextPath Root(절대경로) 참조법 (0) | 2020.08.29 |