매료매료 2019. 8. 6. 19:06

주요내용 : 서블릿 포워드, 바인딩, ServletContext, ServletRequest, HttpSession, ServletConfig, 웹페이지 연결(쿠키, 세션), 서블릿의 Scope

@@@@ 0806 과제

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<script type="text/javascript">
		function fn_validate(){
			var frmLogin = document.frmLogin;
			var cust_id = frmLogin.cust_id.value;
			
			if(cust_id.length == 0 || cust_id == ""){
				alert("고객번호는 필수입니다.");
			} else {
				frmLogin.method = "get";
				frmLogin.action = "list";
				frmLogin.submit();
			}
		}
	</script>
<title>고객 주문 정보 조회</title>
</head>
<body>
	<form name = "frmLogin" method = "get" action="customer" encType="UTF-8">
		고객 주문번호 조회 : <input type = "text" name = "cust_id"><br>
		<input type = "button" onClick="fn_validate()" value = "조회">
		<input type = "reset" value = "다시 입력"/>
	</form>
</body>
</html>

====================

package Week05.day0805;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CustomerServlet
 */
@WebServlet("/customer")
public class CustomerServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		CustomerDAO dao = new CustomerDAO();
		String command = request.getParameter("command");
		
		//주문조회 화면
		if(command != null && command.equals("findOrder"))
		{
			String input_id = request.getParameter("order_num");
			List list2 = dao.findOrder(input_id); // listMembers메소드로 회원정보를 조회
		
			out.print("<html><body>");
			out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
			//2. 주문번호 제품명 항목수량 항목가격 (삭제)
			// OI.order_num, OI.prod_id, OI.quantity, Oi.item_price 삭제
			out.print("<td>주문번호</td><td>주문상품</td><td>주문수량</td><td>상품가격</td><td>삭제</td></tr>");
		
			for(int i = 0; i<list2.size(); i++)
			{
				CustomerVO customerVO = (CustomerVO) list2.get(i);
				String order_num = customerVO.getOrder_num();
				String prod_name = customerVO.getProd_name();
				String quantity = customerVO.getQuantity();
				String item_price = customerVO.getItem_price();
				String order_item = customerVO.getOrder_item();
				out.print("<tr><td>" + order_num + "</td><td>" + prod_name +"</td><td>" + quantity + "</td><td>" + item_price + "</td><td>" + "<a href='/pro07/customer?command=delOrder&order_num=" + order_num + "&order_item=" + order_item + "'> 삭제 </a></td></tr>");
                // 주문 조회화면에서 삭제후 재조회시, 오더넘버와 오더아이템 번호 둘다 받아서 다시 조회해야함.
			}
			out.print("</table></body></html>");
			out.print("<a href ='/pro07/customer.html'>돌아가기</a>");
		} else if (command !=null && command.equals("delCustomer")) // 3. 고객삭제  delCustomer
		{
			String input_id = request.getParameter("cust_id"); // id만 받아서 삭제
			dao.delCustomer(input_id);
			
			List list = dao.listMembers(input_id);
			
			out.print("<html><body>");
			out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
			//1. 고객번호, 고객이름, 고객주소, (주문조회), (삭제)
			// C.cust_id, C.cust_name, C.cust_address, OI.order_num, 삭제
			out.print("<td>고객번호</td><td>고객성명</td><td>고객주소</td><td>주문상품번호</td><td>삭제</td></tr>");
			
			for(int i = 0; i<list.size(); i++)
			{
				CustomerVO customerVO = (CustomerVO) list.get(i);
				String cust_id = customerVO.getCust_id();
				String cust_name = customerVO.getCust_name();
				String cust_address = customerVO.getCust_address();
				String order_num = customerVO.getOrder_num();
				out.print("<tr><td>" + cust_id + "</td><td>" + cust_name +"</td><td>" + cust_address + "</td><td>" + "<a href='/pro07/customer?command=findOrder&order_num=" + order_num + "'> 주문조회 </a></td><td>" + "<a href='/pro07/customer?command=delCustomer&cust_id=" + cust_id + "'> 삭제 </a></td></tr>");
			}
			out.print("</table></body></html>");
			out.print("<a href ='/pro07/customer.html'>돌아가기</a>");
		} else if (command !=null && command.equals("delOrder")) // 4. 주문삭제  delOrder
		{
//			String input_id = request.getParameter("cust_id"); // input_id 는 처음 조회했던 고객번호 입력값
			// 주문번호와 주문항목번호값을 파라미터로 받아서 삭제실행
			String order_num = request.getParameter("order_num");
			String order_item = request.getParameter("order_item");
			dao.delOrder(order_num, order_item);
			
			List list2 = dao.findOrder(order_num); // 삭제 후 남은 주문 리스트 조회위해 주문번호값을 다시 넣음.
		
			out.print("<html><body>");
			out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
			//2. 주문번호 제품명 항목수량 항목가격 (삭제)
			// OI.order_num, OI.prod_id, OI.quantity, Oi.item_price 삭제
			out.print("<td>주문번호</td><td>주문상품</td><td>주문수량</td><td>상품가격</td><td>삭제</td></tr>");
		
			for(int i = 0; i<list2.size(); i++)
			{
				CustomerVO customerVO = (CustomerVO) list2.get(i);
				String order_num1 = customerVO.getOrder_num();
				String prod_name = customerVO.getProd_name();
				String quantity = customerVO.getQuantity();
				String item_price = customerVO.getItem_price();
				String order_item1 = customerVO.getOrder_item();
                // 주문번호와 주문항복번호 값을 넣어서 다시 조회.(삭제 후 남은 리스트 조회위해)
				out.print("<tr><td>" + order_num1 + "</td><td>" + prod_name +"</td><td>" + quantity + "</td><td>" + item_price + "</td><td>" + "<a href='/pro07/customer?command=delOrder&order_num=" + order_num1 + "&order_item=" + order_item1 + "'> 삭제 </a></td></tr>");
			}
			out.print("</table></body></html>");
			out.print("<a href ='/pro07/customer.html'>돌아가기</a>");
		}
	}

}

