ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 19. 액션태그
    개발자 수업/JSP 2021. 12. 9. 21:26

    1. 액션 태그 등장 배경
        1) 화면이 복잡해짐에 따라 HTML 태그에 자바 코드를 같이 써야하는 상황이 생김
        2) 유지보수 어려움 가중 -> 스크립트릿의 자바 코드를 대체하는 액션 태그가 등장함

    2. JSP의 액션 태그들
        1) 인클루드 ActionTag
            - <jsp:include>
        2) 포워드 ActionTag
            - <jsp:forward>
        3) 유즈빈 ActionTag
            - <jsp:useBean>
            - 객체를 생성하기 위한 new 연산자를 대신하는 태그
        4) 셋프로퍼티 ActionTag
            - <jsp:setProperty>
            - setter 대신하는 태그
        5) 겟프로퍼티 ActionTag
            - <jsp:getProperty>
            - getter 대신하는 태그
        6) <jsp:param>

    3. 인클루드 ActionTag
        1) 인클루드 Directive tag처럼 화면을 분할해서 관리하는데 사용되는 태그
        2) 재사용성 및 유지 보수 높일 수 있음
        3) 형식
            <jsp:include page="포함할 JSP 페이지명" flush="지정된 JSP를 실행되기 전 출력버퍼 비움여부 지정">
            </jsp:include>
        4) 기능 - JSP 레이아웃 모듈화
           처리 - 요청 시간에 처리
           데이터 처리 방법 - param 액션 태그 이용해 동적처리 가능
           포함된 JSP 자바파일 변환 - 포함되는 JSP가 각각 자바 파일로 생성

    4. 인클루드 디렉티브(지시어) 태그
        1) 기능 - JSP 레이아웃 모듈화
           처리 - JSP를 자바 코드로 변환시 처리
           데이터 처리 방법 - 정적 처리만 가능
           포함된 JSP 자바파일 변환 - 포함되는 JSP가 포함하는 JSP에 합쳐진 후 한 개 파일로 생성

    5. 포워드 ActionTag
        1) RequestDispatcher 클래스를 대신해서 포워딩하는 방법 제공
        2) 포워딩시 값을 전달할 수 있음
        3) 형식
            <jsp:forward page="포워딩할 JSP 페이지">
            ...
            </jsp:forward>
        
    6. useBean, setProperty, getProperty
        1) 자바 빈(Bean)
            - Java EE 프로그래밍시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달하는데 사용되는 클래스
            - DTO (Data Transfer Object, 데이터 전송 객체) 클래스, VO (Value Object, 값 객체) 클래스와 같은 개념
        2) 자바 빈 특징
            - 기본(default) 패키지 외의 패키지에 속해있어야 함
            - 멤버 변수(속성, 프로퍼티)의 접근 제한자는 private 선언함
            - 기본 생성자가 있어야 함
            - 인자 없는 기본 생성자를 반드시 가지며 다른 생성자도 추가 가능함
            - 각 속성(attribute, property)은 각각의 setter/getter를 가짐
            - setter/getter 이름의 첫 글자는 반드시 소문자여야 함
            - 세터/게터 메서드의 접근 제한자는 public으로 선언함
        3) 유즈빈 액션 태그
            - JSP 페이지에서 자바 빈을 대체하기 위한 태그
            - 형식
                <jsp:useBean id="빈 이름" class="패키지 이름 포함한 자바 빈 클래스 이름" [scope="접근 범위"] />
        4) setProperty/getProperty 액션 태그
            - setProperty
                - useBean의 속성에 값을 설정하는 태그
                - 형식
                    <jsp:setProperty name="자바 빈 이름" property="속성 이름" value="값" />
            - getProperty
                - useBean의 속성에 값을 얻는 태그
                - 형식
                    <jsp:getProperty name="자바 빈 이름" property="속성 이름" />
                    


    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    	String name = request.getParameter("name");			/* param 액션 태그로 전달된 매개변수를 가져옴 */
    	String ImgName = request.getParameter("ImgName");
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>airPods 이미지</title>
    </head>
    <body>
    	<br><br>
    	<h1>이름은 <%=name %>입니다.</h1><br><br>
    	<img alt="이미지" src="../image/<%=ImgName %>">
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>includeAT</title>
    </head>
    <body>
    	안녕하세요. 누구나 행복한 올 연말연시!!
    	<br>
    	<%-- airpodsIamge.jsp에 동적으로 포워딩함 --%>
    	<jsp:include page="airpodsImage.jsp" flush="true">	
    		<%-- param 액션 태그를 이용해서 airpodsImage.jsp로 이름과 파일이름을 전달함 --%>
    		<jsp:param value="에어팟프로" name="name" />			
    		<jsp:param value="airpods.png" name="ImgName" />
    	</jsp:include>
    </body>
    </html>


    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    	String name = request.getParameter("name");			/* param 액션 태그로 전달된 매개변수를 가져옴 */
    	String ImgName = request.getParameter("ImgName");
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>airPods 이미지</title>
    </head>
    <body>
    	<br><br>
    	<h1>이름은 <%=name %>입니다.</h1><br><br>
    	<img alt="이미지" src="../image/<%=ImgName %>">
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>includeAT</title>
    </head>
    <body>
    	안녕하세요. 누구나 행복한 올 연말연시!!
    	<br>
    	<jsp:include page="airpodsImage.jsp" flush="true">	
    		<jsp:param value="에어팟3세대" name="name"/>			
    		<jsp:param value="AirPods(3).png" name="ImgName"/>
    	</jsp:include>
    </body>
    </html>


    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<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>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    %>
    
    <%-- ID 입력하지 않은 경우 자바의 RequestDispatcher를 사용하지 않고 포워드 액션태그를 이용해 다시 로그인 창으로 이동함 --%>
    
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>결과</title>
    </head>
    <body>
    	<%
    		String userId = request.getParameter("userId");
    		if(userId.length() == 0) {
    			/* RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp");
    			dispatcher.forward(request, response); */	
    	%>
    			<jsp:forward page="login.jsp"/>	
    	<%
    		}
    	%>
    		
    		
    	<h1>환영합니다. <%=userId %>님</h1>
    </body>
    </html>


    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	pageContext.setAttribute("pAttr", "이순신");
    	request.setAttribute("rAttr", "신사임당");
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>액션 태그 - forward</title>
    </head>
    <body>
    	<h2>액션 태그를 이용한 포워딩</h2>
    	<jsp:forward page="/forwardActionTag/forwardSub.jsp"/>
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>포워드 결과</title>
    </head>
    <body>
    	<h2>포워드 결과</h2>
    	<ul>
    		<li>page 영역 : <%=pageContext.getAttribute("pAttr") %></li>
    		<li>request 영역 : <%=request.getAttribute("rAttr") %></li>
    	</ul>
    </body>
    </html>


    package kr.co.ezenac.bean;
    
    import java.sql.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) {
    		//super();
    		this.id = id;
    		this.pwd = pwd;
    		this.name = name;
    		this.email = email;
    	}
    	
    	//getter/setter 추가
    	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;
    	}
    }
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>회원 가입</title>
    	<script type="text/javascript">
    		function fn_sendMember() {
    			var frmMember = document.frmMember;
    			var id = frmMember.id.value;
    			var pwd = frmMember.pwd.value;
    			var name = frmMember.name.value;
    			var email = frmMember.email.value;		//입력한 값들을 얻음
    			
    			if(id.length == 0 || id=="") {
    				alert("아이디는 필수입니다.");
    			} else if(pwd.length == 0 || pwd=="") {
    				alert("비밀번호는 필수입니다.");
    			} else if(name.length == 0 || name=="") {
    				alert("이름은 필수입니다.");
    			} else if(email.length == 0 || email=="") {
    				alert("이메일은 필수입니다.");
    			} else {
    				frmMember.method = "post";			//전송 방법을 post로 지정함
    				frmMember.action = "member.jsp";		//서블릿 매핑 이름 지정
    				frmMember.submit();					//서블릿으로 전송함
    			}
    		}
    	</script>
    </head>
    <body>
    	<form name="frmMember" method="post" action="member.jsp">
    		<table>
    			<th>회원 가입창</th>
    			<tr>
    				<td>아이디</td>
    				<td><input type="text" name="id"></td>	 <!-- 입력한 ID를 서블릿으로 전송함 -->
    			</tr>
    			<tr>
    				<td>비밀번호</td>
    				<td><input type="password" name="pwd"></td>
    			</tr>
    			<tr>
    				<td>이름</td>
    				<td><input type="text" name="name"></td>
    			</tr>
    			<tr>
    				<td>이메일</td>
    				<td><input type="text" name="email"></td>
    			</tr>
    		</table>
    		<input type="button" value="가입하기" onclick="fn_sendMember()">
    		<input type="reset" value="다시입력">
    		<input type="hidden" name="command" value="addMember">
    	</form>
    </body>
    </html>
    <%@page import="java.util.List"%>
    <%@page import="kr.co.ezenac.bean.MemberDAO"%>
    <%@page import="kr.co.ezenac.bean.MemberBean"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        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 memberBean = new MemberBean(id, pwd, name, email);
    	MemberDAO memberDAO = new MemberDAO();
    	memberDAO.addMember(memberBean);
    	List<MemberBean> membersList = memberDAO.listMembers();
    	
    	
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>회원-목록</title>
    </head>
    <body>
    	<table align="center" width="100%">
    		<tr aligh="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 = 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>			
    		<%
    				}
    			}
    		%>
    					<tr height="1" bgcolor="#99ccff">
    						<td colspan="5"></td>
    					</tr>
    	</table>
    </body>
    </html>
    package kr.co.ezenac.bean;
    
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    
    public class MemberDAO {
    	private Connection conn;
    	private PreparedStatement pstmt;
    	private DataSource dataFactory;
    	
    	public MemberDAO() {
    		try {
    			Context ctx = new InitialContext();
    			Context envContext = (Context)ctx.lookup("java:/comp/env");		//JNDI에 접근하기 위해 기본경로를 지정
    			//톰캣 context.xml에 설정한 name 값인 jdbc/oracle을 이용해 톰캣이 미리 연결한 DataSource를 받아옴
    			dataFactory = (DataSource)envContext.lookup("jdbc/oracle");		
    		} catch (NamingException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	public List<MemberBean> listMembers() {
    		List<MemberBean> list = new ArrayList<MemberBean>();
    		
    		try {
    			conn = dataFactory.getConnection();	//DataSource를 이용해 DB에 연결함
    			
    			String query = "SELECT * FROM T_MEMBER";
    			System.out.println(query);
    			
    			pstmt = conn.prepareStatement(query);	//prepareStatement()메서드에 SQL문을 전달해 객체 생성함
    			ResultSet rs = pstmt.executeQuery();	//미리 설정한 SQL문을 실행함
    			
    			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);				//각 컬럼 값을 다시 MemberVO 객체의 속성에 설정함
    				
    				list.add(vo);							//설정된 MemberVO 객체를 다시 ArrayList에 저장함
    			}
    			
    			rs.close();
    			pstmt.close();
    			conn.close();
    			
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		
    		return list;				//조회한 레코드의 개수만큼 MemberVO 객체를 저장한 ArrayList를 반환함
    	}
    	
    	public void addMember(MemberBean MemberBean) {
    		try {
    			conn = dataFactory.getConnection();		// DataSource를 이용해 DB 연결
    			
    			String id = MemberBean.getId();			// 테이블에 저장할 회원 정보 받아옴
    			String pwd = MemberBean.getPwd();
    			String name = MemberBean.getName();
    			String email = MemberBean.getEmail();
    			
    			String query = "insert into t_member (id, pwd, name, email) values (?, ?, ?, ?)";
    			System.out.println("prepareStatement: " + query);
    			
    			pstmt = conn.prepareStatement(query);
    			
    			pstmt.setString(1, id);					//insert문의 ?에 순서대로 회원 정보 세팅
    			pstmt.setString(2, pwd);
    			pstmt.setString(3, name);
    			pstmt.setString(4, email);
    			
    			pstmt.executeUpdate();
    			pstmt.close();
    			
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    }


    이 이후로 회원가입창은 동일

    member.jsp를 수정해서 방식을 바꿔가며 출력 (memberForm.html에서 25행 member.jsp 숫자만 변경)

    member2.jsp

    <%@page import="java.util.List"%>
    <%@page import="kr.co.ezenac.bean.MemberDAO"%>
    <%@page import="kr.co.ezenac.bean.MemberBean"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    %>
    <%-- 유즈빈 액션태그로 id가 m인 MemberBean 객체 생성 --%>
    <jsp:useBean id="m" class="kr.co.ezenac.bean.MemberBean" scope="page" />
    
    <%
    	String id = request.getParameter("id");
    	String pwd = request.getParameter("pwd");
    	String name = request.getParameter("name");
    	String email = request.getParameter("email");
    	
    	//MemberBean memberBean = 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<MemberBean> membersList = memberDAO.listMembers();
    	
    	
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>회원-목록</title>
    </head>
    <body>
    	<table align="center" width="100%">
    		<tr aligh="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 = 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>			
    		<%
    				}
    			}
    		%>
    					<tr height="1" bgcolor="#99ccff">
    						<td colspan="5"></td>
    					</tr>
    	</table>
    </body>
    </html>


    member3.jsp

    <%@page import="java.util.List"%>
    <%@page import="kr.co.ezenac.bean.MemberDAO"%>
    <%@page import="kr.co.ezenac.bean.MemberBean"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    %>
    <%-- 유즈빈 액션태그로 id가 m인 MemberBean 객체 생성 --%>
    <jsp:useBean id="m" class="kr.co.ezenac.bean.MemberBean" scope="page" />
    
    <%-- 회원가입 창에서 전송된 동일한 이름의 매개변수에 해당되는 유즈빈 속성에 전송된 값을 설정함 --%>
    <jsp:setProperty property="id" name="m" value='<%=request.getParameter("id") %>' />
    <jsp:setProperty property="pwd" name="m" value='<%=request.getParameter("pwd") %>' />
    <jsp:setProperty property="name" name="m" value='<%=request.getParameter("name") %>' />
    <jsp:setProperty property="email" name="m" value='<%=request.getParameter("email") %>' />
    
    <%
    	MemberDAO memberDAO = new MemberDAO();
    	memberDAO.addMember(m);
    	List<MemberBean> membersList = memberDAO.listMembers();
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>회원-목록</title>
    </head>
    <body>
    	<table align="center" width="100%">
    		<tr aligh="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 = 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>			
    		<%
    				}
    			}
    		%>
    					<tr height="1" bgcolor="#99ccff">
    						<td colspan="5"></td>
    					</tr>
    	</table>
    </body>
    </html>


    member4.jsp

     

    <%@page import="java.util.List"%>
    <%@page import="kr.co.ezenac.bean.MemberDAO"%>
    <%@page import="kr.co.ezenac.bean.MemberBean"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    %>
    <%-- 유즈빈 액션태그로 id가 m인 MemberBean 객체 생성 --%>
    <jsp:useBean id="m" class="kr.co.ezenac.bean.MemberBean" scope="page" />
    
    <%-- 회원가입 창에서 전송된 동일한 이름의 매개변수에 해당되는 유즈빈 속성에 전송된 값을 설정함 --%>
    <jsp:setProperty property="id" name="m" param="id" />
    <jsp:setProperty property="pwd" name="m" param="pwd" />
    <jsp:setProperty property="name" name="m" param="name" />
    <jsp:setProperty property="email" name="m" param="email" />
    
    <%
    	MemberDAO memberDAO = new MemberDAO();
    	memberDAO.addMember(m);
    	List<MemberBean> membersList = memberDAO.listMembers();
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>회원-목록</title>
    </head>
    <body>
    	<table align="center" width="100%">
    		<tr aligh="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 = 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>			
    		<%
    				}
    			}
    		%>
    					<tr height="1" bgcolor="#99ccff">
    						<td colspan="5"></td>
    					</tr>
    	</table>
    </body>
    </html>


    member5.jsp

    <%@page import="java.util.List"%>
    <%@page import="kr.co.ezenac.bean.MemberDAO"%>
    <%@page import="kr.co.ezenac.bean.MemberBean"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    %>
    <%-- 유즈빈 액션태그로 id가 m인 MemberBean 객체 생성 --%>
    <jsp:useBean id="m" class="kr.co.ezenac.bean.MemberBean" scope="page" />
    <%-- 전송된 매개변수 이름과 빈 속성을 비교한 후 동일한 빈에 값을 자동으로 설정함
    	 와일드카드로 폼 값 한번에 설정하기 --%>
    <jsp:setProperty property="*" name="m"/>
    
    
    <%
    
    	MemberDAO memberDAO = new MemberDAO();
    	memberDAO.addMember(m);
    	List<MemberBean> membersList = memberDAO.listMembers();
    	
    %>
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>회원-목록</title>
    </head>
    <body>
    	<table align="center" width="100%">
    		<tr aligh="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 = 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>			
    		<%
    				}
    			}
    		%>
    					<tr height="1" bgcolor="#99ccff">
    						<td colspan="5"></td>
    					</tr>
    	</table>
    </body>
    </html>

     


    member6.jsp (단순출력)

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>회원 가입</title>
    </head>
    <body>
    	<form name="frmMember" method="post" action="member6.jsp">
    		<table>
    			<th>회원 가입창</th>
    			<tr>
    				<td>아이디</td>
    				<td><input type="text" name="id"></td>	 <!-- 입력한 ID를 서블릿으로 전송함 -->
    			</tr>
    			<tr>
    				<td>비밀번호</td>
    				<td><input type="password" name="pwd"></td>
    			</tr>
    			<tr>
    				<td>이름</td>
    				<td><input type="text" name="name"></td>
    			</tr>
    			<tr>
    				<td>이메일</td>
    				<td><input type="text" name="email"></td>
    			</tr>
    		</table>
    		<input type="submit" value="가입하기">
    		<input type="reset" value="다시입력">
    	</form>
    </body>
    </html>
    <%@page import="java.util.List"%>
    <%@page import="kr.co.ezenac.bean.MemberDAO"%>
    <%@page import="kr.co.ezenac.bean.MemberBean"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("utf-8");
    %>
    
    <jsp:useBean id="m" class="kr.co.ezenac.bean.MemberBean" scope="page" />
    <jsp:setProperty property="*" name="m"/>
    
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="UTF-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<title>회원-목록</title>
    </head>
    <body>
    	<table align="center" width="100%">
    		<tr aligh="center" bgcolor="#99ccff">
    			<td width="7%">아이디</td>
    			<td width="7%">비밀번호</td>
    			<td width="5%">이름</td>
    			<td width="11%">이메일</td>
    		</tr>
    		
    		<tr align="center">
    			<td><jsp:getProperty property="id" name="m"/></td>
    			<td><jsp:getProperty property="pwd" name="m"/></td>
    			<td><jsp:getProperty property="name" name="m"/></td>
    			<td><jsp:getProperty property="email" name="m"/></td>		
    		</tr>			
    					
    		<tr height="1" bgcolor="#99ccff">
    			<td colspan="5"></td>
    		</tr>
    	</table>
    </body>
    </html>

    '개발자 수업 > JSP' 카테고리의 다른 글

    21. 표현 언어(EL)  (0) 2021.12.15
    20. 게시판 만들기(모델1) 업로드 예정  (0) 2021.12.15
    17. Cookie  (0) 2021.12.08
    16. JSP 내장 객체(내장 변수)  (0) 2021.12.07
    15. JSP와 구성요소 + 연습  (0) 2021.12.07

    댓글