-
CRUD 웹애플리케이션 프로젝트Servlet 2019. 3. 11. 13:13
웹애플리케이션의 구조
프런트 컨트롤러설정
- 뷰에서 들어오는 모든 요청을 하나의 대표 컨트롤러가 우선적으로 실행되는 구조이다.
com.dev.controller.FrontController 클래스가 담당
모든 요청에대하여 URL 끝부분이 .do 요청이 들어 올때 마다 프런트 컨트롤러가 실행되게 설정할 것이므로 URL이 .do로 요청되도록 개발해야한다.
[1] web.xml 설정
1234567891011121314151617181920212223242526<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><display-name>CURD Test</display-name><servlet><servlet-name>front</servlet-name><servlet-class>com.dev.controller.FrontController</servlet-class><init-param><param-name>charset</param-name><param-value>UTF-8</param-value></init-param></servlet><servlet-mapping><servlet-name>front</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>cs [2]프런트 컨트롤러 객체
123456789101112131415161718192021222324252627282930313233343536373839404142package com.dev.controller;import java.io.IOException;import java.util.HashMap;import javax.security.auth.message.callback.PrivateKeyCallback.Request;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class FrontController extends HttpServlet{private static final long serialVersionUID = 1L;String charset = null;HashMap<String, Controller> list =null;@Overridepublic void init(ServletConfig config) throws ServletException {String charset = config.getInitParameter("charset");list = new HashMap<>();list.put("/memberInsert.do", new MemberInsertController());list.put("/memberSearch.do", new MemberSearchController());list.put("/memberUpdate.do", new MemberUpdateController());list.put("/memberDelete.do", new MemberDeleteController());list.put("/memberList.do", new MemberListController());}@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding(charset);String url = req.getRequestURI();String contextPath = req.getContextPath();String path = url.substring(contextPath.length());Controller subController = list.get(path);subController.execute(req,res);}}cs public void init(ServletConfig config) throws ServletException {
String charset = config.getInitParameter("charset");
list = new HashMap<>();
list.put("/memberInsert.do", new MemberInsertController());
list.put("/memberSearch.do", new MemberSearchController());
list.put("/memberUpdate.do", new MemberUpdateController());
list.put("/memberDelete.do", new MemberDeleteController());
list.put("/memberList.do", new MemberListController());
}
현재 서블릿은 프런트 컨트롤러 로서 동작하는 객체 프런트 컨트롤러가 가져야 할 기능중에 하나는 클라이언트 요청에대하여 실제로
처리하는 컨트롤러 (서브 컨트롤러)를 실행하는 기능이다.
list는 클라이언트 요청에 대하여 서브컨트롤러에 대한 정보를 가지는 HashMap 객체이다.
HashMap은 정보가 key 와 value 형태로 저장
키값은 요청해오는 URL에서 Contex path (웹애플리케이션 이름) 다음 값으로 지정한다.
http://localhost:9090/dev/memberInsert.do 로 요청이 들어오면 일반적으로 key는 /memberInsert.do 이며
아까 리스트에 해당하는 value값을 new MemberInsertContller()로 지정하였으므로 memberInsert.do
요청은 서브 컨트롤러는 MemberController객체이다.
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding(charset);
String url = req.getRequestURI();
String contextPath = req.getContextPath();
String path = url.substring(contextPath.length());
Controller subController = list.get(path);
subController.execute(req,res);
}
service는 요청이 있을때마다 수행됨
String url = req.getRequestURI();
String contextPath = req.getContextPath();
String path = url.substring(contextPath.length());
이 부분은 클라이언트 요청URL에서 Key를 추출하는 코드. 만일 요청된 URL이 http://localhost:9090/dev/memberInsert.do 이면
각 메소드 결괏값은 다음과 같다.
request.getRequestURI -> /dev/memberInser.do
request.getContextPath -> /dev
contextPath.length -> 4
url.substring(4) -> /memeberInsert.do
이렇게 잘라낸 키값을 넣는다 .
그리고 Controller 객체를 실행시킴
[3]Controller 객체
Controller 인터페이스는 Controller 객체에서 컨트롤러 기능을 구현하는 메소드를 통일하기 위해 만든 객체이다.
123456789101112package com.dev.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public interface Controller {public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException;}cs [4] VO 객체
클래스 회원들의 정보를 저장 목적으로 만든 VO (Value Object) 객체이다.VO 객체는 회원정보를 생성할때 입력한 값을 MemberVO 객체에 담아 데이터 베이스까지 전달하며 ,회원정보를 검색할때에도 데이터 베이스 member 테이블에 있는 회원 정보를 MemberVO 객체에 담아 출력 뷰페이지에 전달할 목적으로 사용한다.12345678910111213141516171819202122232425262728293031323334353637package com.dev.vo;public class MemberVO {private String id;private String passwd;private String name;private String mail;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getPasswd() {return passwd;}public void setPasswd(String passwd) {this.passwd = passwd;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getMail() {return mail;}public void setMail(String mail) {this.mail = mail;}}cs [5] 출력 뷰 처리 객체
MVC 디자인 패턴으로 개발 할 때 컨트롤러에서 처리해야 하는 기능 중 마지막은 처리 결과(Output View) 페이지로 이동해야햐는 작업이다.HttpUtil이라는 클래스 파일을 생성하고 다음과 같이 작성한다.
12345678910111213141516171819202122package com.dev.controller;import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HttpUtil {public static void forward(HttpServletRequest request, HttpServletResponse response,String path) {try {RequestDispatcher dispatcher = request.getRequestDispatcher(path);dispatcher.forward(request, response);} catch (ServletException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}cs [6] 공통 페이지
서비스가 완료되면 MVC Model2를 따르기 때문에 하나의 서비스 완료되면, 출력 뷰 페이지로 이동한다.모든 페이지마다 중복된 작업을 하지 않도록 home.jsp 파일에서 /index.jsp파일로 이동하는 링크를 처리하고이 작업이 필요한 페이지에서는 home.jsp를 include 처리한다.회원 정보 생성
컨트롤러 : com.dev.controller.MemberInsertController.java
입력 뷰 : WebContent/memberInsert.jsp
출력 뷰 : WebContent/result/memberOutput.jsp
[1] memberInsert.jsp
12345678910111213141516171819202122<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>생성</title></head><body><h3>회원 가입</h3>${error }<form action="memberInsert.do" method="post">ID: <input type="text" name="id"><br>비밀번호 : <input type="password" name="passwd"><br>이름 : <input type="text" name="name"><br>E-Mail :<input type="text" name="mail"><br><input type="submit" value="가입"></form></body></html>cs ${error }이 코드는 request.getAttribute("error")와 동일한 실행문이다. 회원정보를 하나라도 입력하지 않은 상태에서 요청했을때 현재페잊로 돌아올때 오류 메시지를 저장해서 보낼것[2] MemberInsertController.java
/memberInset.do 요청을 처리하는 객체12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849package com.dev.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dev.service.MemberService;import com.dev.vo.MemberVO;public class MemberInsertController implements Controller{@Overridepublic void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//파라미터 추출String id = req.getParameter("id");String passwd = req.getParameter("passwd");String name = req.getParameter("name");String mail = req.getParameter("mail");//유효성 체크if(id.isEmpty() || passwd.isEmpty() || name.isEmpty() || mail.isEmpty()) {req.setAttribute("error","모든 항목을 빠집없이 입력해 주세요");HttpUtil.forward(req, resp, "/memberInsert.jsp");return;}//VO 객체에 데이터 바인딩;MemberVO member = new MemberVO();member.setId(id);member.setPasswd(passwd);member.setName(name);member.setMail(mail);//Service 객체의 메소드 호출MemberService service = MemberService.getInstance();service.memberInsert(member);//output 뷰 페이지로 이동req.setAttribute("id",id);HttpUtil.forward(req, resp, "/result/memberInsertOutput.jsp");}}cs [3] MemberService.java
memberService 클래스는 회원에 관한 모든 서비스 기능을 처리하는 모델 객체이다.com.dev.service 패키지 아래 "MemberService"라는 이름의 클래스파일을 생성하고 다음과 같이 작성한다.1234567891011121314151617181920212223package com.dev.service;import com.dev.dao.MemberDAO;import com.dev.vo.MemberVO;public class MemberService {private static MemberService service= new MemberService();public MemberDAO dao = MemberDAO.getInstance();private MemberService(){}public static MemberService getInstance() {return service;}public void memberInsert(MemberVO member) {dao.memberInsert(member);}}cs private static MemberService service= new MemberService();
서비스 객체를 생성해서 service 멤버변수에 저장한다. service 변수의 접근자는 private
따라서 현재 클래스 내에서만 접근할 수 있고 , 외부에서 접근할 수 없다.
외부에서 값을 수정하는 것을 막기위해 private로 선언함
private MemerService (){}
생성자도 private로 선언 외부에서 생성자에 접근할 수 없다는 것은 객체를 생성 할 수 없다는 것을 의미
public static MemberService getInstance(){
return service;
}
MeberService 객체를 외부에서 사용하기 위해 선언한 메소드이다. getInstance() 메소드는 public static으로 선언했으므로
외부에서 MemberService.getInstance() 형식으로 바로 사용할 수있다.
MemberService 객체가 필요할 때는 getInstance() 메소드를 사용하여 이미 만들어진 객체를 사용한다.
public MemberDAO dao = MemberDAO.getInstance();
데이터에 접근하는 객체를 하나 생성
public void memberInsert(MemberVO member) {
dao.memberInsert(member);
}
MemberVO에 저장된 데이터를 member테이블에 삽입
[4]MemberDAO.java
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192package com.dev.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.dev.vo.MemberVO;public class MemberDAO {public static MemberDAO dao = new MemberDAO();private MemberDAO() {};//memeberDAO를 하나만 사용하기 위해 사용하는 코드public static MemberDAO getInstance() {return dao;}//DB와 연결하고 Connection 객체를 얻어내기 위한 코드public Connection connect() {Connection conn =null;try {Class.forName("oracle.jdbc.driver.OracleDriver");conn= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "scott", "tiger");} catch (ClassNotFoundException e) {e.printStackTrace();System.out.println("오류발생 : "+e);} catch (SQLException e) {e.printStackTrace();System.out.println("오류발생 : "+e);}return conn;}//자원 해제작업public void close(Connection conn, PreparedStatement ps, ResultSet rs) {if(rs!=null) {try {rs.close();} catch (SQLException e) {System.out.println("오류발생"+e);}}close(conn,ps);}//자원 해제작업public void close(Connection conn, PreparedStatement ps) {if(ps!=null) {try {ps.close();} catch (SQLException e) {System.out.println("오류발생"+e);}}if(conn!=null) {try {conn.close();} catch (SQLException e) {System.out.println("오류발생"+e);}}}//MemberVO를 객체로 받아 member테이블에 삽입하는 메소드public void memberInsert(MemberVO memeber) {Connection conn = null;PreparedStatement pstmt = null;conn=connect();try {pstmt = conn.prepareStatement("insert into member values(?,?,?,?)");pstmt.setString(1, memeber.getId());pstmt.setString(2, memeber.getPasswd());pstmt.setString(3, memeber.getName());pstmt.setString(4, memeber.getMail());pstmt.executeUpdate();} catch (SQLException e) {System.out.println("오류발생"+e);}finally {close(conn, pstmt);}}}cs [5]memberInsertOutput.jsp
1234567891011121314<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><h3>${id }님이 가입이 완료되 었습니다.</h3><%@ include file="home.jsp"%></body></html>cs 회원 정보 검색
memberSearch.jsp
123456789101112131415161718<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>조회</title></head><body><h3>회원 정보 검색</h3>${error }<form action="memberSearch.do" method="post">ID: <input type="text" name="id"><input type="hidden" name ="job" value="search"><input type="submit" value="검색"></form></body></html>cs MemberSearchController.java
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152package com.dev.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dev.service.MemberService;import com.dev.vo.MemberVO;public class MemberSearchController implements Controller{@Overridepublic void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("멤버 컨트롤러 시작");//parameter를 추출String id = req.getParameter("id");String job = req.getParameter("job");String path =null;if(job.equals("search")) {path="/memberSearch.jsp";}else if(job.equals("update")) {path="/memberUpdate.jsp";}else if(job.equals("delete")) {path="/memberDelete.jsp";}//유효성 체크if(id.isEmpty()) {req.setAttribute("error","ID를 입력해 주세요");HttpUtil.forward(req, resp, path);return;}//Service 객체의 메소드 호출MemberService service = MemberService.getInstance();MemberVO member = service.memberSearch(id);//Output View 페이지로 이동if(member == null) req.setAttribute("result","검색된 정보가 없습니다.");req.setAttribute("member",member);if(job.equals("search")) path="/result/memberSearchOutput.jsp";System.out.println("멤버 컨트롤러 끝 :"+path);HttpUtil.forward(req, resp, path);}}cs memberService.java
12345public MemberVO memberSearch(String id) {System.out.println("memberSearchService");MemberVO member = dao.memberSearch(id);return member;}cs 추가
MemberDAO.java
12345678910111213141516171819202122232425262728293031// id를 받아 Member 정보를 검색하는 메소드public MemberVO memberSearch(String id) {System.out.println("memberSearchDAO 시작");Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;MemberVO member = null;try {conn = connect();pstmt = conn.prepareStatement("select * from member where id = ?");pstmt.setString(1, id);rs = pstmt.executeQuery();if (rs.next()) {member = new MemberVO();member.setId(rs.getString(1));member.setPasswd(rs.getString(2));member.setName(rs.getString(3));member.setMail(rs.getString(4));}} catch (SQLException e) {System.out.println("오류발생"+ e);e.printStackTrace();}finally {close(conn,pstmt,rs);}System.out.println("memberSearchDAO 끝");return member;}cs 이걸 추가
memberSearchOutput.jsp
12345678910111213141516171819202122232425<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>검색 결과</title></head><body><h3>검색 결과</h3><%String result = (String)request.getAttribute("result");if(result!=null){out.print(result+"<P>");}else{%><h3>${member.id} / ${member.passwd} / ${member.name }/${member.mail }</h3><%} %><%@ include file="home.jsp" %></body></html>scs 회원정보 수정
memberUpdate.jsp
1234567891011121314151617181920212223242526272829303132<%@page import="com.dev.vo.MemberVO"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><h3>수정정보 검색</h3>${error }<form action="memberSearch.do" method="post">ID: <input type="text" name="id"><input type="hidden" name ="job" value="update"><input type="submit" value="검색"></form><% MemberVO member =(MemberVO)request.getAttribute("member");if (member!=null){%><form action="memberUpdate.do" method="post"><input type="text" name ="id" readonly="readonly" value="${member.id}"><br><input type="password" name ="passwd" value="${member.passwd}"><br><input type="text" name ="name" value="${member.name}"><br><input type="text" name ="mail" value="${member.mail}"><br><input type="submit" value="수정"></form><%}else{ %><p>${result}</p><%} %></body></html>cs memberUpdateController.java
12345678910111213141516171819202122232425262728293031323334353637383940414243444546package com.dev.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dev.service.MemberService;import com.dev.vo.MemberVO;public class MemberUpdateController implements Controller{@Overridepublic void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//Parameter 추출String id = req.getParameter("id");String passwd= req.getParameter("passwd");String name = req.getParameter("name");String mail = req.getParameter("mail");//유효성 체크if(id.isEmpty() || passwd.isEmpty() || name.isEmpty() || mail.isEmpty()) {req.setAttribute("error","모든 항목을 빠짐없이 입력해 주세요");HttpUtil.forward(req, resp, "/memberUpdate.jsp");return;}//VO객체에 데이타 바인딩MemberVO member = new MemberVO();member.setId(id);member.setPasswd(passwd);member.setName(name);member.setMail(mail);//Service 객체의 메소드 호춣MemberService service = MemberService.getInstance();service.memberUpdate(member);//Output View 페이지로 이동req.setAttribute("id",id);HttpUtil.forward(req, resp, "/result/memberUpdateOutput.jsp");}}cs MemberService.java
123public void memberUpdate(MemberVO member) {dao.memberUpdate(member);}cs 추가
MemeberDAO.java
123456789101112131415161718192021//멤버정보를 수정public void memberUpdate(MemberVO member) {Connection conn = null;PreparedStatement pstmt = null;try {conn=connect();pstmt = conn.prepareStatement("update member set passwd=?, name=?, mail=? where id=?");pstmt.setString(1,member.getPasswd());pstmt.setString(2,member.getName());pstmt.setString(3,member.getMail());pstmt.setString(4,member.getId());pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();System.out.println("오류 발생 : " + e);}finally {close(conn, pstmt);}}cs 추가
memberUpdateOutput.jsp
123456789101112131415<%@page import="com.dev.vo.MemberVO"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>수정 결과</title></head><body><h3>${id} 님 정보 수정이 완료되었습니다.</h3><%@ include file="home.jsp" %></body></html>cs 회원 정보 삭제
memberDelete.jsp
123456789101112131415161718192021222324252627282930313233<%@page import="com.dev.vo.MemberVO"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>삭제</title></head><body><h3>삭제 정보 검색</h3>${error }<form action="memberSearch.do" method="post">ID : <input type="text" name="id"><input type="hidden" name="job" value="delete"><input type="submit" value="검색"></form><% MemberVO member = (MemberVO)request.getAttribute("member");if(member!=null){%><h3>검색 정보 결과</h3>${member.id} / ${member.passwd} / ${member.name }/${member.mail}<p><form action="memberDelete.do" method="post"><input type="hidden" value="${member.id}"/><input type="submit" value="삭제"></form><%}else{%>${result}<%} %></body></html>cs MemberDeleteController.java
12345678910111213141516171819202122232425package com.dev.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dev.service.MemberService;public class MemberDeleteController implements Controller {@Overridepublic void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//파라미터 추출String id = req.getParameter("id");//Service 객체의 메소드 호출MemberService service = MemberService.getInstance()service.memberDelete(id);//OutputView로 이동HttpUtil.forward(req, resp, "/result/memberDeleteOutput.jsp");}}cs MemberService.java
123public void memberDelete(String id) { dao.memberDelete(id); }Colored by Color Scriptercs 추가
MemberDAO.java
1234567891011121314151617//멤버 정보 삭제public void memberDelete(String id) {Connection conn = null;PreparedStatement pstmt = null;conn= connect();try {pstmt = conn.prepareStatement("delete from member where id =?");pstmt.setString(1, id);pstmt.executeUpdate();} catch (SQLException e) {System.out.println("오류 발생 : "+e);e.printStackTrace();}finally {close(conn,pstmt);}}cs memberDeleteOutput.jsp
12345678910111213<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>삭제 결과</title></head><body><h3>회원정보 삭제가 완료되었습니다!</h3><%@ include file="home.jsp" %></body></html>cs 모든 회원정보 보기
MemberListController.java
12345678910111213141516171819202122232425package com.dev.controller;import java.io.IOException;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.dev.service.MemberService;import com.dev.vo.MemberVO;public class MemberListController implements Controller {@Overridepublic void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {MemberService service = MemberService.getInstance();ArrayList<MemberVO> list = service.memberList();req.setAttribute("list", list);HttpUtil.forward(req, resp, "/result/memberListOutput.jsp");}}cs MemberDAO.java
1234567891011121314151617181920212223242526272829//멤버 리스트public ArrayList<MemberVO> memberList(){ArrayList<MemberVO> list = new ArrayList<>();Connection conn = null;PreparedStatement pstmt =null;ResultSet rs = null;MemberVO member = null;try {conn=connect();pstmt =conn.prepareStatement("select * from member");rs= pstmt.executeQuery();while(rs.next()) {member = new MemberVO();member.setId(rs.getString(1));member.setPasswd(rs.getString(2));member.setName(rs.getString(3));member.setMail(rs.getString(4));list.add(member);}} catch (SQLException e) {System.out.println("오류 발생 : "+e);}finally {close(conn,pstmt,rs);}return list;}cs 추가
memberListOutput.jsp
12345public ArrayList<MemberVO> memberList() {ArrayList<MemberVO> list = dao.memberList();return list;}cs memberListOutput.jsp
1234567891011121314151617181920212223242526272829303132<%@page import="com.dev.vo.MemberVO"%><%@page import="java.util.ArrayList"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><%ArrayList<MemberVO> list = (ArrayList<MemberVO>)request.getAttribute("list");if(!list.isEmpty()){ %><table border="1"><tr><th>ID</th><th>비밀번호</th><th>이름</th><th>이메일</th></tr><% for(MemberVO member : list){%><tr><td><%=member.getId()%></td><td><%=member.getPasswd() %></td><td><%=member.getName() %></td><td><%=member.getMail() %></td></tr><%} %><%}else{ out.print("<h3>등록된 회원정보가 없습니다.</h3>");} %></table><%@ include file="home.jsp" %></body></html>cs Index.jsp
1234567891011121314151617<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><h1>인덱스페이지</h1><a href="memberInsert.jsp">회원 가입</a><a href="memberDelete.jsp">회원 탈퇴</a><a href="memberSearch.jsp">회원 검색</a><a href="memberUpdate.jsp">회원 수정</a><a href="memberList.do">회원 리스트</a></body></html>cs 'Servlet' 카테고리의 다른 글
JSTL 사용시 주의점 (0) 2019.05.09 JSTL (0) 2019.03.07 EL 요약 정리 (0) 2019.03.07 EL(Expression Language) (0) 2019.03.06 데이터베이스요약 (0) 2019.03.06