===========================

package Week05.day0805;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CusServlet
 */
@WebServlet("/list")
public class CusServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		CustomerDAO dao = new CustomerDAO();
		String input_id = request.getParameter("cust_id");
		List list = dao.listMembers(input_id); // listMembers메소드로 회원정보를 조회
			
		out.print("<html><body>");
		out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
		//1. 고객번호, 고객이름, 고객주소, (주문조회), (삭제)
		// C.cust_id, C.cust_name, C.cust_address, OI.order_num, 삭제
		out.print("<td>고객번호</td><td>고객성명</td><td>고객주소</td><td>주문상품번호</td><td>삭제</td></tr>");
			
		for(int i = 0; i<list.size(); i++)
		{
			CustomerVO customerVO = (CustomerVO) list.get(i);
			String cust_id = customerVO.getCust_id();
			String cust_name = customerVO.getCust_name();
			String cust_address = customerVO.getCust_address();
			String order_num = customerVO.getOrder_num();
			out.print("<tr><td>" + cust_id + "</td><td>" + cust_name +"</td><td>" + cust_address + "</td><td>" + "<a href='/pro07/customer?command=findOrder&order_num=" + order_num + "'> 주문조회 </a></td><td>" + "<a href='/pro07/customer?command=delCustomer&cust_id=" + cust_id + "'> 삭제 </a></td></tr>");
		}
		out.print("</table></body></html>");
	}

}

=======================

