JSP의 여러가지 액션 태그
이름 | 형식 | 설명 |
인클루드 액션 태그 | <jsp:include> | 이미 있는 JSP를 현재 JSP에 포함하는 태그 |
포워드 액션 태그 | <jsp:forward> | 서블릿 RequestDispatcher 클래스의 포워딩 기능을 대신하는 태그 |
유즈빈 액션 태그 | <jsp:useBean> | 객체를 생성하기 위한 new 연산자를 대신하는 태그 |
셋프로퍼티 액션 태그 | <jsp:setProperty> | setter를 대신하는 태그 |
겟프로퍼티 액션 태그 | <jsp:getProperty< | getter를 대신하는 태그 |
1. 인클루드 액션 태그 사용하기
인클루드 디렉티브 태그처럼 화면을 분할해서 관리할 때 사용 공통적으로 사용하는 홈페이지의 상단 화면과 왼쪽 메뉴 화면을 재사용할 수 있다
<jsp:include page="jsp페이지" flush="true 또는 false">
...
</jsp:include>
여기서 page는 포함할 JSP 페이지를 의미하고, flush는 지정한 JSP를 실행하기 전 출력 버퍼 비움 여부를 지정한다.
인클루드 디렉티브 태그와 인클루드 액션 태그의 차이점
항목 | 인클루드 액션 태그 | 인클루드 디렉티브 태그 |
기능 | JSP 레이아웃 모듈화 | JSP 레이아웃 모듈화 |
처리 시간 | 요청 시간에 처리 | JSP를 자바 코드로 변환 시 처리 |
포함된 JSP 자바 파일 변환 여부 | 포함되는 JSP가 각각 자바 파일로 생성 | 포함되는 JSP가 포함하는 JSP에 합쳐진 후 한 개의 자바 파일로 생성 |
인클루드 액션태그의 실행과정
- 브라우저 요청 시 JSP 파일을 컴파일
- 컴파일 시 <jsp:include>가 지시하는 JSP를 요청
- 요청된 JSP를 컴파일
- 컴파일 된 JSP가 응답을 보냄
- JSP는 브라우저에서 요청한 응답 결과를 출력
newjeans_image.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String imgName = request.getParameter("imgName");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>newjeans 이미지</title>
</head>
<body>
<br><br>
<h1>이름은 <%= name %>입니다.</h1><br><br>
<img src="./image/<%= imgName %>" />
</body>
</html>
부모 JSP에서 포함 요청 시 전달되는 이름과 이미지 파일을 getParameter( ) 메서드를 이용해 가져온 후 이름과 해당 이미지를 출력
include1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>include1.jsp</title>
</head>
<body>
안녕하세요. 쇼핑몰 중심 JSP 시작입니다!!!
<br>
<jsp:include page="newjeans_image.jsp" flush="true" >
<jsp:param name="name" value="newjeans" />
<jsp:param name="imgName" value="newjeans.jpeg" />
</jsp:include>
<br>
안녕하세요. 쇼핑몰 중심 JSP 끝 부분입니다.!!!
</body>
</html>
<jsp:include> 태그의 page 속성에 포함할 자식 JSP인 newjeans_image.jsp를 지정, <jsp:param> 태그(param 액션 태그)를 이용해 이름과 이미지 파일 이름을 동적으로 자식 JSP인 newjeans_image.jsp로 포워딩
include2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>include2.jsp</title>
</head>
<body>
안녕하세요. 쇼핑몰 중심 JSP 시작입니다!!!
<br>
<jsp:include page="newjeans_image.jsp" flush="true" >
<%-- param 액션 태그를 이용해 duke_image.jsp로 이름과 파일 이름을 전달 --%>
<jsp:param name="name" value="newjeans2" />
<jsp:param name="imgName" value="newjeans2.png" />
</jsp:include>
<br>
안녕하세요. 쇼핑몰 중심 JSP 끝 부분입니다.!!!
</body>
</html>
자식 JSP로 다른 이름과 이미지 파일 이름을 전달
2. 포워드 액션 태그 사용하기
서블릿에서 다른 서블릿으로 포워딩하는 방법에 RequestDispatcher를 이용하는 방법이 있다.
하지만 포워드 액션 태그를 이용하면 자바 코드 없이도 포워딩할 수 있다.
또한 포워딩 시 다른 서블릿이나 JSP로 값을 전달할 수도 있다.
포워드 액션 태그의 형식
<jsp:forward page="포워딩할 JSP 페이지" >
...
</jsp:forward>
포워드 액션 태그 실습하기
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인창</title>
</head>
<body>
<h1>아이디를 입력하지 않았습니다. 아이디를 입력해 주세요.</h1>
<form action="result.jsp" method="post">
아이디 : <input type="text" name="userID"><br>
비밀번호: <input type="password" name="userPW"><br>
<input type="submit" value="로그인">
<input type="reset" value="다시 입력">
</form>
</body>
</html>
result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과창</title>
</head>
<body>
<%
String userID = request.getParameter("userID");
if(userID.length()==0) {
/*
RequestDispatcher dispatch = request.getRequestDispatcher("login.jsp");
dispatch.forward(request, response);
*/
%>
<jsp:forward page="login.jsp"/>
<%
}
%>
<h1>환영합니다 <%= userID %>님!! </h1>
</body>
</html>
하지만 이 예제는 ID를 입력하지 않고 로그인을 시도하면 로그인창으로 포워딩하여 다음과 같은 메시지를 출력한다.
최초로 login.jsp로 접속하면 로그인창에 오류 메시지가 나타난다는 것이다. 페이지에 처음 접속했을 때는 ID와 비밀번호 입력창만 나타나게 하고, 오류 시에만 오류 메시지를 나타나게 하는 것이 사용자에게 더 익숙하다.
login2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인창</title>
</head>
<body>
<%
String msg = request.getParameter("msg");
if(msg != null) {
%>
<h1> <%= msg %></h1>
<%
}
%>
<form action="result.jsp" method="post">
아이디 : <input type="text" name="userID"><br>
비밀번호: <input type="password" name="userPW"><br>
<input type="submit" value="로그인">
<input type="reset" value="다시 입력">
</form>
</body>
</html>
로그인창에 접속시에는 getParameter( ) 메서드를 이용해 msg 값을 가져와서 표시하도록 구현한다.
최초 요청 시에는 msg 값이 null이므로 아무것도 표시하지 않게된다.
result2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<%!
String msg = "아이디를 입력하지 않았습니다. 아이디를 입력해 주세요.";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과창</title>
</head>
<body>
<%
String userID = request.getParameter("userID");
if(userID.length()==0) {
%>
<jsp:forward page="login2.jsp">
<%
}
%>
<h1>환영합니다 <%= userID %>님!! </h1>
</body>
</html>
ID를 입력하지 않았을 경우 다시 로그인창으로 포워딩하면서 이번에는 <jsp:param> 태그를 이용해 msg 값을 전달하게 된다.
3. useBean, SetProperty, getProperty 액션 태그 사용하기
useBean, setProperty, getProperty 액션 태그를 사용해 객체 생성부터 속성에 값을 저장하거나 가져오는 방법을 확인한다.
본격적으로 useBean액션 태그를 살펴보기 전에 먼저 자바빈의 개념부터 실습을 통해 확인해보자
1) 자바 빈을 이용한 회원 정보 조회
웹 프로그램, 즉 Java EE 프로그래밍 시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달하는 데 사용 자바의 DTO(Data Transfer Object, 데이터 전송 객체) 클래스, VO(Value Object, 값 객체) 클래스와 같은 개념이라고 할 수 있다.
자바 빈을 만드는 방법은 VO 클래스를 만드는 방법과 같다.
- 속성의 접근 제한자는 private
- 각 속성(attribute, property)은 각각의 setter/getter를 가짐
- setter/getter 이름의 첫 글자는 반드시 소문자로 시작
- 인자 없는 생성자를 반드시 가지며 다른 생성자도 추가
자바 빈을 이용한 회원 테이블의 회원 정보 조회 후 출력 실습
회원 정보를 저장하는 MemberBean 클래스를 만들기 전에 현재 만들어진 회원 테이블의 컬럼명을 확인해야한다.
컬럼 이름과 자료형을 동일하게 선언한다.
MemberBean.java
import java.util.Date;
public class MemberBean {
private String id;
private String pwd;
private String name;
private String email;
private Date joinDate;
public MemberBean() {
}
public MemberBean(String id, String pwd, String name, String email) {
this.id = id;
this.pwd = pwd;
this.name = name;
this.email = email;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
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;
}
public Date getJoinDate() {
return joinDate;
}
public void setJoinDate(Date joinDate) {
this.joinDate = joinDate;
}
}
회원 테이블을 참고해서 컬럼 이름을 그대로 선언
memberForm.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입창</title>
</head>
<body>
<form method="get" action="member.jsp">
<h1 style="text-align:center">회원 가입창</h1>
<table align="center">
<tr>
<td width="200">
<p align="right">아이디
</td>
<td width="400"><input type="text" name="id"></td>
</tr>
<tr>
<td width="200">
<p align="right">비밀번호
</td>
<td width="400"><input type="password" name="pwd"></td>
</tr>
<tr>
<td width="200">
<p align="right">이름
</td>
<td width="400"><input type="text" name="name"></td>
</tr>
<tr>
<td width="200">
<p align="right">이메일
</td>
<td width="400"><input type="text" name="email"></td>
</tr>
<tr>
<td width="200">
<p> </p>
</td>
<td width="400">
<input type="submit" value="가입하기">
<input type="reset" value="다시입력">
</td>
</tr>
</table>
</form>
</body>
</html>
회원 가입창에서 회원정보를 입력한후 member.jsp로 전송하도록 작성
member.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*, sec01.ex01.*" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<%
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
MemberBean m = new MemberBean(id, pwd, name, email);
MemberDAO memberDAO = new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table align="center" width="100%">
<tr align="center" bgcolor="#99ccff">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="5%">이름</td>
<td width="11%">이메일</td>
<td width="5%">가입일</td>
</tr>
<%
if (membersList.size() != 0) {
%>
<tr>
<td colspan="5">
<p align="center"><b><span style="font-size:9pt;">
등록된 회원이 없습니다.</span></b></p>
</td>
</tr>
<%
} else {
for(int i=0; i<membersList.size(); i++) {
MemberBean bean = (MemberBean)membersList.get(i);
%>
<tr align="center">
<td>
<%= bean.getId() %>
</td>
<td>
<%= bean.getPwd() %>
</td>
<td>
<%= bean.getName() %>
</td>
<td>
<%= bean.getEmail() %>
</td>
<td>
<%= bean.getJoinDate() %>
</td>
</tr>
<%
} // end for
} // end if
%>
<tr height="1" bgcolor="#99ccff">
<td colspan="5"></td>
</tr>
</table>
</body>
</html>
전송된 회원 정보를 getParameter()메서드를 이요해 가져온 후 MemberBean객체를 생성하여 각 회원 정보를 속성에 설정한다.
그런 다음 MemberDAO의 addMember()메서드를 호출해 인자로 전달한다. 새 회원을 추가한 후에는 다시 MemberDAO의 listMembers()메서드를 호출해 모든 정보를 조회하고 목록으로 출력한다.
MemberDAO.java
public class MemberDAO {
private Connection con;
private PreparedStatement pstmt;
private DataSource dataFactory;
public MemberDAO() {
try {
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
dataFactory = (DataSource) envContext.lookup("jdbc/oracle");
} catch (Exception e) {
e.printStackTrace();
}
}
public List listMembers() {
List list = new ArrayList();
try {
con = dataFactory.getConnection();
String query = "select * from t_member order by joinDate desc ";
System.out.println("prepareStatement: " + query);
pstmt = con.prepareStatement(query);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String id = rs.getString("id");
String pwd = rs.getString("pwd");
String name = rs.getString("name");
String email = rs.getString("email");
Date joinDate = rs.getDate("joinDate");
MemberBean vo = new MemberBean();
vo.setId(id);
vo.setPwd(pwd);
vo.setName(name);
vo.setEmail(email);
vo.setJoinDate(joinDate);
list.add(vo);
}
rs.close();
pstmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public void addMember(MemberBean memberBean) {
try {
Connection con = dataFactory.getConnection();
String id = memberBean.getId();
String pwd = memberBean.getPwd();
String name = memberBean.getName();
String email = memberBean.getEmail();
String query = "insert into t_member";
query += " (id,pwd,name,email)";
query += " values(?,?,?,?)";
System.out.println("prepareStatement: " + query);
pstmt = con.prepareStatement(query);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
pstmt.setString(3, name);
pstmt.setString(4, email);
pstmt.executeQuery();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
addMember()메서드 호출시 MemberBean객체로 전달된 회원 정보를 getter을 이용해 가져온후 insert문을 이용해 추가한다.
2) 유즈빈을 이용한 회원 정보 조회
앞에서 자바 빈을 사용해 회원 추가와 조회를 확인했다. 그런데 이처럼 자바코드로 이루어진 자바빈을 자주 사용할 경우 화면이 복잡해진다는 단점이 있다.
이런 단점을 보완하기 위해 나온것이 유즈빈 액션 태그이다.
유즈빈 액션태그 사용 형식
<jsp:useBean id="빈 이름" class="패키지 이름을 포함한 자바 빈 클래스 [scope="접근범위"]/>
id는 JSP 페이지에서 자바 빈 객체에 접근할 때 사용할 이름을 의미한다.
class는 패키지 이름을 포함한 자바 빈 이름을, scope는 자바 빈에 대한 접근 범위를 지정하는 역할을 한다.(page, request, session, application을 가지며 기본값은 page)
유즈 빈을 이용한 회원 테이블의 회원 정보 조회 후 출력 실습
member2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*, sec01.ex01.*" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<%
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
m.setId(id);
m.setPwd(pwd);
m.setName(name);
m.setEmail(email);
MemberDAO memberDAO = new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table align="center" width="100%">
<tr align="center" bgcolor="#99ccff">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="5%">이름</td>
<td width="11%">이메일</td>
<td width="5%">가입일</td>
</tr>
<%
if (membersList.size() == 0) {
%>
<tr>
<td colspan="5">
<p align="center"><b><span style="font-size:9pt;">
등록된 회원이 없습니다.</span></b></p>
</td>
</tr>
<%
} else {
for(int i=0; i<membersList.size(); i++) {
MemberBean bean = (MemberBean)membersList.get(i);
%>
<tr align="center">
<td>
<%= bean.getId() %>
</td>
<td>
<%= bean.getPwd() %>
</td>
<td>
<%= bean.getName() %>
</td>
<td>
<%= bean.getEmail() %>
</td>
<td>
<%= bean.getJoinDate() %>
</td>
</tr>
<%
} // end for
} // end if
%>
<tr height="1" bgcolor="#99ccff">
<td colspan="5"></td>
</tr>
</table>
</body>
</html>
눈으로 보면 출력 결과는 같지만 유즈빈 액션 태그를 사용하면 굳이 자바코드를 사용하지 않고도 JSP 페이지에서 처리할 수 있다는 점에서 효율적이다.
3) SetProperty, getProperty 액션태그를 이용한 회원 정보 조회
앞에서는 useBean 액션태그를 사용해 자바 코드를 사용하지 않고 자바빈을 생성했다. 그러나 여전히 빈 속성에 값을 설정할 때에는 자바 코드에서 setter를 사용하고 있다. useBean 에 접근해 속성 값을 설정하거나 가져오는 경우 setProperty와 getProperty 액션 태그를 사용하면 일일이 값을 설정하지 않아도 된다.
이름 | 정의 | 형식 |
setProperty | useBean의 속성에 값을 설정하는 태그 | <jsp:setProperty name="자바 빈 이름" property="속성 이름" value="값" /> - name: <jsp:useBean> 액션 태그의 id 속성에 지정한 이름 - property: 값을 설정할 속성 이름 - value: 속성에 설정할 속성 값 |
getProperty | useBean의 속성 값을 얻는 태그 | <jsp:getProperty name="자바 빈 이름" property="속성 이름" /> - name: <jsp:useBean> 액션 태그의 id 속성에 지정한 이름 - property: 값을 얻을 속성 이름 |
자바의 setter를 사용하지 않고 빈 속성을 설정하는 예제
member3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*, sec01.ex01.*" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<jsp:setProperty name="m" property="id" value='<%= request.getParameter("id") %>' />
<jsp:setProperty name="m" property="pwd" value='<%= request.getParameter("pwd") %>' />
<jsp:setProperty name="m" property="name" value='<%= request.getParameter("name") %>' />
<jsp:setProperty name="m" property="email" value='<%= request.getParameter("email") %>' />
<%
MemberDAO memberDAO = new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table align="center" width="100%">
<tr align="center" bgcolor="#99ccff">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="5%">이름</td>
<td width="11%">이메일</td>
<td width="5%">가입일</td>
</tr>
<%
if (membersList.size() == 0) {
%>
<tr>
<td colspan="5">
<p align="center"><b><span style="font-size:9pt;">
등록된 회원이 없습니다.</span></b></p>
</td>
</tr>
<%
} else {
for(int i=0; i<membersList.size(); i++) {
MemberBean bean = (MemberBean)membersList.get(i);
%>
<tr align="center">
<td>
<%= bean.getId() %>
</td>
<td>
<%= bean.getPwd() %>
</td>
<td>
<%= bean.getName() %>
</td>
<td>
<%= bean.getEmail() %>
</td>
<td>
<%= bean.getJoinDate() %>
</td>
</tr>
<%
} // end for
} // end if
%>
<tr height="1" bgcolor="#99ccff">
<td colspan="5"></td>
</tr>
</table>
</body>
</html>
회원 가입창에서 전송한 회원 정보를 자바코드, 즉 setter를 사용해 일일이 설정하지 않았다는게 큰 차이점이다.
member4.jsp
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<%-- 회원 가입창에서 전달된 매개변수 이름과 속성 이름이 같으면 같은 이름으로 값을 설정한다. --%>
<jsp:setProperty name="m" property="id" param="id" />
<jsp:setProperty name="m" property="pwd" param="pwd" />
<jsp:setProperty name="m" property="name" param="name" />
<jsp:setProperty name="m" property="email" param="email" />
<%
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
/* MemberBean m = new MemberBean(id, pwd, name, email); */
m.setId(id);
m.setPwd(pwd);
m.setName(name);
m.setEmail(email);
MemberDAO memberDAO = new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<jsp:setProperty> 액션 태그의 param속성을 이용해 회원 가입창에서 전달된 매개변수 이름으로 해당 useBean의 속성에 자동으로 값을 설정한다.
member5.jsp
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<%-- 회원 가입창에서 전달받은 매개변수 이름이 일치하는 useBean 속성에 자동으로 값을 설정 --%>
<jsp:setProperty name="m" property="id"/>
<jsp:setProperty name="m" property="pwd"/>
<jsp:setProperty name="m" property="name"/>
<jsp:setProperty name="m" property="email"/>
<%
MemberDAO memberDAO = new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<jsp:setProperty> 액션 태그의 param속성을 생략하고 property속성 이름만 지정하면 회원 가입창에서 전달 받은 매개 변수 중 같은 매개 변수 값을 자동으로 설정해준다.
member6.jsp
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<jsp:setProperty name="m" property="*" />
<%-- 전송된 매개변수 이름과 빈 속성을 비교한 후 동일한 빈에 값을 자동으로 설정 --%>
<%
MemberDAO memberDAO = new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<jsp:setProperty> 액션 태그의 property속성에 *를 지정하면 JSP페이지에서 자동으로 매개변수 이름과 속성 이름을 비교한 후 같은 이름의 속성 이름에 전잘된 값을 알아서 설정해준다.
따라서 JSP나 HTML페이지에서 전달된 데이터를 처리할 때 미리 매개변수 이름과 속성 이름을 동일하게 설정하여 편리하게 사용할 수 있다.
member7.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
import="java.util.*, sec01.ex01.*" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page" />
<jsp:setProperty name="m" property="*" />
<%
MemberDAO memberDAO = new MemberDAO();
memberDAO.addMember(m);
List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 목록창</title>
</head>
<body>
<table align="center" width="100%">
<tr align="center" bgcolor="#99ccff">
<td width="7%">아이디</td>
<td width="7%">비밀번호</td>
<td width="5%">이름</td>
<td width="11%">이메일</td>
<td width="5%">가입일</td>
</tr>
<%
if (membersList.size() == 0) {
%>
<tr>
<td colspan="5">
<p align="center"><b><span style="font-size:9pt;">
등록된 회원이 없습니다.</span></b></p>
</td>
</tr>
<%
} else {
for(int i=0; i<membersList.size(); i++) {
MemberBean bean = (MemberBean)membersList.get(i);
%>
<tr align="center">
<%-- <jsp:getProperty> 태그를 이용해 useBean 속성 값에 접근 --%>
<td>
<jsp:getProperty name="m" property="id"/>
</td>
<td>
<jsp:getProperty name="m" property="pwd"/>
</td>
<td>
<jsp:getProperty name="m" property="name"/>
</td>
<td>
<jsp:getProperty name="m" property="email"/>
</td>
</tr>
<%
} // end for
} // end if
%>
<tr height="1" bgcolor="#99ccff">
<td colspan="5"></td>
</tr>
</table>
</body>
</html>
회원 가입창에서 전달받은 회원 정보를 일단 <jsp:setProperty> 액션 태그를 이용해 useBean속성에 저장한 후 <jsp:getProperty> 액션 태그를 이용해 useBean의 속성에 접근하여 값을 출력한다.
<jsp:param> 액션 태그는 <include> 액션 태그와 <forward> 액션 태그 사용 시 다른 JSP로 매개변수 값을 전송할 때 사용한다.
참고 : ⌜자바 웹을 다루는 기술⌟ 책을 공부하며 요약・정리한 내용입니다.
'💻 Web_Back end > JSP' 카테고리의 다른 글
[JSTL] JSP 표준 태그 라이브러리 (0) | 2023.05.03 |
---|---|
표현언어 내장객체 (requesetScope, pageContext, Collection, HashMap, has-a) (0) | 2023.05.02 |
JSP welcome 파일 지정하기 (0) | 2023.04.30 |
JSP 페이지 예외 처리하기 (0) | 2023.04.29 |
JSP 스크립트 요소 기능 (0) | 2023.04.27 |