-
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