package Week05.day0805;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class CustomerDAO {
	private Connection con;
	private PreparedStatement pstmt; // 실무에선 PreparedStatement를 더 많이씀.
	private DataSource dataFactory;
	
	public CustomerDAO()
	{
		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(String input_id)
	{
		List list = new ArrayList();
		try
		{
			con = dataFactory.getConnection();
			String query = "SELECT C.cust_id, C.cust_name, C.cust_address, OI.order_num "
					+ "FROM customers C, orders O, orderitems OI "
					+ "WHERE OI.order_num = O.order_num " 
					+ "AND O.cust_id = C.cust_id " 
					+ "AND C.cust_id LIKE " + "'"+input_id+"%'";
			System.out.println("preparedStatement : " + query);
			pstmt = con.prepareStatement(query); // 파생된 SQL 재사용. preparedStatement 메소드에 sql문을 전달해 prepareStatement객체를 생성. 
			ResultSet rs = pstmt.executeQuery(); // sql문으로 회원 정보를 조회
			while(rs.next())
			{
				// 조회한 레코드의 각 컬럼 값을 받아옴.
				String cust_id = rs.getString("cust_id"); // " " 안에는 컬럼명이 와야함.!!!!!!!!!!!!!!
				String cust_name =rs.getString("cust_name");
				String cust_address = rs.getString("cust_address");
				String order_num = rs.getString("order_num");
				// 각 컬럼 값을 다시 MemberVO 객체의 속성에 설정.
				CustomerVO vo = new CustomerVO();
				vo.setCust_id(cust_id);
				vo.setCust_name(cust_name);
				vo.setCust_address(cust_address);
				vo.setOrder_num(order_num);
				list.add(vo); // 설정된 MemberVO 객체를 다시 ArrayList에 저장.
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return list; // 조회한 레코드의 개수만큼 MemberVO객체를 저장한 ArrayList를 반환.
	}
	
	public List findOrder(String input_id)
	{
		List list2 = new ArrayList();
		try
		{
			// 2. 주문번호 제품명 항목수량 항목가격 (삭제)
			// select OI.order_num, OI.prod_id, OI.quantity, Oi.item_price -- OI.order_num을 위에서 입력받는 값으로 연결?
			// from orderitems OI;
			con = dataFactory.getConnection();
            // ★★★★★★ order_item 값이 조회화면에는 뜨진 않지만, 뒤에 주문조회 화면에서 삭제를 위해 값을 받아오기 위해, 쿼리문에 넣음
			String query = " SELECT O.order_num, P.prod_name, OI.quantity, OI.item_price, OI.order_item "
						 + " FROM orderitems OI, orders O, products P, customers C "
						 + " WHERE OI.prod_id = P.prod_id "
					  	 + " AND OI.order_num = O.order_num "
					  	 + " AND O.cust_id = C.cust_id "
						 + " AND OI.order_num = " + "'" + input_id + "'";
			System.out.println("preparedStatement : " + query);
			
			pstmt = con.prepareStatement(query); // 파생된 SQL 재사용. preparedStatement 메소드에 sql문을 전달해 prepareStatement객체를 생성. 
			ResultSet rs = pstmt.executeQuery(); // sql문으로 회원 정보를 조회
			while(rs.next())
			{
				// 조회한 레코드의 각 컬럼 값을 받아옴.
				String order_num = rs.getString("order_num"); // " " 안에는 컬럼명이 와야함.!!!!!!!!!!!!!!
				String prod_name =rs.getString("prod_name");
				String quantity = rs.getString("quantity");
				String item_price = rs.getString("item_price");
				String order_item = rs.getString("order_item");
				// 각 컬럼 값을 다시 MemberVO 객체의 속성에 설정.
				CustomerVO vo = new CustomerVO();
				vo.setOrder_num(order_num);
				vo.setProd_name(prod_name);
				vo.setQuantity(quantity);
				vo.setItem_price(item_price);
				vo.setOrder_item(order_item);
				System.out.println("실행로그확인 : " + order_item);
				list2.add(vo); // 설정된 MemberVO 객체를 다시 ArrayList에 저장.
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return list2; // 조회한 레코드의 개수만큼 MemberVO객체를 저장한 ArrayList를 반환.
	}
	
	public void delCustomer(String input_id)
	{
		try
		{
			con = dataFactory.getConnection();
			String query = "ALTER TABLE OrderItems DROP CONSTRAINT FK_OrderItems_Orders"
				     + "ALTER TABLE OrderItems DROP CONSTRAINT FK_OrderItems_Products"
				     + "ALTER TABLE Orders DROP CONSTRAINT FK_Orders_Customers"
				     + "ALTER TABLE Products DROP CONSTRAINT FK_Products_Vendors "
				     + "delete from customers" + " where cust_id=? ";
			System.out.println("prespareStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, input_id);
			pstmt.executeUpdate();
			pstmt.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public void delOrder(String input_id, String order_item)
	{
		try
		{
			con = dataFactory.getConnection();
			
			String query = "delete from Orderitems";
			query += " where order_num = '" + input_id + "'";
			query += " and order_item = '" + order_item + "'";
            // ★★★★ 주문번호와 주문항목번호를 둘다 넣음(주문번호만 넣으면 모든 주문번호가 다 삭제되므로)
			System.out.println("prespareStatement: " + query);
			pstmt = con.prepareStatement(query);
//			pstmt.setString(1, input_id);
//			pstmt.setString(2, order_item);
			pstmt.executeUpdate();
			pstmt.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}


}

========================

package Week05.day0805;

public class CustomerVO {
	// 1. 고객번호, 고객이름, 고객주소, (주문조회), (삭제)
	// 2. 주문번호 제품명 항목수량 항목가격 (삭제)
	// C.cust_id, C.cust_name, C.cust_address, OI.order_num
	// OI.order_num, OI.prod_id, OI.quantity, Oi.item_price
	private String cust_id;
	private String cust_name;
	private String cust_address;
	private String order_num;
	private String prod_name;
	private String quantity;
	private String item_price;
	private String order_item;

	public CustomerVO() {System.out.println("CustomerVO 생성자 호출");}

	public String getCust_id() {
		return cust_id;
	}

	public void setCust_id(String cust_id) {
		this.cust_id = cust_id;
	}

	public String getCust_name() {
		return cust_name;
	}

	public void setCust_name(String cust_name) {
		this.cust_name = cust_name;
	}

	public String getCust_address() {
		return cust_address;
	}

	public void setCust_address(String cust_address) {
		this.cust_address = cust_address;
	}

	public String getOrder_num() {
		return order_num;
	}

	public void setOrder_num(String order_num) {
		this.order_num = order_num;
	}

	public String getProd_name() {
		return prod_name;
	}

	public void setProd_name(String prod_name) {
		this.prod_name = prod_name;
	}

	public String getQuantity() {
		return quantity;
	}

	public void setQuantity(String quantity) {
		this.quantity = quantity;
	}

	public String getItem_price() {
		return item_price;
	}

	public void setItem_price(String item_price) {
		this.item_price = item_price;
	}

	public String getOrder_item() {
		return order_item;
	}

	public void setOrder_item(String order_item) {
		this.order_item = order_item;
	}
	
	
	
}


=========================================
@@@@ 0806진도
package sec01.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class FirstServlet
 */
@WebServlet("/first")
public class FirstServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		request.setAttribute("name", "홍길동");
		response.sendRedirect("second?name=홍길동&age=30");
		
		System.out.println("Redirect후 호출");
		
	}

}

------------------

package sec01.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SecondServlet
 */
@WebServlet("/second")
public class SecondServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		String name = (String) request.getAttribute("name");
		String age = (String) request.getAttribute("age");
		System.out.println("name : " + name);
		
		out.println("<html><body>");
		out.println("sendRedirect를 이용한 redirect 실습입니다.");
		out.println("</body></html>");
	}

}

-----------------------
package sec03.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class FirstServlet
 */
@WebServlet("/first2")
public class FirstServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		request.setAttribute("address", "서울시 성북구");
		
		RequestDispatcher dispatch = request.getRequestDispatcher("second2");
		dispatch.forward(request, response);
		
	}

}

---------------------------

package sec03.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SecondServlet
 */
@WebServlet("/second2")
public class SecondServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		String address = (String)request.getAttribute("address"); 
		
		out.println("<html><body>");
		out.println("주소 : " + address);
		out.println("<br>");
		out.println("dispatch를 이용한 forward 실습입니다.");
		out.println("</body></html>");
	}

}

---------------------------------

package sec04.ex03;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ViewServlet
 */
@WebServlet("/viewMembers")
public class ViewServlet extends HttpServlet { // forward로 화면에 뿌려주는 Servlet
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
        //바인딩해서 넘어온 request에서 회원정보를 가져온다.
		List memberslist = (List) request.getAttribute("membersList");
			
		out.print("<html><body>");
		out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
		out.print("<td>아이디</td><td>비밀번호</td><td>이름</td><td>이메일</td><td>가입일</td><td>삭제</td></tr>");
			
		for(int i = 0; i<memberslist.size(); i++)
		{
			MemberVO memberVO = (MemberVO) memberslist.get(i);
			String id = memberVO.getId();
			String pwd = memberVO.getPwd();
			String name = memberVO.getName();
			String email = memberVO.getEmail();
			Date joinDate = memberVO.getJoinDate();
			out.print("<tr><td>" + id + "</td><td>" + pwd +"</td><td>" + name + "</td><td>" +  email + "</td><td>" + joinDate + "</td><td>" + "<a href='/pro07/member3?command=delMember&id=" + id + "'> 삭제 </a></td></tr>");
		}
		out.print("</table></body></html>");
		out.print("<a href='/pro07/memberForm.html'>새 회원 등록하기</a");
	}

}

------------------------------
package sec04.ex03;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MemberServlet
 */
@WebServlet("/member")
public class MemberServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}
	
	protected void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		MemberDAO dao = new MemberDAO();
		PrintWriter out = response.getWriter();
		List membersList = dao.listMembers();
		request.setAttribute("membersList", membersList); // 조회된 회원 정보를 ArrayList 객체에 저장한 후 request에 바인딩함.
		RequestDispatcher dispatch = request.getRequestDispatcher("viewMembers");
		dispatch.forward(request, response);
        // 바인딩한 request를 viewMembers 서블릿으로 포워딩함.
		
	}

}

--------------------------

package sec05.ex01;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class GetServletContext
 */
@WebServlet("/cget")
public class GetServletContext extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		ServletContext context = getServletContext();
		List member = (ArrayList)context.getAttribute("member");
		String name = (String)member.get(0);
		int age = (Integer)member.get(1);
		out.print("<html><body>");
		out.print(name + "<br>");
		out.print(age + "<br>");
		out.print("</html></body>");
		
	}

}

------------------------------------

package sec05.ex01;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SetServletContext
 */
@WebServlet("/cset")
public class SetServletContext extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		ServletContext context = getServletContext();
		List member = new ArrayList();
		member.add("이순신");
		member.add(30);
		context.setAttribute("member", member);
		out.print("<html><body>");
		out.print("이순신과 30 설정");
		out.print("</html></body>");
	}

}

------------------------------

<?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" id="WebApp_ID" version="3.0">
  <context-param>
    <param-name>menu_member</param-name>
    <param-value>회원등록 회원조회 회원수정</param-value>
  </context-param>
  <context-param>
    <param-name>menu_order</param-name>
    <param-value>주문조회 주문등록 주문수정 주문취소</param-value>
  </context-param>
  <context-param>
    <param-name>menu_goods</param-name>
    <param-value>상품조회 상품등록 상품수정 상품삭제</param-value>
  </context-param>
  <display-name>pro08</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

--------------------------------
package sec05.ex02;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ContextParamServlet
 */
@WebServlet("/initmenu")
public class ContextParamServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		ServletContext context = getServletContext();
		String menu_member = context.getInitParameter("menu_member");
		String menu_order = context.getInitParameter("menu_order");
		String menu_goods = context.getInitParameter("menu_goods");
		
		out.print("<html><body>");
		out.print("<table border=1 cellspacing=0><tr>메뉴 이름</tr>");
		out.print("<tr><td>" + menu_member + "</td></tr>");
		out.print("<tr><td>" + menu_order + "</td></tr>");
		out.print("<tr><td>" + menu_goods + "</td></tr>");
		out.print("</tr></table></html></body>");
	}

}

-------------------------
package sec06.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class InitParamServlet // 애너테이션을 이용한 서블릿 설정
 */
@WebServlet(
		urlPatterns = { 
				"/sInit", 
				"/sInit2"
		}, 
		initParams = { 
				@WebInitParam(name = "email", value = "admin@jweb.com"), 
				@WebInitParam(name = "tel", value = "010-1111-2222")
		})
public class InitParamServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		String email = getInitParameter("email");
		String tel = getInitParameter("tel");
		
		out.print("<html><body>");
		out.print("<table><tr>");
		out.print("<td>email: </td><td>" + email + "</td></tr>");
		out.print("<tr><td>휴대전화 : </td><td>" + tel + "</td>");
		out.print("</tr></table></html></body>");

	}

}

---------------------------------
package sec01.ex02;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet5
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init() throws ServletException {
		System.out.println("init 메소드 호출");
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destroy 메소드 호출");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		String user_id = request.getParameter("user_id");
		String user_pw = request.getParameter("user_pw");
		String user_address = request.getParameter("user_address");
		String user_email = request.getParameter("user_email");
		String user_hp = request.getParameter("user_hp");
		
		String data = "안녕하세요!<br>로그인하셨습니다.<br><br>";
		data+= "<html><body>";
		data+= "아이디 : " + user_id;
		data+= "<br>";
		data+= "패스워드 : " + user_pw;
		data+= "<br>";
		data+= "주소 : " + user_address;
		data+= "<br>";
		data+= "email : " + user_email;
		data+= "<br>";
		data+= "휴대전화 : " + user_hp;
		out.print(data); // 브라우저로 쏨
		
		user_address = URLEncoder.encode(user_address, "utf-8");
		out.print("<a href='/pro09/second?user_id="+user_id+"&user_pw="+user_pw+"&user_address="+user_address+"'>두번째 서블릿으로 보내기</a>");
		data+= "</body></html>";
		
	}

}

-----------------------------
package sec01.ex02;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginServlet5
 */
@WebServlet("/second")
public class SecondServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init() throws ServletException {
		System.out.println("init 메소드 호출");
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		System.out.println("destroy 메소드 호출");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		String user_id = request.getParameter("user_id");
		String user_pw = request.getParameter("user_pw");
		String user_address = request.getParameter("user_address");
		
		out.print("<html><body>"); // 브라우저로 쏨
		if(user_id!=null && user_id.length()!=0) {
			out.println("이미 로그인 상태입니다!<br><br>");
			out.println("첫 번째 서블릿에서 넘겨준 아이디: " + user_id + "<br>");
			out.println("첫 번째 서블릿에서 넘겨준 비밀번호: " + user_pw + "<br>");
			out.println("첫 번째 서블릿에서 넘겨준 주소: " + user_address + "<br>");
			out.println("</html></body>");
		} else {
			out.println("로그인 하지 않았습니다.<br><br>");
			out.println("다시 로그인하세요!<br>");
			out.println("<a href='/pro09/login.html'>로그인 창으로 이동하기</>");
		}
		
	}

}

-----------------------------

package sec02.ex01;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SetCookieValue
 */
@WebServlet("/set")
public class SetCookieValue extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		Date d = new Date();
		Cookie c = new Cookie("cookieTest", URLEncoder.encode("JSP프로그래밍입니다.", "utf-8"));
		c.setMaxAge(24*60*60); // 일, 시, 분 (유효기간 설정)
		response.addCookie(c); // 생성된 쿠리를 브라우저로 전송.
		out.println("현재 시간 : " + d);
		out.println("현재 시간을 Cookie로 저장합니다.");
		
	}

}

----------------------------

package sec02.ex01;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class GetCookieValue
 */
@WebServlet("/get")
public class GetCookieValue extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
        //request의 getCookie 메소드를 호출해 브라우저에게 쿠키 정보를 요청한 후 쿠키 정보를 배열로 가져옴.
		Cookie[] allValues = request.getCookies();
		for(int i = 0; i<allValues.length; i++) {
			if(allValues[i].getName().equals("cookieTest")) {
				out.println("<h2>Cookie 값 가져오기 : " + URLDecoder.decode(allValues[i].getValue(), "utf-8"));
			}
		}
	}
}