'전체 글'에 해당되는 글 384건

  1. 2019.08.14 9일차
  2. 2019.08.13 배열
  3. 2019.08.13 함수
  4. 2019.08.13 10일차
  5. 2019.08.12 8일차
  6. 2019.08.12 9일차
  7. 2019.08.09 8일차
  8. 2019.08.08 7일차
  9. 2019.08.07 6일차
  10. 2019.08.06 5일차

9일차

|
/* 0814 실습 - 다음의 SQL을 작성하시오
1. 상품주문에서 주문번호, 제품번호, (제품제조국가위치)를 추출하시오
-(제품제조국가위치): 제품번호의 마지막 2자리가 01이면 ‘국내’, 아니면 ‘해외’
-조건: 총가격(항목수량*항목가격)이 500$이상인 주문 */
select order_num, prod_id, DECODE(SUBSTR(TRIM(prod_id), -2), '01', '국내', '해외') as prod_nation_location
from orderitems
WHERE order_num IN (
         SELECT order_num
         FROM   orderitems
         GROUP BY order_num
         HAVING SUM(quantity*item_price) >= 500
      )
; 

/* 2. 주문과 고객정보를 조인하여 다음의 결과를 추출하시오
-결과: 주문번호, 주문날자, 제품번호, 고객번호, 고객이름, 고객주소, 고객시, 고객메일주소
-조건: 전체주문에서 가장 많은 상품종류를 판매한 공급업체에서 만든 제품만조회*/
select OI.order_num, O.order_date, P.prod_id, C.cust_id, C.cust_name, C.cust_address, C.cust_city, C.cust_email
from orderitems OI, orders O, customers C, products P
where OI.order_num = O.order_num
AND O.cust_id = C.cust_id
AND OI.prod_id = P.prod_id
AND EXISTS(
    SELECT MAX(COUNT(DISTINCT prod_id))
    FROM Products
    GROUP BY vend_id
    )
;

-- 강사님 풀이
SELECT a.order_num, a.order_date, b.prod_id, a.cust_id, c.cust_name, c.cust_address, c.cust_city, c.cust_email
FROM   orders a, orderitems b, customers c
WHERE  a.order_num = b.order_num
AND    a.cust_id = c.cust_id
AND    b.prod_id IN (
         SELECT prod_id
         FROM   products
         WHERE  vend_id IN (
                SELECT vend_id
                FROM
                (
                    SELECT b.vend_id, COUNT(a.prod_id) AS prod_cnt
                    FROM   orderitems a, products b
                    WHERE  a.prod_id = b.prod_id
                    GROUP BY b.vend_id
                ) m
                WHERE prod_cnt = (
                    SELECT MAX(COUNT(a.prod_id)) AS prod_cnt
                    FROM   orderitems a, products b
                    WHERE  a.prod_id = b.prod_id
                    GROUP BY b.vend_id
                )         
              )
       )
;    

-- 왈답
select ord.order_num, ord.order_date, ori.prod_id, ct.cust_id, ct.cust_name, ct.cust_address, ct.cust_city, ct.cust_email
from orders ord, orderitems ori, customers ct
where ord.order_num = ori.order_num
AND  ord.cust_id = ct.cust_id
and ori.prod_id in (
	select pd_m.prod_id
	from products pd_m
	where pd_m.vend_id in (		
            select temp.vend_id 
            from( 
                select temp3.vend_id, rank() over(order by temp3.vend_cnt desc) as vend_rank, temp3.vend_cnt
                from (
                    select pd1.vend_id, sum(temp2.cnt) as vend_cnt 
                    from(
                        select oi.prod_id,  count(oi.order_num) as cnt 
                        From orderitems oi
                        group by oi.prod_id
                        
                    ) temp2
                    , products pd1
                    where temp2.prod_id = pd1.prod_id 
                    group by pd1.vend_id
                ) temp3
            ) temp 
            where temp.vend_rank = 1
	)
); 

/* 3. 주문 중에 고객이 사는 도시가 ‘Detroit’이고 주문한 총 제품의 수가 500을 넘는 고객을 추출하시오
-결과: 고객번호, 고객이름, 고객도시 */
SELECT C.cust_id, C.cust_name, C.cust_city
from customers C 
WHERE cust_city LIKE '%Detroit%'
AND EXISTS(
    SELECT *
    FROM Orderitems OI, Orders O
    WHERE C.cust_id = O.cust_id
    AND O.order_num = OI.order_num
    HAVING SUM(OI.quantity) > 500
    )
;

/* 4. 모든 주문에 대해 다음의 결과를 추출하시오
-결과: 주문번호, 주문날자(YYYY-MM-DD), 고객번호, 고객이름, 주문제품번호, 주문제품이름, 공급업체번호, 공급업체명
-조건: 3$대의 제품을 판매하는 공급업체의 모든 주문*/
SELECT O.order_num, TO_CHAR(O.order_date, 'YYYY-MM-DD'), C.cust_id, TRIM(C.cust_name), P.prod_id, TRIM(P.prod_name), V.vend_id, V.vend_name
FROM Orders O, Customers C, Products P, Vendors V, orderitems OI
WHERE O.order_num = OI.order_num
AND OI.prod_id = P.prod_id
AND P.vend_id = V.vend_id
AND O.cust_id = C.cust_id
AND TRUNC(prod_price) = 3;

-- 조인 3개 이하로 줄인 것.
SELECT O.order_num, TO_CHAR(O.order_date, 'YYYY-MM-DD'), C.cust_id, TRIM(C.cust_name), K.prod_id, TRIM(K.prod_name), K.vend_id, K.vend_name
FROM Orders O, Customers C, 
    (SELECT OI.order_num, P.prod_id, P.prod_name, V.vend_id, V.vend_name, P.prod_price
    FROM Orderitems OI, Products P, Vendors V
    WHERE OI.prod_id = P.prod_id
    AND P.vend_id = V.vend_id) K -- from 절에 이렇게 하면 속도가 느려질수 있음.
WHERE O.cust_id = C.cust_id
AND K.order_num = O.order_num
AND TRUNC(K.prod_price) = 3;

-- 5. 주문날자가 2004년도에 발생한 주문 중에 주문상품의 항목가격이 90$를 넘는 항목가격에 대해 10%씩을 DC하여 변경하시오
UPDATE Orderitems
SET item_price = item_price * 0.9
WHERE EXISTS
    (SELECT O.order_date
    FROM Orders O
    WHERE TO_CHAR(O.order_date, 'YYYY') LIKE '%2004%'
    AND item_price >= 90
    )
;

'Bitcamp > BITCAMP - SQL' 카테고리의 다른 글

10일차  (0) 2019.08.27
8일차  (0) 2019.08.12
7일차  (0) 2019.08.02
6일차  (0) 2019.07.31
5일차  (0) 2019.07.30
And

배열

|

배열 : 여러개의 데이터를 담기 위한 그릇의 역할

function get_members(){
    return ['egoing', 'k8805', 'sorialgi'];
}
members = get_members();
// members.length는 배열에 담긴 값의 숫자를 알려준다. 
for(i = 0; i < members.length; i++){
    // members[i].toUpperCase()는 members[i]에 담긴 문자를 대문자로 변환해준다.
    document.write(members[i].toUpperCase());   
    document.write('<br />');
}

- 하나하나의 데이터를 원소라 하고 그것을 식별하는 식별자를 주로 인덱스라 칭한다.(0부터 순서대로 자동매김)
- 배열.length : 배열의 크기 출력


.push : 배열 끝에 원소 추가
.concat : 여러개 원소 추가
.unshift : 배열 처음에 원소 추가. 배열의 기존 값들의 색인을 1씩 증가시킨다.
.splice : 중간에 추가 -> 헷갈림.
.shift : 첫 번째 원소 제거
.pop : 맨 뒤 원소 제거
.sort : 정렬(사용자가 정의한 기준으로도 정렬 가능)
.reverse : 역순정렬

'JavaScript' 카테고리의 다른 글

누구나 한 번쯤은 띄워본 JavaScript 에러 TOP 10.  (0) 2019.08.30
jQuery - input 쓰기, 읽기, 활성화, 비활성화 - readonly, disabled  (0) 2019.08.30
함수  (0) 2019.08.13
반복문  (0) 2019.07.25
비교와 조건문  (0) 2019.07.23
And

함수

|

######################## 함수(function) ########################
하나의 로직을 재실행 할 수 있도록 해, 코드의 재사용성 / 유지보수의 효율 / 가독성을 높여준다.

function 함수명( [인자...[,인자]] ){
   코드
   return 반환값
}


######################## 반복문과 함수의 차이 ########################
반복문은 일정한 반복을 '그 자리' 에서 실행할 때 의미가 있고,
함수는 일정한 반복을 '여러곳' 에서 실행할 때 의미가 있다.

######################## 함수의 출력 ########################
함수안에서 제일 먼저 나오는 return을 보면, 값을 출력하고 함수를 빠져나간다.

######################## 매개변수와 인자(parameter & argument) ########################
함수정의 function good ( a, b ) { ~ }
함수불러오기 good(1, 2);
위의 함수불러오는 코드에서, 괄호안에 들어가는 1과 2는 인자(argument)
그 인자가 들어가는 a와 b는 매개변수(parameter)라고 한다.

- 여러개의 매개변수를 지정할 수 있다(매개변수가 많으면 인자도 많아 지겠죠?).

- 함수를 정의하는 방법은 여러가지가 있다.

 

######################## 유효범위 ########################
전역변수/지역변수 : 함수 바깥에서 선언된 변수(전역적으로 영향을 미침)/함수 내에서 선언된 변수(함수 내에서만

영향을 미침)
- 전역변수는 거의 쓰이지 않음(프로그램이 커질수록 변수의 이름이 서로 헷갈릴 수 있기 때문. 이런 개념도 그러
한 문제때문에 고안된 것)
- 함수 밖에서 var를 쓰면 전역변수, 함수 안에서 var를 쓰면 지역변수
- 전역변수를 딱 하나만 쓰려면 전역변수 하나를 객체로 만들고 그 소속 아래 나머지 변수를 선언한다.
- 전역변수를 쓰지 않으려면 만든 로직을 익명함수화한다(모듈화의 기초)
- 자바스크립트의 지역변수는 {}가 아니라 함수!에서만 유효하다.
- 자바스크립트는 정적 유효범위를 채택한다(함수 호출시점이 아니라 선언 시점을 기준으로 한다)

var i = 5;
 
function a(){
    var i = 10;
    b();
}
 
function b(){
    document.write(i);
}
 
a(); // 실행결과는 5이다.(사용될때가 아니라 정의될때가 기준임!)

######################## 값으로서의 함수 ########################

 JavaScript의 함수가 다른 언어의 함수와 다른 점은 함수가 값이 될 수 있다는 점이다. 

function a(){} // 함수 a는 변수 a에 담겨진 값이다. 

a = {
    b:function(){
    }
}; // 또한 함수는 객체의 값으로 포함될 수 있다.
// 이렇게 객체의 속성 값으로 담겨진 함수를 메소드(method)라고 부른다.

function cal(mode){
    var funcs = {
        'plus' : function(left, right){return left + right},
        'minus' : function(left, right){return left - right}
    }
    return funcs[mode];
}
// 함수는 함수의 리턴 값으로도 사용할 수 있다.

var process = [
    function(input){ return input + 10;},
    function(input){ return input * input;},
    function(input){ return input / 2;}
];
var input = 1;
for(var i = 0; i < process.length; i++){
    input = process[i](input);
}// 당연히 배열의 값으로도 사용할 수 있다.

######################## 콜백 ########################

콜백 : 어떠한 함수가 수신하는 인자가 함수인 경우. 함수가 다른 함수의 인자로 사용됨으로써 그 함수의 내용을 완전히 바꿀 수 있는것.

비동기(Asynchronous) - 요청에 처리 완료와 관계없이 응답한다. 이후 운영체제에서 응답할 준비가 되면 응답한다.

var numbers = [20, 10, 9,8,7,6,5,4,3,2,1];
numbers.sort(); // [1, 10, 20, 3, 4,5,6,7,8,9];

function sortNumber(a,b){
    // 위의 예제와 비교해서 a와 b의 순서를 바꾸면 정렬순서가 반대가 된다.
    return b-a;
}
numbers.sort(sortNumber); // array, [20,10,9,8,7,6,5,4,3,2,1]

function sortfunc(a,b){
    if(a>b){
    	return 1;
    } else if(a<b){
    	return -1;
    } else { 
    	return 0;
}
numbers.sort(sortfunc); // array, [1,2,3,4,5,6,7,8,9,10,20]

콜백은 비동기처리에서도 유용하게 사용된다. 시간이 오래걸리는 작업이 있을 때 이 작업이 완료된 후에 처리해야 할 일을 콜백으로 지정하면 해당 작업이 끝났을 때 미리 등록한 작업을 실행하도록 할 수 있다. 다음 코드는 일반적인 환경에서는 작동하지 않고 서버 환경에서만 동작한다. 동영상을 참고한다.

// datasource.json.js
{"title":"JavaScript","author":"egoing"}

// demo1.html
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<script type="text/javascript">
    $.get('./datasource.json.js', function(result){
        console.log(result);
    }, 'json');
</script>
</body>
</html>

비동기적인 처리 => 인터페이스와 사용자가 소통할 범위와 시간을 늘리기위해 시간이 많이 걸리는 작업을 뒤로 미루는 처리
순차적 절차적으로 코드를 일직선으로 쭉 실행하는것을 동기적인 처리, 우선도에 따라 다르게 처리하는것을 비동기적인 처리라고 부름.

'JavaScript' 카테고리의 다른 글

jQuery - input 쓰기, 읽기, 활성화, 비활성화 - readonly, disabled  (0) 2019.08.30
배열  (0) 2019.08.13
반복문  (0) 2019.07.25
비교와 조건문  (0) 2019.07.23
변수, 주석, 줄바꿈과 여백  (0) 2019.07.23
And

10일차

|

주요내용 : EL 내장객체,  JSTL, Core Tag Library

@@@@@@@ 0813 실습

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
<title>고객 검색 창</title>
</head>
<body>
	<form method="post" action="listCustomer.jsp">
	고객번호 : <input type="text" name="cust_id">
	<input type="submit" value="조회하기">
	<input type="button" value="고객추가" onClick="location.href='addEditCus.jsp?mode=add'">
	</form>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="java.net.URLDecoder"
	import="day0813.*"
    pageEncoding="UTF-8"
%>
<!DOCTYPE html>
<html>
<head>
	<style>
		h1 {
			text-align: center;
		}
	</style>
	<meta charset="UTF-8">
	<title>고객 정보 출력</title>
</head>
<body>
	<h1>고객 정보 출력</h1>
<%
	request.setCharacterEncoding("utf-8");
	String _cust_id = request.getParameter("cust_id");
	
	System.out.println(_cust_id);
	
	CustomerBean customerVO = new CustomerBean();
	customerVO.setCust_id(_cust_id);
	CustomerDAO dao = new CustomerDAO();
	List customerlist = dao.listCustomer(customerVO);
%>
	<table border=1 width=800 align=center>
		<tr align=center bgcolor="#FFFF66">
		<td>고객번호</td>
		<td>고객이름</td>
		<td>고객주소</td>
		<td>고객주</td>
		<td>고객우편번호</td>
		<td>고객국가</td>
		<td>고객담당자</td>
		<td>고객메일주소</td>
		<td>수정</td>
		</tr>
<%
	for(int i=0; i < customerlist.size(); i++){
		CustomerBean vo = (CustomerBean) customerlist.get(i);
		String cust_id = vo.getCust_id();
		String cust_name = vo.getCust_name();
		String cust_address = vo.getCust_address();
		String cust_state = vo.getCust_state();
		String cust_zip = vo.getCust_zip();
		String cust_country = vo.getCust_country();
		String cust_contact = vo.getCust_contact();
		String cust_email = vo.getCust_email();
		
%>
	<tr align=center>
		<td><%= cust_id %></td>
		<td><%= cust_name %></td>
		<td><%= cust_address %></td>
		<td><%= cust_state %></td>
		<td><%= cust_zip %></td>
		<td><%= cust_country %></td>
		<td><%= cust_contact %></td>
		<td><%= cust_email %></td>
		<td><a href="addEditCus.jsp?cust_id=<%= cust_id %>&cust_name=<%= cust_name %>%cust_address=<%= cust_address %>%cust_state=<%= cust_state %>%cust_country=<%= cust_country %>%cust_contact=<%= cust_contact %>%cust_email=<%= cust_email %>&mode=edit">수정</a></td>
	</tr>
<%
	}
%>
	</table>

</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="day0813.*"
    pageEncoding="UTF-8"
%>
<!DOCTYPE html>
<%
    request.setCharacterEncoding("utf-8");
	String mode = request.getParameter("mode");
%>
<jsp:useBean id="m" class="day0813.CustomerBean" scope="request"/>
<jsp:setProperty property="*" name="m" />

<html>
<head>
<meta charset="UTF-8">
<title>고객 정보 수정 및 추가</title>
</head>
<body>
	<form action="../customer" method="post" encType="UTF-8">
<%
	if("edit".equals(mode)){
%>
	<table>
			<th>고객정보 수정</th>
			<tr>
				<td>고객번호</td>
				<td><input type="text" name="cust_id" value=<jsp:getProperty  name="m" property="cust_id" />></td>
			</tr>
			<tr>
				<td>고객성명</td>
				<td><input type="text" name="cust_name" value=<jsp:getProperty  name="m" property="cust_name" />></td>
			</tr>
			<tr>
				<td>고객주소</td>
				<td><input type="text" name="cust_address" value=<jsp:getProperty  name="m" property="cust_address" />></td>
			</tr>
			<tr>
				<td>고객주</td>
				<td><input type="text" name="cust_state" value=<jsp:getProperty  name="m" property="cust_state" />></td>
			</tr>
			<tr>
				<td>고객우편번호</td>
				<td><input type="text" name="cust_zip" value=<jsp:getProperty  name="m" property="cust_zip" />></td>
			</tr>
			<tr>
				<td>고객국가</td>
				<td><input type="text" name="cust_country" value=<jsp:getProperty  name="m" property="cust_country" />></td>
			</tr>
			<tr>
				<td>고객담당자</td>
				<td><input type="text" name="cust_contact" value=<jsp:getProperty  name="m" property="cust_contact" />></td>
			</tr>
			<tr>
				<td>고객이메일</td>
				<td><input type="text" name="cust_email" value=<jsp:getProperty  name="m" property="cust_email" />></td>
			</tr>
		</table>
	<input type='submit' name="submit" value='수정'>
	<input type="hidden" name="mode" value="edit"/>
<% 	} %>
<%
	if("add".equals(mode)){
%>
	<table>
			<th>고객정보 추가</th>
			<tr>
				<td>고객번호</td>
				<td><input type="text" name="cust_id"></td>
			</tr>
			<tr>
				<td>고객성명</td>
				<td><input type="text" name="cust_name"></td>
			</tr>
			<tr>
				<td>고객주소</td>
				<td><input type="text" name="cust_address"></td>
			</tr>
			<tr>
				<td>고객주</td>
				<td><input type="text" name="cust_state"></td>
			</tr>
			<tr>
				<td>고객우편번호</td>
				<td><input type="text" name="cust_zip"></td>
			</tr>
			<tr>
				<td>고객국가</td>
				<td><input type="text" name="cust_country"></td>
			</tr>
			<tr>
				<td>고객담당자</td>
				<td><input type="text" name="cust_contact"></td>
			</tr>
			<tr>
				<td>고객이메일</td>
				<td><input type="text" name="cust_email"></td>
			</tr>
		</table>
	<input type='submit' name="submit" value='추가'>
	<input type="hidden" name="mode" value="add"/>
<% 	} %>
	</form>
</body>
</html>

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

package day0813;

import java.io.IOException;
import java.io.PrintWriter;
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 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 {
		// TODO Auto-generated method stub
		doHandle(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doHandle(request, response);
	}

	protected void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		String p_cust_id = request.getParameter("cust_id");
		String p_mode = request.getParameter("mode");
		
	    CustomerDAO dao=new CustomerDAO();
	    List customerList;
	    
    	String cust_id = request.getParameter("cust_id");
    	String cust_name = request.getParameter("cust_name");
    	String cust_address = request.getParameter("cust_address");
    	String cust_state = request.getParameter("cust_state");
    	String cust_zip = request.getParameter("cust_zip");
    	String cust_country = request.getParameter("cust_country");
    	String cust_contact = request.getParameter("cust_contact");
    	String cust_email = request.getParameter("cust_email");
	    
	    if(p_mode != null && p_mode.equals("edit")) {
	    	dao.editCustomer(cust_id, cust_name, cust_address, cust_state, cust_zip, cust_country, cust_contact, cust_email);
	    }else if(p_mode != null && p_mode.equals("add")) {
	    	dao.addCustomer(cust_id, cust_name, cust_address, cust_state, cust_zip, cust_country, cust_contact, cust_email);
	    }
			RequestDispatcher dispatch = request.getRequestDispatcher("day0813/listCustomer.jsp");
			dispatch.forward(request, response);
	}

}

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

package day0813;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
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 listCustomer(CustomerBean customerBean)
	{
		List customerlist = new ArrayList();
		String _cust_id = customerBean.getCust_id();
		System.out.println(_cust_id);
		try
		{
			con = dataFactory.getConnection();
			String query = "select cust_id, cust_name, cust_address, cust_state, cust_zip, cust_country, cust_contact, cust_email ";
			query += "from customers ";
			query += "where cust_id like '%" + _cust_id + "%'";
			System.out.println("preparedStatement : " + query);
			pstmt = con.prepareStatement(query); // preparedStatement 메소드에 sql문을 전달해 prepareStatement객체를 생성. 
			ResultSet rs = pstmt.executeQuery(); // sql문으로 회원 정보를 조회
			while(rs.next())
			{
				// 조회한 레코드의 각 컬럼 값을 받아옴.
//				-- 고객번호로 조회
//				-- 고객번호, 고객이름, 고객주소, 고객주, 고개우편번호, 고객국가, 고객담당자, 고객메일주소, 수정
//				select cust_id, cust_name, cust_address, cust_state, cust_zip, cust_country, cust_contact, cust_email
				String cust_id = rs.getString("cust_id");
				String cust_name = rs.getString("cust_name");
				String cust_address = rs.getString("cust_address");
				String cust_state = rs.getString("cust_state");
				String cust_zip = rs.getString("cust_zip");
				String cust_country = rs.getString("cust_country");
				String cust_contact = rs.getString("cust_contact");
				String cust_email = rs.getString("cust_email");
				// 각 컬럼 값을 다시 MemberVO 객체의 속성에 설정.
				CustomerBean vo = new CustomerBean();
				vo.setCust_id(cust_id);
				vo.setCust_name(cust_name);
				vo.setCust_address(cust_address);
				vo.setCust_state(cust_state);
				vo.setCust_zip(cust_zip);
				vo.setCust_country(cust_country);
				vo.setCust_contact(cust_contact);
				vo.setCust_email(cust_email);
				customerlist.add(vo); // 설정된 MemberVO 객체를 다시 ArrayList에 저장.
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return customerlist; // 조회한 레코드의 개수만큼 MemberVO객체를 저장한 ArrayList를 반환.
	}
	
	public void editCustomer(String cust_id, String cust_name, String cust_address, String cust_state, String cust_zip, String cust_country, String cust_contact, String cust_email)
	{
		try
		{
//			수정창 
//			고객번호, 고객이름, 고객주소, 고객주, 고개우편번호, 고객국가, 고객담당자, 고객메일주소, 수정
//			cust_id, cust_name, cust_address, cust_state, cust_zip, cust_country, cust_contact, cust_email
			Connection con = dataFactory.getConnection();
			System.out.println("1");
			String query = "UPDATE Customers";
			query += " SET cust_address = ?";
			query += ", cust_state = ?";
			query += ", cust_zip = ?";
			query += ", cust_country = ?";
			query += ", cust_contact = ?";
			query += ", cust_email = ?";
			query += " WHERE cust_id = '" + cust_id + "'";
			query += " AND cust_name ='" + cust_name + "'";
			System.out.println("prepareStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, cust_address);
			pstmt.setString(2, cust_state);
			pstmt.setString(3, cust_zip);
			pstmt.setString(4, cust_country);
			pstmt.setString(5, cust_contact);
			pstmt.setString(6, cust_email);
			pstmt.executeUpdate();
			pstmt.close();
			System.out.println("수정실행로그확인");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public void addCustomer(String cust_id, String cust_name, String cust_address, String cust_state, String cust_zip, String cust_country, String cust_contact, String cust_email) // 고객추가 메소드
	{
		try
		{
//			고객번호, 고객이름, 고객주소, 고객주, 고개우편번호, 고객국가, 고객담당자, 고객메일주소, 수정
//			cust_id, cust_name, cust_address, cust_state, cust_zip, cust_country, cust_contact, cust_email
			Connection con = dataFactory.getConnection();
//			String cust_id = customerBean.getCust_id();
//			String cust_name = customerBean.getCust_name();
//			String cust_address = customerBean.getCust_address();
//			String cust_state = customerBean.getCust_state();
//			String cust_zip = customerBean.getCust_zip();
//			String cust_country = customerBean.getCust_country();
//			String cust_contact = customerBean.getCust_contact();
//			String cust_email = customerBean.getCust_email();
			String query = "insert into customers";
			query += " (cust_id,cust_name,cust_address,cust_state,cust_zip,cust_country,cust_contact,cust_email)";
			query += " values(?,?,?,?,?,?,?,?)"; // 순서대로 값을 assign 해야함.
			System.out.println("prepareStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, cust_id);
			pstmt.setString(2, cust_name);
			pstmt.setString(3, cust_address);
			pstmt.setString(4, cust_state);
			pstmt.setString(5, cust_zip);
			pstmt.setString(6, cust_country);
			pstmt.setString(7, cust_contact);
			pstmt.setString(8, cust_email);
			pstmt.executeUpdate();
			pstmt.close();
			System.out.println("추가실행로그확인");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}

	
}

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

package day0813;

public class CustomerBean {
	// cust_id, cust_name, cust_address, cust_state, cust_zip, cust_country, cust_contact, cust_email
	private String cust_id;
	private String cust_name;
	private String cust_address;
	private String cust_state;
	private String cust_zip;
	private String cust_country;
	private String cust_contact;
	private String cust_email;
	
	public CustomerBean(){System.out.println("CustomerBean 생성자 호출");}

	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 getCust_state() {
		return cust_state;
	}

	public void setCust_state(String cust_state) {
		this.cust_state = cust_state;
	}

	public String getCust_zip() {
		return cust_zip;
	}

	public void setCust_zip(String cust_zip) {
		this.cust_zip = cust_zip;
	}

	public String getCust_country() {
		return cust_country;
	}

	public void setCust_country(String cust_country) {
		this.cust_country = cust_country;
	}

	public String getCust_contact() {
		return cust_contact;
	}

	public void setCust_contact(String cust_contact) {
		this.cust_contact = cust_contact;
	}

	public String getCust_email() {
		return cust_email;
	}

	public void setCust_email(String cust_email) {
		this.cust_email = cust_email;
	}
	
}

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

@@@@@@@ 0813 진도

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="day0813.Thermometer" %>
<%
	day0813.Thermometer thermometer = new day0813.Thermometer();
	request.setAttribute("t", thermometer);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>온도 변환 예제</title>
</head>
<body>
	${t.setCelsius('서울', 27.3)}
	서울 온도 : 섭씨 ${t.getCelsius('서울')}도 / 화씨{t.getFahrenheit('서울')}
	<br/>
	정보 : ${t.info}
</body>
</html>

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

package day0813;
import java.util.HashMap;
import java.util.Map;

public class Thermometer {
	private Map<String, Double> locationCelsiusMap = new HashMap<String, Double>();
	
	public void setCelsius(String location, Double value) {
		locationCelsiusMap.put(location, value);
	}
	
	public Double getCelsius(String location) {
		return locationCelsiusMap.get(location);
	}
	
	public Double getFahrenheit(String location) {
		Double celsius = getCelsius(location);
		if(celsius== null) {
			return null;
		}
		return celsius.doubleValue() * 1.8 + 32.0 ;
	}
	
	public String getInfo() {
		return "온도계 변환기 1.1";
	}

}
================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 창</title>
</head>
<body>
	<form action="member6.jsp" method="post"> // action에 member1~6.jsp 각각 수정
		<h1 style="text-align:center">회원 가입창</h1>
		<table align="center">
			<tr>
				<td width="200">
					<p align="right">아이디
				</td>
				<td width="400"><input type="text" name="id"></td>
			</tr>
			<tr>
				<td width="200">
					<p align="right">비밀번호
				</td>
				<td width="400"><input type="password" name="pwd"></td>
			</tr>
			<tr>
				<td width="200">
					<p align="right">이름
				</td>
				<td width="400"><input type="text" name="name"></td>
			</tr>
			<tr>
				<td width="200">
					<p align="right">이메일
				</td>
				<td width="400"><input type="text" name="email"></td>
			</tr>
			<tr>
				<td width="200">
					<p>&nbsp;</p>
				</td>
				<td width="400">
				<input type="submit" value="가입하기">
				<input type="reset" value="다시입력">
				</td>
			</tr>
		</table>
	</form>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isELIgnored="false"
%>
<%
	request.setCharacterEncoding("UTF-8");
	String id = request.getParameter("id");
	String pwd = request.getParameter("pwd");
	String name = request.getParameter("name");
	String email = request.getParameter("email");
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 정보출력창</title>
</head>
<body>
	<table border="1" align="center">
			<tr align=center bgcolor="#99ccff">
			<td width="20%"><b>아이디</b></td>
			<td width="20%"><b>비밀번호</b></td>
			<td width="20%"><b>이름</b></td>
			<td width="20%"><b>이메일</b></td>
		</tr>
		<tr align=center>
			<td><%= id %></td>
			<td><%= pwd %></td>
			<td><%= name %></td>
			<td><%= email %></td>
		</tr>
		<tr align=center>
        // param 객체를 이용해 getParameter 메소드를 이용하지 않고 바로 회원정보를 출력.
			<td>${param.id}</td>
			<td>${param.pwd}</td>
			<td>${param.name}</td>
			<td>${param.email}</td>
		</tr>
	</table>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("utf-8");
	request.setAttribute("address", "서울시 강남구");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forward</title>
</head>
<body>
	<jsp:forward page="member2.jsp"></jsp:forward>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isELIgnored="false"
%>
<%
	request.setCharacterEncoding("UTF-8");
	String id = request.getParameter("id");
	String pwd = request.getParameter("pwd");
	String name = request.getParameter("name");
	String email = request.getParameter("email");
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 정보출력창</title>
</head>
<body>
	<table border="1" align="center">
			<tr align=center bgcolor="#99ccff">
			<td width="20%"><b>아이디</b></td>
			<td width="20%"><b>비밀번호</b></td>
			<td width="20%"><b>이름</b></td>
			<td width="20%"><b>이메일</b></td>
			<td width="20%"><b>주소</b></td>
		</tr>
		<tr align=center>
			<td>${param.id}</td>
			<td>${param.pwd}</td>
			<td>${param.name}</td>
			<td>${param.email}</td>
			<td>${requestScope.address}</td> // requestScope를 이용해 바인딩된 주소 정보를 출력.
		</tr>
	</table>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isELIgnored="false"
%>
<%
	request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="m" class="sec01.ex01.MemberBean"/> // 회원 정보를 저장할 빈을 생성
<jsp:setProperty name="m" property="*"/> // 전송된 회원 정보를 빈의 속성에 설정.
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 정보출력창</title>
</head>
<body>
	<table border="1" align="center">
			<tr align=center bgcolor="#99ccff">
			<td width="20%"><b>아이디</b></td>
			<td width="20%"><b>비밀번호</b></td>
			<td width="20%"><b>이름</b></td>
			<td width="20%"><b>이메일</b></td>
		</tr>
		</tr>
			<tr align=center>
			<td><%= m.getId() %></td>
			<td><%= m.getPwd() %></td>
			<td><%= m.getName() %></td>
			<td><%= m.getEmail() %></td>
		</tr>
		<tr align=center>
        // ${빈이름.속성이름}
			<td>${m.id}</td>
			<td>${m.pwd}</td>
			<td>${m.name}</td>
			<td>${m.email}</td>
		</tr>
	</table>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*, sec01.ex01.*"
    pageEncoding="UTF-8"
    isELIgnored="false"
%>
<%
	request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="m1" class="sec01.ex01.MemberBean"/>
<jsp:setProperty name="m1" property="*"/>
<jsp:useBean id="membersList" class="java.util.ArrayList" />
<jsp:useBean id="membersMap" class="java.util.HashMap" />
<%
	//hashMap에 key, value 쌍으로 회원정보를 저장.
	membersMap.put("id", "park2");
	membersMap.put("pwd", "4321");
	membersMap.put("name", "박지성");
	membersMap.put("email", "park2@test.com");
	
	MemberBean m2 = new MemberBean("son", "1234", "손흥민", "son@test.com");
	membersList.add(m1);
	membersList.add(m2);
	membersMap.put("membersList", membersList);
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 정보출력창</title>
</head>
<body>
	<table border="1" align="center">
			<tr align=center bgcolor="#99ccff">
			<td width="20%"><b>아이디</b></td>
			<td width="20%"><b>비밀번호</b></td>
			<td width="20%"><b>이름</b></td>
			<td width="20%"><b>이메일</b></td>
		</tr>
			<tr align=center>
            // key를 사용하여 value를 가져옴.
			<td>${membersMap.id}</td>
			<td>${membersMap.pwd}</td>
			<td>${membersMap.name}</td>
			<td>${membersMap.email}</td>
		</tr>
		<tr align=center>
        	// arrayList에 접근한 후 다시 각각의 속성에 접근하여 회원정보 출력.
			<td>${membersMap.membersList[0].id}</td>
			<td>${membersMap.membersList[0].pwd}</td>
			<td>${membersMap.membersList[0].name}</td>
			<td>${membersMap.membersList[0].email}</td>
		</tr>
				<tr align=center>
			<td>${membersMap.membersList[1].id}</td>
			<td>${membersMap.membersList[1].pwd}</td>
			<td>${membersMap.membersList[1].name}</td>
			<td>${membersMap.membersList[1].email}</td>
		</tr>
	</table>
</body>
</html>

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

package sec01.ex02;

import java.sql.Date;

public class MemberBean {
	private String id;
	private String pwd;
	private String name;
	private String email;
	private Date joinDate;
	private Address addr;
	
	public MemberBean()
	{
		System.out.println("MeberVO 생성자 호출");
	}
	
	public MemberBean(String id, String pwd, String name, String email) {
		this.id = id;
		this.pwd = pwd;
		this.name = name;
		this.email = email;
	}

	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getJoinDate() {
		return joinDate;
	}
	public void setJoinDate(Date joinDate) {
		this.joinDate = joinDate;
	}

	public Address getAddr() {
		return addr;
	}

	public void setAddr(Address addr) {
		this.addr = addr;
	}
	
}

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

package sec01.ex02;

public class Address {
	
	private String city;
	private String zipcode;
	
	public Address() {
	}

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}

	public String getZipcode() {
		return zipcode;
	}

	public void setZipcode(String zipcode) {
		this.zipcode = zipcode;
	}
	
}


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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isELIgnored="false"
%>
<%
	request.setCharacterEncoding("UTF-8");
%>
	<jsp:useBean id="m" class="sec01.ex02.MemberBean"/>
	<jsp:setProperty name="m" property="*"/>
	<jsp:useBean id="addr" class="sec01.ex02.Address" />
	<jsp:setProperty name="addr" property="city" value="서울"/>
	<jsp:setProperty name="addr" property="zipcode" value="07654"/>
<%
	m.setAddr(addr);
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 정보출력창</title>
</head>
<body>
	<table border="1" align="center">
			<tr align=center bgcolor="#99ccff">
			<td width="7%"><b>아이디</b></td>
			<td width="7%"><b>비밀번호</b></td>
			<td width="5%"><b>이름</b></td>
			<td width="5%"><b>이메일</b></td>
			<td width="5%"><b>도시</b></td>
			<td width="5%"><b>우편번호</b></td>
			
		</tr>
			<tr align=center>
			<td>${m.id}</td>
			<td>${m.pwd}</td>
			<td>${m.name}</td>
			<td>${m.email}</td>
            // getter를 두번호출하는방법 -> 불편
          	<td><%=m.getAddr().getCity() %></td>
			<td><%=m.getAddr().getZipcode() %></td>
		</tr>
		<tr align=center>
        	// ${부모빈이름.자식속성이름.속성이름} -> 빈이름만 이용해 주소정보 표시
			<td>${m.id}</td>
			<td>${m.pwd}</td>
			<td>${m.name}</td>
			<td>${m.email}</td>
			<td>${m.addr.city }</td>
			<td>${m.addr.zipcode }</td>
		</tr>
	</table>
</body>
</html>

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

<%@ 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>
<%
	String cookieName = "id";
	Cookie cookie = new Cookie(cookieName, "hongkd");
	cookie.setMaxAge(60*2);
	cookie.setValue("kimkd");
	response.addCookie(cookie);
%><p>
<%=cookieName %>쿠키가 생성되었습니다.<br>
<input type="button" value="쿠키의 내용확인" onClick="location.href='useCookie.jsp'">
</p>
</body>
</html>

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

<%@ 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>
<%
	Cookie[] cookies = request.getCookies();
	if(cookies!=null){
		for(int i=0; i<cookies.length; ++i){
			if(cookies[i].getName().equals("id")){ // id란 key 로 저장된 Cookie value를 찾는다.
%>
			쿠키의 이름은 "<%=cookies[i].getName() %>" 이고
			쿠키의 값은 "<%=cookies[i].getValue() %>" 입니다.
<%				
			}
		}
	}
%>
<br>
id에 대한 쿠키의 값은 ${cookie.id.value} 입니다.
</body>
</html>

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

package day0813;
import java.text.DecimalFormat;

public class FormatUtil {
	public static String number(long number, String pattern) {
		DecimalFormat format = new DecimalFormat(pattern);
		return format.format(number);
	}

}


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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="day0813.FormatUtil" %>
<%
	request.setAttribute("price", 12345L);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL 함수 호출</title>
</head>
<body>
	가격은 <b>${FormatUtil.number(price, '#,##0')}</b>원입니다.
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isELIgnored="false"
%>
// core 태그 라이브러리 사용위해 반드시 선언해야함.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	request.setCharacterEncoding("UTF-8");
%>
	// <c:set var="변수명" value="변수값" [scope="scope 속성 중 하나"]/>
	<c:set var="id" value="hong" scope="page"/>
	<c:set var="pwd" value="1234" scope="page"/>
	<c:set var="name" value="${'홍길동'}" scope="page"/>
	<c:set var="age" value="${22}" scope="page"/>
	<c:set var="height" value="${177}" scope="page"/>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 정보출력창</title>
</head>
<body>
	<table border="1" align="center">
			<tr align=center bgcolor="#99ccff">
			<td width="7%"><b>아이디</b></td>
			<td width="7%"><b>비밀번호</b></td>
			<td width="7%"><b>이름</b></td>
			<td width="7%"><b>나이</b></td>
			<td width="7%"><b>키</b></td>
			
		</tr>
			<tr align=center>
			<td>${id}</td>
			<td>${pwd}</td>
			<td>${name}</td>
			<td>${age}</td>
			<td>${height}</td>
		</tr>
	</table>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import = "java.util.*, sec01.ex02.MemberBean"
    pageEncoding="UTF-8"
    isELIgnored="false"
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="membersList" class="java.util.ArrayList"/>
<jsp:useBean id="membersMap" class="java.util.HashMap"/>
<%
	membersMap.put("id", "park2");
	membersMap.put("pwd", "4321");
	membersMap.put("name", "박지성");
	membersMap.put("email", "park2@test.com");
	MemberBean m1 = new MemberBean("son", "1234", "손흥민", "son@test.com");
	MemberBean m2 = new MemberBean("ki", "2234", "기성용", "ki@test.com");
	membersList.add(m1);
	membersList.add(m2);
	membersMap.put("membersList", membersList);
%>
	<c:set var="membersList" value="${membersMap.membersList}" />
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 정보출력창</title>
</head>
<body>
	<table border="1" align="center">
			<tr align=center bgcolor="#99ccff">
			<td width="7%"><b>아이디</b></td>
			<td width="7%"><b>비밀번호</b></td>
			<td width="7%"><b>이름</b></td>
			<td width="7%"><b>이메일</b></td>
		</tr>
			<tr align=center>
			<td>${membersMap.id}</td>
			<td>${membersMap.pwd}</td>
			<td>${membersMap.name}</td>
			<td>${membersMap.email}</td>
		</tr>
		</tr>
			<tr align=center>
			<td>${membersList[0].id}</td>
			<td>${membersList[0].pwd}</td>
			<td>${membersList[0].name}</td>
			<td>${membersList[0].email}</td>
		</tr>
		</tr>
			<tr align=center>
			<td>${membersList[1].id}</td>
			<td>${membersList[1].pwd}</td>
			<td>${membersList[1].name}</td>
			<td>${membersList[1].email}</td>
		</tr>
	</table>
</body>
</html>

'Bitcamp > BITCAMP - Servlet & JSP' 카테고리의 다른 글

12일차  (0) 2019.08.19
11일차  (0) 2019.08.14
9일차  (0) 2019.08.12
8일차  (0) 2019.08.09
7일차  (0) 2019.08.08
And

8일차

|
=================== @@@@0812 SQL 실습

-- • 0812실습 - 다음의 SQL을 작성하시오
-- 1.고객에서 고객번호, 고객이름, 고객주소, (주문한 총 금액), (주문한 제품 중에 가장 최근에 주문한 상품명)을 추출하시오
-- (주문한 총 금액): 해당고객이 주문상품에서 주문한 상품의 항목가격의 SUM
-- (주문한 제품 중에 가장 최근에주문한 상품명) :주문상품에서 해당고객이 주문한 상품중 가장 최근에 주문한 상품의 상품명 
                                           -- (상품이 여러개일 경우 가나다순으로 가장 큰 상품명을 출력)      
select C.cust_id, TRIM(C.cust_name), TRIM(C.cust_address),
    (select sum(OI.item_price)
    from orders O, orderitems OI
    WHERE O.order_num = OI.order_num
    AND O.cust_id = C.cust_id) as sum_price, 
        (select max(P.prod_name)
        from Orders O, orderitems OI, products P
        WHERE O.order_num = OI.order_num
        AND OI.prod_id = P.prod_id
        AND O.order_date = (
                            select MAX(order_date)
                            from orderitems
                            where cust_id = C.cust_id)) as recent_prod_name
from customers C;

-- 2. 상품을주문한 고객 중에 고객국가,(고객담당자 별 주문수)를 추출하시오
-- 결과: 고객국가,고객담당자, (고객담당자 별 주문수)
-- 조건: 주문수가 2건이상인 경우만 조회

select C.cust_country, C.cust_contact, COUNT(DISTINCT OI.order_num) as order_cnt
from customers C, orderitems OI, orders O
WHERE C.cust_id = O.cust_id
AND O.order_num = OI.order_num
GROUP BY C.cust_country, C.cust_contact
HAVING COUNT(DISTINCT OI.order_num) >= 2;

-- 3. 다음의 조건에 따라 제품의 제품번호, 제품이름, (제품가격수준), 제품설명을 추출하시오
-- (제품가격수준): 제품가격이 3$대이면 ‘적당’ 11$대이면 ‘비쌈’나머지는 ‘보통’
-- 조건: 공급업체의 우편번호 앞의 2자리가 ‘44’,‘45’, ’99’ 인 공급업체에서 만들거나 주문된 날자가 5월이 아닌 제품

select P.prod_id, TRIM(P.prod_name), 
    case when P.prod_price like '3%' then '적당'
          when P.prod_price like '11%' then '비쌈'
          else '보통'
    END price_level , P.prod_desc
from Products P
WHERE EXISTS(
    select *
    from vendors V, orders O
    WHERE V.vend_id = P.vend_id
    AND (SUBSTR(V.vend_zip, 0, 2) IN ('44', '45', '99')) OR (TO_CHAR(O.order_date, 'MM') <> '05')
    )
;

-- 강사님 풀이
SELECT prod_id, TRIM(prod_name) as prod_name,
       DECODE(TRUNC(prod_price), 3, '적당', 11, '비쌈', '보통') as prod_level
FROM   products
WHERE  vend_id IN (
         SELECT vend_id
         FROM   vendors
         WHERE  SUBSTR(vend_zip,1,2) IN ('44','45','99')
       )
OR     prod_id IN (
         SELECT b.prod_id
         FROM   orders a, orderitems b
         WHERE  a.order_num = b.order_num
         AND    TO_CHAR(a.order_date, 'MM') <> '05'
);       

-- 4. 주문상품중에 // 제품의 제품가격(prod_price)보다 주문상품의 항목가격(item_price)이 비싼 항목가격을 // 제품의 제품가격(prod_price)으로 변경하시오

update Orderitems K
set item_price = (
    select prod_price
    from products
    where prod_id = K.prod_id
    )
WHERE order_num IN(
    select DISTINCT order_num
    from Orderitems OI, products P
    WHERE OI.item_price > P.prod_price
    )
;









'Bitcamp > BITCAMP - SQL' 카테고리의 다른 글

10일차  (0) 2019.08.27
9일차  (0) 2019.08.14
7일차  (0) 2019.08.02
6일차  (0) 2019.07.31
5일차  (0) 2019.07.30
And

9일차

|

주요내용 : Expression Language(EL)

=================== @@@@0812 서브릿 진도

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 입력 폼</title>
</head>
<body>
	<form action="/pro13/day0812/processJoining.jsp" method="post">
		<table border="1" cellpadding="0" cellspacing="0">
			<tr>
				<td>아이디</td>
				<td colspan="3"><input type="text" name="id" size="10"></td>
			</tr>
			<tr>
				<td>이름</td>
				<td colspan="3"><input type="text" name="name" size="10"></td>
				<td>이메일</td>
				<td colspan="3"><input type="text" name="email" size="10"></td>
			</tr>
			<tr>
				<td colspan="4" align="center"><input type="submit" value="회원가입"></td>
			</tr>
		</table>
	</form>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="memberInfo" class="day0812.MemberInfo"/>
<jsp:setProperty name="memberInfo" property="*"/>
<jsp:setProperty name="memberInfo" property="password" value="<%=memberInfo.getId()%>"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>가입</title>
</head>
<body>
	<table width="400" border="1" cellpadding="0" cellspacing="0">
		<tr>
			<td>아이디</td>
			<td><jsp:getProperty name="memberInfo" property="id"/></td>
			<td>암호</td>
			<td><jsp:getProperty name="memberInfo" property="password"/></td>
		</tr>
		<tr>
			<td>이름</td>
			<td><jsp:getProperty name="memberInfo" property="name"/></td>
			<td>이메일</td>
			<td><jsp:getProperty name="memberInfo" property="email"/></td>
		</tr>
	</table>
</body>
</html>

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

package day0812;

import java.util.Date;

public class MemberInfo {
	private String id;
	private String password;
	private String name;
	private Date registerDate;
	private String email;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getRegisterDate() {
		return registerDate;
	}
	public void setRegisterDate(Date registerDate) {
		this.registerDate = registerDate;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<<jsp:useBean id="member" scope="request" class="day0812.MemberInfo"/>
<%
member.setId("madVirus");
member.setName("홍길동");
%>
<jsp:forward page="useObject.jsp"/>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="member" scope="request" class="day0812.MemberInfo"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>인사말</title>
</head>
<body>
	<%=member.getName() %>(<%=member.getId()%>)회원님 안녕하세요.
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isELIgnored="false" %> // 표현언어 기능을 활성화
<html>
<head>
<meta charset="UTF-8">
<title>표현 언어에서 사용되는 데이터들</title>
</head>
<body>
	<h1>표현 언어로 여러 가지 데이터 출력하기</h1>
	<h1>
		\${100}: ${100}<br> // 100
		\${"안녕하세요"}: ${"안녕하세요"}<br> // 안녕하세요
		\${10+1} :${10+1 }<br> // 11
		\${"10"+1}: ${"10"+1}<br> // 숫자형 문자열과 실제 숫자를 더하면 문자열을 자동으로 숫자로 변환하여 더함.
		<%--\${null+10 }: ${null+10 }<br> --%> // null과 10을 더하면 10이 됨.
		<%--\${"안녕"+11 }: ${"안녕"+11 }<br> --%>  // 문자열끼리는 더할 수 없음.
		<%--\${"hello"+"world"}:${"hello"+"world"}<br> --%> // 문자열과 숫자는 더할수 없음.
	</h1>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isELIgnored="false" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2> 여러 가지 산술 연산자</h2>
	<h1>
	\${10+10}  : ${10+10} <br> // 20
   	\${20-10}  : ${20-10}  <br> // 10
   	\${10*10}  : ${10*10} <br> // 100
   	\${100/9} : ${100/9} <br> // 11.11111 
<%--    \${100 div 9} : ${100 div 9} <br> --%> // 11.11111
   	\${100%9} : ${100%9}<br> // 1
   	\${100 mod 9} : ${100 mod 9}<br> // 1
	</h1>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isELIgnored="false" %>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>여러 가지 비교 연산자</h2>
	<h3>
		\${10==10}:${10==10}<br> // true
		\${10 eq 10}:${10 eq 10}<br><br> // true
		
        // 문장열이 서로 같은지 비교할때는 == 나 eq를 연산자로 사용.
		\${"hello"=="hello"}:${"hello"=="hello"}<br> // true
		\${"hello" eq "hello"}:${"hello" eq "hello"}<br> // true
		
		\${20!=10} : ${20!=10}<br> // true
	    \${20 ne 10} : ${20 ne 10}<br><br> // true
	    
        // 문자열이 서로 다른지 비교할때는 !=나 ne를 연산자로 사용합니다.
	    \${"hello"!="apple"} : ${"hello"!="apple"} <br> // true
	    \${"hello" ne "apple"} : ${"hello" ne "apple"} <br><br> // true
	    
	    \${10 < 10} : ${10 < 10} <br> // false
	    \${10 lt 10} : ${10 lt 10} <br><br> // false
	    
	    \${100>10} : ${100 > 10}<br> // true
	    \${100 gt 10} : ${100 gt 10}<br><br> // true
	    
	    \${100 <=10} : ${100 <= 10}<br> // false
	    \${100 le 10} : ${100 le 10}<br><br> // false
	    
	    \${100 >=10} : ${100 >= 10}<br> // true
	    \${100 ge 10} : ${100 ge 10}<br><br> // true
	</h3>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isELIgnored="false" %>

<html>
   <head>
      <meta  charset=”UTF-8">
      <title>표현언어의 여러 가지 연산자들</title>
   </head>
   <body>
      <h2>여러가지 논리연산자</h2>
      <h2>
      \${(10==10) && (20==20)}  : ${(10==10)&&(20==20)} <br> // true
      \${(10==10) and (20!=20)}  : ${(10==10) and (20!=20)} <br><br> // false
 
      \${(10==10) || (20!=30)}  : ${(10==10)||(20==30)} <br> // true
      \${(10!=10) or (20!=20)}  : ${(10!=10) or (20!=20)} <br><br> // false
      
      \${!(20==10)}  : ${!(20==10)}<br> // true
      \${not (20==10)}  : ${not (20==10)}<br><br> // true
      
      \${!(20!=10)}  : ${!(20!=10)}<br> // false
      \${not(20!=10)}  : ${not(20!=10)}<br><br> // false       
   </h2>
   </body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
    pageEncoding="UTF-8"
    isELIgnored="false"
    %>
<jsp:useBean id="m1" class="sec01.ex01.MemberBean" scope="page"/> // 유즈빈 생성
<jsp:setProperty name="m1" property="name" value="이순신"/> // 빈의 name 속성에 값을 설정.
<jsp:useBean id="m2" class="java.util.ArrayList" scope="page"/> // ArrayList객체를 빈으로 생성.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>표현 언어의 여러 가지 연산자들</title>
</head>
<body>
	empty 연산자
	<h2>
		\${empty m1 } :${empty m1 } <br> // m1의 name 속성에 값이 설정되어 있으므로 false
		\${not empty m1 } :${not empty m1 } <br><br> // true
		
		\${empty m2 } :${empty m2 } <br> // ArrayList 객체인 m2는 비어있으므로 true
		\${not empty m2 } :${not empty m2 } <br><br> // false
		
		\${empty "hello" } :${empty "hello" } <br> // 문자열에 대해 false 반환
		\${empty null } :${empty null } <br> // null은 true
		\${empty """ } :${empty "" } <br>  // 빈문자열은 true
	</h2>
</body>
</html>

'Bitcamp > BITCAMP - Servlet & JSP' 카테고리의 다른 글

11일차  (0) 2019.08.14
10일차  (0) 2019.08.13
8일차  (0) 2019.08.09
7일차  (0) 2019.08.08
6일차  (0) 2019.08.07
And

8일차

|

주요내용 : response객체,  pageContext객체, application 객체, 예외처리, Action tag, Java Bean

@@@@@ 0809과제
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>주문 검색 창</title>
</head>
<body>
	<form method="post" action="listOrder.jsp">
	주문번호 : <input type="text" name="order_num"><br>
	<input type="submit" value="조회하기">
	</form>
</body>
</html>
=============
<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="day0809.*"
    pageEncoding="UTF-8"
%>
<!DOCTYPE html>
<html>
<head>
	<style>
		h1 {
			text-align: center;
		}
	</style>
	<meta charset="UTF-8">
	<title>주문 정보 출력</title>
</head>
<body>
	<h1>주문 정보 출력</h1>
<%
	request.setCharacterEncoding("utf-8");
	String _order_num = request.getParameter("order_num");
	
	System.out.println(_order_num);
	
	OrderVO orderVO = new OrderVO();
	orderVO.setOrder_num(_order_num);
	OrderDAO dao = new OrderDAO();
	List orderslist = dao.listOrders(orderVO);
%>
	<table border=1 width=800 align=center>
		<tr align=center bgcolor="#FFFF66">
		<td>주문번호</td>
		<td>주문항목번호</td>
		<td>제품ID</td>
		<td>제품명</td>
		<td>항목수량</td>
		<td>항목가격</td>
		<td>수정</td>
		</tr>
<%
	for(int i=0; i < orderslist.size(); i++){
		OrderVO vo = (OrderVO) orderslist.get(i);
		String order_num = vo.getOrder_num();
		String order_item = vo.getOrder_item();
		String prod_id = vo.getProd_id();
		String prod_name = vo.getProd_name();
		String quantity = vo.getQuantity();
		String item_price = vo.getItem_price();
%>
	<tr align=center>
		<td><%= order_num %></td>
		<td><%= order_item %></td>
		<td><%= prod_id %></td>
		<td><%= prod_name %></td>
		<td><%= quantity %></td>
		<td><%= item_price %></td>
		<td><a href="correctOrder.jsp?order_num=<%= order_num %>&order_item=<%=order_item%>&prod_id=<%=prod_id%>&prod_name=<%=prod_name%>&quantity=<%=quantity%>&item_price=<%=item_price%>">수정</a></td>
	</tr>
<%
	}
%>
	</table>

</body>
</html>
===========================
package day0809;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class OrderDAO {
	private Connection con;
	private PreparedStatement pstmt; // 실무에선 PreparedStatement를 더 많이씀.
	private DataSource dataFactory;
	
	public OrderDAO()
	{
		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 boolean isExisted(OrderVO orderVO) {
//		boolean result = false;
//		String id = orderVO.getId();
//		String pwd = orderVO.getPwd();
//		try {
//			con = dataFactory.getConnection();
//			// 오라클의 decode 함수를 이용해 조회하여 ID와 비밀번호가 테이블에 존재하면 true를, 존재하지 않으면 false를 조회함.
//			String query = "select decode(count(*),1,'true','false') as result from t_member";
//					query += " where id=? and pwd=?";
//			pstmt = con.prepareStatement(query);
//			pstmt.setString(1, id);
//			pstmt.setString(2, pwd);
//			ResultSet rs = pstmt.executeQuery();
//			rs.next(); // 커서를 첫번째 레코드로 위치시킴.
//			result = Boolean.parseBoolean(rs.getString("result"));
//			System.out.println("result=" + result);
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return result;
//	}
	
	public List listOrders(OrderVO orderVO)
	{
		List orderslist = new ArrayList();
		String _order_num = orderVO.getOrder_num();
		System.out.println(_order_num);
		try
		{
			con = dataFactory.getConnection();
			String query = "select OI.order_num, OI.order_item, OI.prod_id, P.prod_name, OI.quantity, OI.item_price ";
			query += "from orderitems OI, products P ";
			query += "where OI.prod_id = P.prod_id ";
			query += "and OI.order_num like '%" + _order_num + "%'";
			// 우회로직
//			if((_order_num!=null && _order_num.length()!=0)) {
//				query+="where order_num=?";
//				pstmt = con.prepareStatement(query);
//				pstmt.setString(1, _order_num);
//			} else {
//				pstmt = con.prepareStatement(query);
//			}
			System.out.println("preparedStatement : " + query);
			pstmt = con.prepareStatement(query); // preparedStatement 메소드에 sql문을 전달해 prepareStatement객체를 생성. 
			ResultSet rs = pstmt.executeQuery(); // sql문으로 회원 정보를 조회
			while(rs.next())
			{
				// 조회한 레코드의 각 컬럼 값을 받아옴.
				// OI.order_num, OI.order_item, OI.prod_id, P.prod_name, OI.quantity, OI.item_price
				String order_num = rs.getString("order_num");
				String order_item = rs.getString("order_item");
				String prod_id = rs.getString("prod_id");
				String prod_name = rs.getString("prod_name");
				String quantity = rs.getString("quantity");
				String item_price = rs.getString("item_price");
				// 각 컬럼 값을 다시 MemberVO 객체의 속성에 설정.
				OrderVO vo = new OrderVO();
				vo.setOrder_num(order_num);
				vo.setProd_id(prod_id);
				vo.setOrder_item(order_item);
				vo.setProd_name(prod_name);
				vo.setQuantity(quantity);
				vo.setItem_price(item_price);
				orderslist.add(vo); // 설정된 MemberVO 객체를 다시 ArrayList에 저장.
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return orderslist; // 조회한 레코드의 개수만큼 MemberVO객체를 저장한 ArrayList를 반환.
	}
	
	public void correctOrder(String order_num, String order_item, String prod_id, String quantity, String item_price)// 주문정보 수정 메소드
	{
		try
		{
//			수정창 
//			주문번호(p), 주문항목번호(p), 제품ID, 항목수량, 항목가격
//			order_num, order_item, prod_id, quantity, item_price
			Connection con = dataFactory.getConnection();
			String query = "UPDATE Orderitems";
			query += " SET prod_id = ?";
			query += ", quantity = ?";
			query += ", item_price = ?";
			query += " WHERE order_num = '" + order_num + "'";
			query += " AND order_item ='" + order_item + "'";
			System.out.println("prepareStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, prod_id);
			pstmt.setString(2, quantity);
			pstmt.setString(3, item_price);
			pstmt.executeUpdate();
			pstmt.close();
			System.out.println("수정실행로그확인");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public void delOrder(String order_num)
	{
		try
		{
			Connection con = dataFactory.getConnection();
			String query = "delete from orderitems" + " where order_num=? ";
			System.out.println("prespareStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, order_num);
			pstmt.executeUpdate();
			pstmt.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}
=====================
package day0809;

import java.io.IOException;
import java.io.PrintWriter;
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 CorrectOrderServlet
 */
@WebServlet("/correct")
public class CorrectOrderServlet 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 {
		// TODO Auto-generated method stub
		doHandle(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doHandle(request, response);
	}

	protected void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		OrderVO vo = new OrderVO();
		OrderDAO dao = new OrderDAO();
		List list = null;
		
		String order_num = request.getParameter("order_num");
		String order_item = request.getParameter("order_item");
		String prod_id = request.getParameter("prod_id");
		String quantity = request.getParameter("quantity");
		String item_price = request.getParameter("item_price");
		
		vo.setOrder_num(order_num);
		vo.setOrder_item(order_item);
		vo.setProd_id(prod_id);
		vo.setQuantity(quantity);
		vo.setItem_price(item_price);
		
		dao.correctOrder(order_num, order_item, prod_id, quantity, item_price);
		
//		response.sendRedirect("refind?order_num="+order_num);
		response.sendRedirect("/pro1112/day0809/listOrder.jsp?order_num="+order_num);
		
//		list = dao.listOrders(vo);
//		request.setAttribute("list", list);
//		RequestDispatcher dispatcher = request.getRequestDispatcher("/pro1112/day0809/listOrder.jsp");
//		dispatcher.forward(request, response);
	}

}
==============================
package day0809;

import java.sql.Date;

public class OrderVO {
	// OI.order_num, OI.order_item, OI.prod_id, P.prod_name, OI.quantity, OI.item_price
	private String order_num;
	private String order_item;
	private String prod_id;
	private String prod_name;
	private String quantity;
	private String item_price;
	
	public OrderVO(){System.out.println("OrderVO 생성자 호출");}

	public String getOrder_num() {
		return order_num;
	}

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

	public String getOrder_item() {
		return order_item;
	}

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

	public String getProd_id() {
		return prod_id;
	}

	public void setProd_id(String prod_id) {
		this.prod_id = prod_id;
	}

	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;
	}
	
}
================
@@@@@@@@@@ 0809 진도
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 검색 창</title>
</head>
<body>
	<form method="post" action="member.jsp">
	이름 : <input type="text" name="name"><br>
	<input type="submit" value="조회하기">
	</form>
</body>
</html>
====================
<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="sec02.ex01.*"
    pageEncoding="UTF-8"
%>
<!DOCTYPE html>
<html>
<head>
	<style>
		h1 {
			text-align: center;
		}
	</style>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>
<body>
	<h1>회원 정보 출력</h1>
<%
	request.setCharacterEncoding("utf-8");
	String _name = request.getParameter("name");
	MemberVO memberVO = new MemberVO();
	memberVO.setName(_name);
	MemberDAO dao = new MemberDAO();
	List membersList = dao.listMembers(memberVO); // 조회조건에 해당되는 회원정보를 조회.
%>
	<table border=1 width=800 align=center>
		<tr align=center bgcolor="#FFFF66">
		<td>아이디</td>
		<td>비밀번호</td>
		<td>이름</td>
		<td>이메일</td>
		<td>가입일자</td>
		</tr>
<%
	// 데이터 루프 ( 출력 부분 )
	for(int i=0; i < membersList.size(); i++){
		MemberVO vo = (MemberVO) membersList.get(i);
		String id = vo.getId();
		String pwd = vo.getPwd();
		String name = vo.getName();
		String email = vo.getEmail();
		Date joinDate = vo.getJoinDate();
%>
	<tr align=center>
		<td><%= id %></td>
		<td><%= pwd %></td>
		<td><%= name %></td>
		<td><%= email %></td>
		<td><%= joinDate %></td>
	</tr>
<%
	}
%>
	</table>
</body>
</html>
===========================
package sec02.ex01;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class MemberDAO {
	private Connection con;
	private PreparedStatement pstmt; // 실무에선 PreparedStatement를 더 많이씀.
	private DataSource dataFactory;
	
	public MemberDAO()
	{
		try
		{
			Context ctx = new InitialContext();
			Context envContext = (Context)ctx.lookup("java:/comp/env");
			dataFactory = (DataSource)envContext.lookup("jdbc/oracle");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public List listMembers(MemberVO memberVO)
	{
		List memberslist = new ArrayList();
		String _name = memberVO.getName();
		try
		{
			con = dataFactory.getConnection();
			String query = "select * from t_member ";
			// 우회로직
            // _name 값이 존재하면 sql문에 where 절을 추가하여 해당 이름으로 조회함.
			if((_name!=null && _name.length()!=0)) {
				query+="where name=?";
				pstmt = con.prepareStatement(query);
				pstmt.setString(1, _name);
			} else { // _name값이 없으면 모든 회원 정보를 조회함.
				pstmt = con.prepareStatement(query);
			}
			System.out.println("preparedStatement : " + query);
			pstmt = con.prepareStatement(query); // preparedStatement 메소드에 sql문을 전달해 prepareStatement객체를 생성. 
			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");
				// 각 컬럼 값을 다시 MemberVO 객체의 속성에 설정.
				MemberVO vo = new MemberVO();
				vo.setId(id);
				vo.setPwd(pwd);
				vo.setName(name);
				vo.setEmail(email);
				vo.setJoinDate(joinDate);
				memberslist.add(vo); // 설정된 MemberVO 객체를 다시 ArrayList에 저장.
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return memberslist; // 조회한 레코드의 개수만큼 MemberVO객체를 저장한 ArrayList를 반환.
	}
}

VO생략
======================= 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>합계</title>
</head>
<body>
	자연수를 입력하세요.
	<form action='add.jsp'>
		1부터 <input type='text' name='num'>
		<input type='submit' value='계산하기'>
	</form>
</body>
</html>
=================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    errorPage = "addException.jsp" // 예외발생시 예외를 처리할 JSP 페이지를 지정.
%>
<%
	int num = Integer.parseInt(request.getParameter("num"));
	int sum = 0 ;
	for ( int i = 1; i<=num ; i++){
		sum = sum + i ;
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>합계 구하기</title>
</head>
<body>
	<h2>합계 구하기</h2>
	<h1>1부터 <%=num%>까지의 합은 <%=sum %>입니다.</h1>
</body>
</html>
==========================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isErrorPage="true" // 예외 페이지로 지정.
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>에러 페이지</title>
</head>
<body>
	==== toString() 내용 ==== <br>
	<h1><%= exception.toString() %></h1> // exception 내장 객체를 사용해 예외 처리를 함.
	========== getMessage()내용 ==========<br>
	<h1><%= exception.getMessage()%></h1>
	========== printStackTrace()내용 ==========<br>
	<h1><% exception.printStackTrace(); %></h1>
	<h3>
		숫자만 입력 가능합니다. 다시 시도하세요.
		<a href='add.html'>다시 하기</a>
	</h3>
</body>
</html>
==============
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	int num = Integer.parseInt(request.getParameter("num")); // 예외를 강제로 발생시킴.
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>테스트 페이지</title>
</head>
<body>
	<h1>쇼핑몰 중심 JSP 입니다^^</h1>
</body>
</html>

================
//xml로 각각의 에러코드에 대한 예외 처리 페이지를 지정하는 방법
<?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">
  <error-page>
    <error-code>404</error-code>
    <location>/err/error_404.jsp</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/err/error_500.jsp</location>
  </error-page>
</web-app>
======================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>404 예외 처리 페이지</title>
</head>
<body>
	<h1>요청한 페이지는 존재하지 않습니다.</h1>
</body>
</html>
==============================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	// param 액션 태그로 전달된 매개변수를 getParameter 메소드를 이용해 가져옴.
	request.setCharacterEncoding("utf-8");
	String name = request.getParameter("name");
	String imgName = request.getParameter("imgName");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>듀크 이미지</title>
</head>
<body>
	<br><br>
	<h1>이름은 <%=name %>입니다.</h1><br><br>
	<img 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">
<title>include1.jsp</title>
</head>
<body>
	안녕하세요. 쇼핑몰 중심 JSP시작입니다.
	<br>
	<jsp:include page="duke_image.jsp" flush="true"> // duke_image.jsp를 동적으로 전달함.
    	// param 액션 태그를 이용해 duke_image.jsp로 이름과 파일 이름을 전달함.
		<jsp:param name="name" value="듀크"/>
		<jsp:param name="imgName" value="duke.png"/>
	</jsp:include>
	<br>
	안녕하세요. 쇼핑몰 중심 JSP 끝부분입니다^^
</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">
<title>로그인 창</title>
</head>
<body>
	<h1>아이디를 입력하지 않았습니다. 아이디를 입력해주세요.</h1>
	<form method = "post" action="result.jsp">
		아이디 : <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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과출력창</title>
</head>
<body>
<%
	String userID = request.getParameter("userID");
	if(userID.length()==0){
		/*
		RequestDispatcher dispatch = request.getRequestDispatcher("login.jsp");
		dispatch.forward(request, response);
		*/
%>
	<jsp:forward page="login.jsp"/> // id를 입력하지 않았으면 다시 <jsp:forward> 태그를 사용해 로그인창으로 포워딩함.
<%
	}
%>
	<h1> 환영합니다. <%=userID %> 님!!!</h1>
</body>
</html>
==========================================
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 가입창</title>
</head>
<body>
	<form method="post" action="member.jsp">
		<h1 style="text-align:center">회원 가입창</h1>
		<table align="center">
			<tr>
				<td width="200">
					<p align="right">아이디
				</td>
				<td width="400"><input type="text" name="id"></td>
			</tr>
			<tr>
				<td width="200">
					<p align="right">비밀번호
				</td>
				<td width="400"><input type="password" name="pwd"></td>
			</tr>
			<tr>
				<td width="200">
					<p align="right">이름
				</td>
				<td width="400">
					<p><input type="text" name="name">
				</td>
			</tr>
			<tr>
				<td width="200">
					<p align="right">이메일
				</td>
				<td width="400">
					<p><input type="text" name="email">
				</td>
			</tr>
			<tr>
				<td width="200">
					<p>&nbsp;</p>
				</td>
				<td width="400">
					<input type="submit" value="가입하기">
					<input type="reset" value="다시입력">
				</td>
			</tr>
		</table>
	</form>
</body>
</html>
====================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="sec01.ex01.*"
    pageEncoding="UTF-8"
%>
<%
	request.setCharacterEncoding("UTF-8");
%>
<%
	String id = request.getParameter("id");
	String pwd = request.getParameter("pwd");
	String name = request.getParameter("name");
	String email = request.getParameter("email");
    // MemberBean 객체를 생성한 후 회원 정보를 속성에 설정함.
	MemberBean m = new MemberBean(id, pwd, name, email);
	MemberDAO memberDAO = new MemberDAO();
	memberDAO.addMember(m); // 회원정보를 테이블에 추가함.
	List membersList = memberDAO.listMembers(); // 전체회원 정보를 조회함.
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 목록창</title>
</head>
<body>
	<table align="center" width="100%">
		<tr align=center bgcolor="#99ccff">
		<td width="7%">아이디</td>
		<td width="7%">비밀번호</td>
		<td width="5%">이름</td>
		<td width="11%">이메일</td>
		<td width="5%">가입일</td>
		</tr>
<%
	if(membersList.size()==0){
%>
	<tr>
		<td colspan="5">
			<p align="center"><b><span style="font-size:9pt;">
				등록된 회원이 없습니다.</span></b></p>
		</td>
	</tr>
	<%
	} else {
		for(int i = 0; i< membersList.size(); i++){
			MemberBean bean = (MemberBean) membersList.get(i);
	%>
		<tr align="center">
			<td>
				<%= bean.getId() %>
			</td>
			<td>
				<%= bean.getPwd() %>
			</td>
			<td>
				<%= bean.getName() %>
			</td>
			<td>
				<%= bean.getEmail() %>
			</td>
			<td>
				<%= bean.getJoinDate() %>
			</td>
		</tr>
	<%
		}
	}
	%>
		<tr height="1" bgcolor="#99ccff">
			<td colspan="5"></td>
		</tr>
	</table>
</body>
</html>
=================================
package sec01.ex01;

import java.sql.Date;

public class MemberBean {
	private String id;
	private String pwd;
	private String name;
	private String email;
	private Date joinDate;
	
	public MemberBean()
	{
		System.out.println("MeberVO 생성자 호출");
	}
	
	public MemberBean(String id, String pwd, String name, String email) {
		this.id = id;
		this.pwd = pwd;
		this.name = name;
		this.email = email;
	}

	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getJoinDate() {
		return joinDate;
	}
	public void setJoinDate(Date joinDate) {
		this.joinDate = joinDate;
	}
}
=====================
package sec01.ex01;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class MemberDAO {
	private Connection con;
	private PreparedStatement pstmt; // 실무에선 PreparedStatement를 더 많이씀.
	private DataSource dataFactory;
	
	public MemberDAO()
	{
		try
		{
			Context ctx = new InitialContext();
			Context envContext = (Context)ctx.lookup("java:/comp/env");
			dataFactory = (DataSource)envContext.lookup("jdbc/oracle");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public List listMembers()
	{
		List memberslist = new ArrayList();
		try
		{
			con = dataFactory.getConnection();
            // 회원 정보를 최근 가입일 순으로 조회함.
			String query = "select * from t_member order by joinDate desc";
			System.out.println("preparedStatement : " + query);
			pstmt = con.prepareStatement(query); // preparedStatement 메소드에 sql문을 전달해 prepareStatement객체를 생성. 
			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");
				// 각 컬럼 값을 다시 MemberVO 객체의 속성에 설정.
				MemberBean vo = new MemberBean();
				vo.setId(id);
				vo.setPwd(pwd);
				vo.setName(name);
				vo.setEmail(email);
				vo.setJoinDate(joinDate);
				memberslist.add(vo); // 설정된 MemberVO 객체를 다시 ArrayList에 저장.
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return memberslist; // 조회한 레코드의 개수만큼 MemberVO객체를 저장한 ArrayList를 반환.
	}
	
	public void addMember(MemberBean memberBean)
	{
		try
		{
			Connection con = dataFactory.getConnection();
			String id = memberBean.getId();
			String pwd = memberBean.getPwd();
			String name = memberBean.getName();
			String email = memberBean.getEmail();
			String query = "insert into t_member";
			query += " (id,pwd,name,email)";
			query += " values(?,?,?,?)"; // 순서대로 값을 assign 해야함.
			System.out.println("prepareStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, id);
			pstmt.setString(2, pwd);
			pstmt.setString(3, name);
			pstmt.setString(4, email);
			pstmt.executeUpdate();
			pstmt.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}
==================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="sec01.ex01.*"
    pageEncoding="UTF-8"
%>
<%
	request.setCharacterEncoding("UTF-8");
%>
// 유즈빈 액션 태그로 id가 m인 MemberBean 객체를 만듬.
<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page"/>

<%
	String id = request.getParameter("id");
	String pwd = request.getParameter("pwd");
	String name = request.getParameter("name");
	String email = request.getParameter("email");
    //자바 코드에서 MemberBean 객체를 생성하지 않습니다.
	/*MemberBean m = new MemberBean(id, pwd, name, email);*/
	m.setId(id);
	m.setPwd(pwd);
	m.setName(name);
	m.setEmail(email);
	
	MemberDAO memberDAO = new MemberDAO();
	memberDAO.addMember(m);
	List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 목록창</title>
</head>
<body>
	<table align="center" width="100%">
		<tr align=center bgcolor="#99ccff">
		<td width="7%">아이디</td>
		<td width="7%">비밀번호</td>
		<td width="5%">이름</td>
		<td width="11%">이메일</td>
		<td width="5%">가입일</td>
		</tr>
<%
	if(membersList.size()==0){
%>
	<tr>
		<td colspan="5">
			<p align="center"><b><span style="font-size:9pt;">
				등록된 회원이 없습니다.</span></b></p>
		</td>
	</tr>
	<%
	} else {
		for(int i = 0; i< membersList.size(); i++){
			MemberBean bean = (MemberBean) membersList.get(i);
	%>
		<tr align="center">
			<td>
				<%= bean.getId() %>
			</td>
			<td>
				<%= bean.getPwd() %>
			</td>
			<td>
				<%= bean.getName() %>
			</td>
			<td>
				<%= bean.getEmail() %>
			</td>
			<td>
				<%= bean.getJoinDate() %>
			</td>
		</tr>
	<%
		}
	}
	%>
		<tr height="1" bgcolor="#99ccff">
			<td colspan="5"></td>
		</tr>
	</table>
</body>
</html>
====================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="sec01.ex01.*"
    pageEncoding="UTF-8"
%>
<%
	request.setCharacterEncoding("UTF-8");
%>

<jsp:useBean id="m" class="sec01.ex01.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") %>'/>

<%
	// 자바 코드를 이용해 빈에 설정할 필요가 없게됨.
	/*
	String id = request.getParameter("id");
	String pwd = request.getParameter("pwd");
	String name = request.getParameter("name");
	String email = request.getParameter("email");
	m.setId(id);
	m.setPwd(pwd);
	m.setName(name);
	m.setEmail(email);*/
	MemberDAO memberDAO = new MemberDAO();
	memberDAO.addMember(m);
	List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 목록창</title>
</head>
<body>
	<table align="center" width="100%">
		<tr align=center bgcolor="#99ccff">
		<td width="7%">아이디</td>
		<td width="7%">비밀번호</td>
		<td width="5%">이름</td>
		<td width="11%">이메일</td>
		<td width="5%">가입일</td>
		</tr>
<%
	if(membersList.size()==0){
%>
	<tr>
		<td colspan="5">
			<p align="center"><b><span style="font-size:9pt;">
				등록된 회원이 없습니다.</span></b></p>
		</td>
	</tr>
	<%
	} else {
		for(int i = 0; i< membersList.size(); i++){
			MemberBean bean = (MemberBean) membersList.get(i);
	%>
		<tr align="center">
			<td>
				<%= bean.getId() %>
			</td>
			<td>
				<%= bean.getPwd() %>
			</td>
			<td>
				<%= bean.getName() %>
			</td>
			<td>
				<%= bean.getEmail() %>
			</td>
			<td>
				<%= bean.getJoinDate() %>
			</td>
		</tr>
	<%
		}
	}
	%>
		<tr height="1" bgcolor="#99ccff">
			<td colspan="5"></td>
		</tr>
	</table>
</body>
</html>
=================================================


<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="sec01.ex01.*"
    pageEncoding="UTF-8"
%>
<%
	request.setCharacterEncoding("UTF-8");
%>

<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page"/>
// 회원 가입창에서 전달된 매개변수 이름과 속성 이름이 같으면 같은 이름으로 값을 설정.
// param이 getParameter(value)를 대체
<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 membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 목록창</title>
</head>
<body>
	<table align="center" width="100%">
		<tr align=center bgcolor="#99ccff">
		<td width="7%">아이디</td>
		<td width="7%">비밀번호</td>
		<td width="5%">이름</td>
		<td width="11%">이메일</td>
		<td width="5%">가입일</td>
		</tr>
<%
	if(membersList.size()==0){
%>
	<tr>
		<td colspan="5">
			<p align="center"><b><span style="font-size:9pt;">
				등록된 회원이 없습니다.</span></b></p>
		</td>
	</tr>
	<%
	} else {
		for(int i = 0; i< membersList.size(); i++){
			MemberBean bean = (MemberBean) membersList.get(i);
	%>
		<tr align="center">
			<td>
				<%= bean.getId() %>
			</td>
			<td>
				<%= bean.getPwd() %>
			</td>
			<td>
				<%= bean.getName() %>
			</td>
			<td>
				<%= bean.getEmail() %>
			</td>
			<td>
				<%= bean.getJoinDate() %>
			</td>
		</tr>
	<%
		}
	}
	%>
		<tr height="1" bgcolor="#99ccff">
			<td colspan="5"></td>
		</tr>
	</table>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="sec01.ex01.*"
    pageEncoding="UTF-8"
%>
<%
	request.setCharacterEncoding("UTF-8");
%>

<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page"/>
// 회원 가입창에서 전달받은 매개변수 이름이 일치하는 useBean 속성에 자동으로 값을 설정.
// param 과 property 이름이 같으면 param을 생략가능
<jsp:setProperty property="id" name="m" />
<jsp:setProperty property="pwd" name="m" />
<jsp:setProperty property="name" name="m" />
<jsp:setProperty property="email" name="m" />

<%
	MemberDAO memberDAO = new MemberDAO();
	memberDAO.addMember(m);
	List membersList = memberDAO.listMembers();
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 목록창</title>
</head>
<body>
	<table align="center" width="100%">
		<tr align=center bgcolor="#99ccff">
		<td width="7%">아이디</td>
		<td width="7%">비밀번호</td>
		<td width="5%">이름</td>
		<td width="11%">이메일</td>
		<td width="5%">가입일</td>
		</tr>
<%
	if(membersList.size()==0){
%>
	<tr>
		<td colspan="5">
			<p align="center"><b><span style="font-size:9pt;">
				등록된 회원이 없습니다.</span></b></p>
		</td>
	</tr>
	<%
	} else {
		for(int i = 0; i< membersList.size(); i++){
			MemberBean bean = (MemberBean) membersList.get(i);
	%>
		<tr align="center">
			<td>
				<%= bean.getId() %>
			</td>
			<td>
				<%= bean.getPwd() %>
			</td>
			<td>
				<%= bean.getName() %>
			</td>
			<td>
				<%= bean.getEmail() %>
			</td>
			<td>
				<%= bean.getJoinDate() %>
			</td>
		</tr>
	<%
		}
	}
	%>
		<tr height="1" bgcolor="#99ccff">
			<td colspan="5"></td>
		</tr>
	</table>
</body>
</html>

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
	import="sec01.ex01.*"
    pageEncoding="UTF-8"
%>
<%
	request.setCharacterEncoding("UTF-8");
%>

<jsp:useBean id="m" class="sec01.ex01.MemberBean" scope="page"/>
// 전송된 매개변수 이름과 빈 속성을 비교한 후 동일한 빈에 값을 자동으로 설정함.
// 모든 property에 대해 설정시 *로 처리가능
<jsp:setProperty property="*" name="m" />

<%
	MemberDAO memberDAO = new MemberDAO();
	memberDAO.addMember(m); /*멤버추가*/
	List membersList = memberDAO.listMembers(); /*멤버조회*/
%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 목록창</title>
</head>
<body>
	<table align="center" width="100%">
		<tr align=center bgcolor="#99ccff">
		<td width="7%">아이디</td>
		<td width="7%">비밀번호</td>
		<td width="5%">이름</td>
		<td width="11%">이메일</td>
		<td width="5%">가입일</td>
		</tr>
<%
	if(membersList.size()==0){
%>
	<tr>
		<td colspan="5">
			<p align="center"><b><span style="font-size:9pt;">
				등록된 회원이 없습니다.</span></b></p>
		</td>
	</tr>
	<%
	} else {
		for(int i = 0; i< membersList.size(); i++){
			MemberBean bean = (MemberBean) membersList.get(i);
	%>
		<tr align="center">
			<td>
				<%= bean.getId() %>
			</td>
			<td>
				<%= bean.getPwd() %>
			</td>
			<td>
				<%= bean.getName() %>
			</td>
			<td>
				<%= bean.getEmail() %>
			</td>
			<td>
				<%= bean.getJoinDate() %>
			</td>
		</tr>
	<%
		}
	}
	%>
		<tr height="1" bgcolor="#99ccff">
			<td colspan="5"></td>
		</tr>
	</table>
</body>
</html>





'Bitcamp > BITCAMP - Servlet & JSP' 카테고리의 다른 글

10일차  (0) 2019.08.13
9일차  (0) 2019.08.12
7일차  (0) 2019.08.08
6일차  (0) 2019.08.07
5일차  (0) 2019.08.06
And

7일차

|

주요내용 : JSP, Directive Tag(page, taglib, include), Scripting Element, JSP서블릿 주요 메소드, 내장객체(application, request, session, page), response객체


@@@@@@@@@@@@@@@@@@@@ 0808 실습과제
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<script type="text/javascript">
		function fn_validate(){
			var frmLogin = document.frmLogin;
				frmLogin.method = "get";
				frmLogin.action = "vendor";
				frmLogin.submit();
		}
	</script>
<title>공급업체번호 조회</title>
</head>
<body>
	<form name = "frmLogin" method = "get" action="vendor" encType="UTF-8">
		공급업체번호:<input type = "text" name = "vend_id">
		<input type = "button" onClick="fn_validate()" value = "조회">
		<input type = "hidden" name="command" value="frmLogin">
	</form>
</body>
</html>
===================================
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>공급업체 정보 수정 창</title>
<script type="text/javascript">
	function fn_correctVendor(){
		var correctVendor = document.correctVendor;
		var vend_id = correctVendor.vend_id.value;
		var vend_name = correctVendor.vend_name.value;
		var vend_address = correctVendor.vend_address.value;
		var vend_city = correctVendor.vend_city.value;
		var vend_state = correctVendor.vend_state.value;
		var vend_zip = correctVendor.vend_zip.value;
		var vend_country = correctVendor.vend_country.value;
		if(vend_id.length == 0 || vend_id == ""){
			alert("공급업체번호는 필수입니다.");
		} else if (vend_name.length == 0 || vend_name == ""){
			alert("공급업체이름은 필수입니다.");
		} else if (vend_address.length == 0 || vend_address == ""){
			alert("공급업체주소는 필수입니다.");
		} else if (vend_city.length == 0 || vend_city == ""){
			alert("공급업체시는 필수입니다.");
		} else if (vend_state.length == 0 || vend_state == ""){
			alert("공급업체주는 필수입니다.");
		} else if (vend_zip.length == 0 || vend_zip == ""){
			alert("공급업체우편번호는 필수입니다.");
		} else if (vend_country.length == 0 || vend_country == ""){
			alert("공급업체국가는 필수입니다.");
		} else { 
			correctVendor.method = "get";
			correctVendor.action = "correct";
			correctVendor.submit();
		}
	}
</script>
</head>
<body>
	<form name="correctVendor">
		<table>
			<th>공급업체정보 수정</th>
			<tr>
				<td>공급업체번호</td>
				<td><input type="text" name="vend_id"></td>
			</tr>
			<tr>
				<td>공급업체이름</td>
				<td><input type="text" name="vend_name"></td>
			</tr>
			<tr>
				<td>공급업체주소</td>
				<td><input type="text" name="vend_address"></td>
			</tr>
			<tr>
				<td>공급업체시</td>
				<td><input type="text" name="vend_city"></td>
			</tr>
			<tr>
				<td>공급업체주</td>
				<td><input type="text" name="vend_state"></td>
			</tr>
			<tr>
				<td>공급업체우편번호</td>
				<td><input type="text" name="vend_zip"></td>
			</tr>
			<tr>
				<td>공급업체국가</td>
				<td><input type="text" name="vend_country"></td>
			</tr>
		</table>
		<input type="button" value="수정" onClick="fn_correctVendor()">
		<input type="hidden" name="command" value="correctVendor"/>
	</form>
</body>
</html>
=========================
package Week05.day0808;

import java.io.IOException;
import java.io.PrintWriter;
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;

@WebServlet("/vendor")
public class VendorServlet 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);
	}
	
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		VendorDAO dao = new VendorDAO();
		String command = request.getParameter("command");
		String input_id = request.getParameter("vend_id");
//		List list = null;
		
		if (command !=null && command.equals("delVendor")) // 공급업체삭제 
		{
			String vend_id = request.getParameter("vend_id"); // id만 받아서 삭제
			dao.delVendor(vend_id);
		} 
		
		List list = dao.listVendors(input_id); // listVendors메소드로 공급업체를 조회
			
		out.print("<html><body>");
		out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
//		-- 공급업체번호로 조회
//		-- 공급업체번호, 공급업체이름, 공급업체주소, 공급업체시, 공급업체주, 공급업체우편번호, 공급업체국가, (수정), (삭제)
//		vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country
		out.print("<td>공급업체번호</td><td>공급업체이름</td><td>공급업체주소</td><td>공급업체시</td><td>공급업체주</td><td>공급업체우편번호</td><td>공급업체국가</td><td>수정</td><td>삭제</td></tr>");
			
		for(int i = 0; i<list.size(); i++)
		{
			VendorVO vendorVO = (VendorVO) list.get(i);
			String vend_id = vendorVO.getVend_id();
			String vend_name = vendorVO.getVend_name();
			String vend_address = vendorVO.getVend_address();
			String vend_city = vendorVO.getVend_city();
			String vend_state = vendorVO.getVend_state();
			String vend_zip = vendorVO.getVend_zip();
			String vend_country = vendorVO.getVend_country();
			out.print("<tr><td>" + vend_id + "</td><td>" + vend_name +"</td><td>" + vend_address + "</td><td>" + vend_city + "</td><td>" + vend_state + "</td><td>" + vend_zip + "</td><td>" + vend_country+ "</td><td>" + "<a href='/pro10/correctvendor.html'> 수정 </a></td>" + "</td><td>" + "<a href='/pro10/vendor?command=delVendor&vend_id=" + vend_id + "'> 삭제 </a></td></tr>");
		}
		out.print("</table></body></html>");
		out.print("<a href='/pro10/findvendor.html'>새로운 공급업체 조회하기</a>");
	}

}
================================
package Week05.day0808;

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 CorrectVendorServlet
 */
@WebServlet("/correct")
public class CorrectVendorServlet 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();
		String vend_id = request.getParameter("vend_id");
		VendorDAO dao = new VendorDAO();
		String command = request.getParameter("command");
        //바인딩해서 넘어온 request에서 회원정보를 가져온다.
		if(command != null && command.equals("correctVendor"))
		{
			String p_vend_id = request.getParameter("vend_id");
			String p_vend_name = request.getParameter("vend_name");
			String p_vend_address = request.getParameter("vend_address");
			String p_vend_city = request.getParameter("vend_city");
			String p_vend_state = request.getParameter("vend_state");
			String p_vend_zip = request.getParameter("vend_zip");
			String p_vend_country = request.getParameter("vend_country");
			dao.correctVendor(p_vend_id, p_vend_name, p_vend_address, p_vend_city, p_vend_state, p_vend_zip, p_vend_country);
		}	
		response.sendRedirect("vendor?vend_id="+vend_id);
	}

}
=============================
package Week05.day0808;

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 VendorDAO {
	private Connection con;
	private PreparedStatement pstmt; 
	private DataSource dataFactory;
	
	public VendorDAO()
	{
		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 listVendors(String input_id) // 공급업체조회 메소드
	{
		List list = new ArrayList();
		try
		{
			con = dataFactory.getConnection();
			String query = "select vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country "
					+ "from vendors "
					+ "where vend_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 vend_id = rs.getString("vend_id"); // " " 안에는 컬럼명이 와야함.!!!!!!!!!!!!!!
				String vend_name =rs.getString("vend_name");
				String vend_address = rs.getString("vend_address");
				String vend_city = rs.getString("vend_city");
				String vend_state = rs.getString("vend_state");
				String vend_zip = rs.getString("vend_zip");
				String vend_country = rs.getString("vend_country");
				// 각 컬럼 값을 다시 MemberVO 객체의 속성에 설정.
				VendorVO vo = new VendorVO();
				vo.setVend_id(vend_id);
				vo.setVend_name(vend_name);
				vo.setVend_address(vend_address);
				vo.setVend_city(vend_city);
				vo.setVend_state(vend_state);
				vo.setVend_zip(vend_zip);
				vo.setVend_country(vend_country);
				list.add(vo); // 설정된 MemberVO 객체를 다시 ArrayList에 저장.
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return list; // 조회한 레코드의 개수만큼 MemberVO객체를 저장한 ArrayList를 반환.
	}
	
	public void delVendor(String input_id) // 공급업체삭제 메소드
	{
		try
		{
			VendorVO vo = new VendorVO();
			vo.setDelId(input_id);
			con = dataFactory.getConnection();
			String query = "delete from vendors";
			query += " where vend_id = '" + input_id + "'";
			System.out.println("presparedStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.executeUpdate();
			pstmt.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public void correctVendor(String p_vend_id, String p_vend_name, String p_vend_address, String p_vend_city, String p_vend_state, String p_vend_zip, String p_vend_country)// 공급업체 수정 메소드
	{
		try
		{
        // DataSource 이용해 데이터베이스와 연결
			Connection con = dataFactory.getConnection();
            // insert문을 문자열로 만듬.
			String query = "UPDATE vendors";
			query += " SET vend_name = '" + p_vend_name + "'";
			query += ", vend_address = '" + p_vend_address + "'";
			query += ", vend_city = '" + p_vend_city + "'";
			query += ", vend_state = '" + p_vend_state + "'";
			query += ", vend_zip = " + p_vend_zip + "";
			query += ", vend_country = '" + p_vend_country + "'";
			query += " WHERE vend_id = '" + p_vend_id + "'";
			
//			query += " SET (vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)";
//			query += " = (p_vend_name, p_vend_address, p_vend_city, p_vend_state, p_vend_zip, p_vend_country)";
//			query += " WHERE vend_id = '" + p_vend_id + "'"; // 순서대로 값을 assign 해야함.
			System.out.println("prepareStatement: " + query);
			pstmt = con.prepareStatement(query);
            // insert문의 각 ? 순서대로 회원정보를 세팅
            // setString 은 쿼리구문에 물음표(?)가 들어간 경우에 setString을 사용.
//			pstmt.setString(1, p_vend_id);
//			pstmt.setString(2, p_vend_name);
//			pstmt.setString(3, p_vend_address);
//			pstmt.setString(4, p_vend_city);
//			pstmt.setString(5, p_vend_state);
//			pstmt.setString(6, p_vend_zip);
//			pstmt.setString(7, p_vend_country);
            // 회원정보를 테이블에 추가.
			pstmt.executeUpdate();
			pstmt.close();
			System.out.println("수정실행4");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
    
    // 아래 방법으로도 가능.
//  public void correctVendor(String p_vend_id, String p_vend_name, String p_vend_address, String p_vend_city, String p_vend_state, String p_vend_zip, String p_vend_country)// 공급업체 수정 메소드
//	{
//		try
//		{
//        // DataSource 이용해 데이터베이스와 연결
//			Connection con = dataFactory.getConnection();
//            // insert문을 문자열로 만듬.
//			String query = "Update vendors";
//			query += " Set vend_name = ?";
//			query += ", vend_address = ?";
//			query += ", vend_city = ?";
//			query += ", vend_state = ?";
//			query += ", vend_zip = ?";
//			query += ", vend_country = ?";
//			query += " Where vend_id='"+p_vend_id+"'";
//			System.out.println("prepareStatement: " + query);
//			pstmt = con.prepareStatement(query);
//            // insert문의 각 ? 순서대로 회원정보를 세팅
			  // where절의 물음표는 setString에 안들어가짐!
//			pstmt.setString(1, p_vend_name);
//			pstmt.setString(2, p_vend_address);
//			pstmt.setString(3, p_vend_city);
//			pstmt.setString(4, p_vend_state);
//			pstmt.setInt(5, Integer.parseInt(p_vend_zip));
//			pstmt.setString(6, p_vend_country);
//            // 회원정보를 테이블에 추가.
//			pstmt.executeUpdate();
//			pstmt.close();
//		} catch (Exception e)
//		{
//			e.printStackTrace();
//		}
//	}

}
===========================package Week05.day0808;

public class VendorVO {
	// vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country
	private String vend_id;
	private String vend_name;
	private String vend_address;
	private String vend_city;
	private String vend_state;
	private String vend_zip;
	private String vend_country;
	private String delId;

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

	public String getVend_id() {
		return vend_id;
	}

	public void setVend_id(String vend_id) {
		this.vend_id = vend_id;
	}

	public String getVend_name() {
		return vend_name;
	}

	public void setVend_name(String vend_name) {
		this.vend_name = vend_name;
	}

	public String getVend_address() {
		return vend_address;
	}

	public void setVend_address(String vend_address) {
		this.vend_address = vend_address;
	}

	public String getVend_city() {
		return vend_city;
	}

	public void setVend_city(String vend_city) {
		this.vend_city = vend_city;
	}

	public String getVend_state() {
		return vend_state;
	}

	public void setVend_state(String vend_state) {
		this.vend_state = vend_state;
	}

	public String getVend_zip() {
		return vend_zip;
	}

	public void setVend_zip(String vend_zip) {
		this.vend_zip = vend_zip;
	}

	public String getVend_country() {
		return vend_country;
	}

	public void setVend_country(String vend_country) {
		this.vend_country = vend_country;
	}
	
	public String getDelId() {
		return delId;
	}

	public void setDelId(String delId) {
		this.delId = delId;
	}

	
}
===============================
@@@@@@@@@@@@@@@@@@@@ JSP 진도
<%@ page import="java.util.Calendar" %> 
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>Calendar 클래스 사용</title></head>
<body>
<%
java.util.Calendar cal = java.util.Calendar.getInstance();
%>
오늘은
<%= cal.get(java.util.Calendar.YEAR)%>년
<%= cal.get(java.util.Calendar.MONTH) +1 %>월
<%= cal.get(java.util.Calendar.DATE)%>일
입니다.
</body>
</html>
====================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>인클루드 디렉티브</title>
</head>
<body>
	<h1>안녕하세요. 쇼핑몰 중심 JSP 시작입니다!!</h1><br>
	<%@ include file="duke_image.jsp" %><br> //image폴더의 duke.png를 표시합니다.
	<h1>안녕하세요. 쇼핑몰 중심 JSP 끝 부분입니다!!</h1>
</body>
</html>
======================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>duke_image</title>
</head>
<body>
	<img src="./image/duke.png" /> // 인클루드 디렉티브 태그를 이용해 duke_image.jsp를 포함합니다.
</body>
</html>
============================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%!
	// 선언문을 이용해 멤버 변수 name과 멤버 메서드 getName()을 선언합니다.
	String name = "듀크";
	public String getName(){ return name; }
%>
	// 스크립트릿을 이용해 자바 코드를 작성함.
<% String age = request.getParameter("age"); %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>선언문 연습</title>
</head>
<body>
	<h1>안녕하세요 <%=name %>님!!</h1> // 표현식을 이용해 선언문에서 선언한 name의값을 출력함.
	<h1>나이는 <%=age %>살입니다!!</h1> // 표현식을 이용해 전송된 나이를 출력함.
</body>
</html>
============================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%!
public int add(int a, int b){
	int c = a + b;
	return c;
}

public int subtract(int a, int b){
	int c = a - b;
	return c;
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>스크립트릿에서 선언부 사용하기</title>
</head>
<body>
<%
int value1 = 3;
int value2 = 9;

int addResult = add(value1, value2);
int subtractResult = subtract(value1, value2);
%>

<%= value1 %> + <%= value2 %> = <%= addResult %>
<br>
<%= value1 %> - <%= value2 %> = <%= subtractResult %>
</body>
</html>
=======================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("utf-8");
	String user_id = request.getParameter("user_id");
	String user_pw = request.getParameter("user_pw");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과출력창</title>
</head>
<body>
<%
	if(user_id==null || user_id.length()==0){
%>
	아이디를 입력하세요.<br>
	<a href="/pro11/login.html">로그인하기</a>
	<%
	}else{
	%>
	<h1> 환영합니다. <%=user_id %> 님!!!</h1>
	<%
	}
%>
</body>
</html>
==========================================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	// 이름과 주소를 session 과 aplication 내장 객체에 바인딩함.
	session.setAttribute("name", "이순신");
	application.setAttribute("address", "서울시 성동구");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>내장 객체 스코프 테스트1</title>
</head>
<body>
	<h1> 이름과 주소를 저장합니다.</h1>
	<a href=appTest2.jsp>두번째 웹페이지로 이동</a>
</body>
</html>

==============================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	// 첫번째 웹페이지에서 저장한 데이터를 session과 application 내장객체에서 가져옴.
	String name=(String)session.getAttribute("name");
	String address=(String)application.getAttribute("address");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>내장 객체 스코프 테스트2</title>
</head>
<body>
	<h1>이름은 <%=name %>입니다.</h1>
	<h1>주소는 <%=address %>입니다.</h1>
</body>
</html>
=============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>폼 생성</title>
</head>
<body>
	<form action="/pro11/viewParameter.jsp" method="post">
	이름 : <input type = "text" name="name" size="10"><br>
	주소 : <input type = "text" name="address" size="30"><br>
	좋아하는 동물 : 
		<input type = "checkbox" name="pet" value="dog">강아지
		<input type = "checkbox" name="pet" value="cat">고양이
		<input type = "checkbox" name="pet" value="pig">돼지
		<br>
	<input type = "submit" value="전송">
	</form>
</body>
</html>

=================================
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Enumeration" %>
<%@ page import="java.util.Map" %>
<%
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>요청 파라미터 출력</title>
</head>
<body>
	<b>request.getParameter()메소드 사용</b><br>
	name 파라미터 = <%= request.getParameter("name")%><br>
	address 파라미터 = <%= request.getParameter("address")%><br>
	<p>
	<b>request.getParameter()메소드 사용</b><br>
	<%
		String[] values = request.getParameterValues("pet");
		if(values!=null){
			for(int i=0; i<values.length; i++){
	%>
	<%= values[i]%>
	<%
			}
		}
	%>
	<p>
	<b>request.getParameterNames()메소드 사용</b><br>
	<%
	Enumeration paramEnum = request.getParameterNames();
	while(paramEnum.hasMoreElements()){
		String name = (String)paramEnum.nextElement();
	%>
	 <%= name %>
	<%
	}
	%>
	<p>
	<b>request.getParameterMap()메소드 사용</b><br>
	<%
	Map parameterMap = request.getParameterMap();
	String[] nameParam = (String[])parameterMap.get("name");
	if(nameParam!=null){
	%>
	name= <%= nameParam[0] %>
	<%
	}
	%>
</body>
</html>



 

'Bitcamp > BITCAMP - Servlet & JSP' 카테고리의 다른 글

9일차  (0) 2019.08.12
8일차  (0) 2019.08.09
6일차  (0) 2019.08.07
5일차  (0) 2019.08.06
4일차  (0) 2019.08.05
And

6일차

|

주요내용 : URL패턴, Filter, Listener

@@@@ 0807 실습
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<script type="text/javascript">
		function fn_validate(){
			var frmLogin = document.frmLogin;
				frmLogin.method = "get";
				frmLogin.action = "prod";
				frmLogin.submit();
		}
	</script>
<title>제품 조회</title>
</head>
<body>
	<form name = "frmLogin" method = "get" action="prod" encType="UTF-8">
		제품번호:<input type = "text" name = "prod_id">
		공급업체번호:<input type = "text" name = "vend_id">
		<input type = "button" onClick="fn_validate()" value = "조회">
		<input type = "button" value="제품추가" onClick="location.href='customer3.html'">
		<input type = "hidden" name="command" value="frmLogin">
	</form>
</body>
</html>
==========================================
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제품 추가 창</title>
<script type="text/javascript">
	function fn_addProduct(){
		var addProduct = document.addProduct;
		var prod_id = addProduct.prod_id.value;
		var prod_name = addProduct.prod_name.value;
		var prod_price = addProduct.prod_price.value;
		var prod_desc = addProduct.prod_desc.value;
		var vend_id = addProduct.vend_id.value;
		if(prod_id.length == 0 || prod_id == ""){
			alert("제품번호는 필수입니다.");
		} else if (prod_name.length == 0 || prod_name == ""){
			alert("제품이름은 필수입니다.");
		} else if (prod_price.length == 0 || prod_price == ""){
			alert("제품가격은 필수입니다.");
		} else if (prod_desc.length == 0 || prod_desc == ""){
			alert("제품설명은 필수입니다.");
		} else if (vend_id.length == 0 || vend_id == ""){
			alert("공급업체번호는 필수입니다.");
		} else { 
			addProduct.method = "post";
			addProduct.action = "prod";
			addProduct.submit();
		}
	}
</script>
</head>
<body>
	<form name="addProduct">
		<table>
			<th>제품 추가 창</th>
			<tr>
				<td>제품번호</td>
				<td><input type="text" name="prod_id"></td>
			</tr>
			<tr>
				<td>제품명</td>
				<td><input type="text" name="prod_name"></td>
			</tr>
			<tr>
				<td>제품가격</td>
				<td><input type="text" name="prod_price"></td>
			</tr>
			<tr>
				<td>제품설명</td>
				<td><input type="text" name="prod_desc"></td>
			</tr>
			<tr>
				<td>공급업체번호</td>
				<td><input type="text" name="vend_id"></td>
			</tr>
		</table>
		<input type="button" value="제품추가" onClick="fn_addProduct()">
		<input type="hidden" name="command" value="addProduct"/>
	</form>
</body>
</html>
===============================
package Week05.day0807;

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("/prod")
public class ProdServlet 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);
	}
	
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		ProductDAO dao = new ProductDAO();
		String command = request.getParameter("command");
		List list = null;
		
		if (command !=null && command.equals("delProduct")) // 제품삭제 
		{
			String prod_id = request.getParameter("prod_id"); // id만 받아서 삭제
			dao.delProduct(prod_id);
		} else if(command != null && command.equals("addProduct"))
		{
			String prod_id = request.getParameter("prod_id");
			String prod_name = request.getParameter("prod_name");
			int prod_price = Integer.parseInt(request.getParameter("prod_price"));
			String prod_desc = request.getParameter("prod_desc");
			String vend_id = request.getParameter("vend_id");
			dao.addProduct(prod_id, prod_name, prod_price, prod_desc, vend_id);
		}
		
		String input_id = request.getParameter("prod_id");
		String i_vend_id = request.getParameter("vend_id"); // 공급업체번호
		
		list = dao.listMembers(input_id, i_vend_id); // listMembers메소드로 회원정보를 조회
			
		out.print("<html><body>");
		out.print("<table border=1><tr align='center' bgcolor='lightgreen'>");
//		제품번호 조회 쿼리(조회시 like로 검색)
//		제품번호, 제품명, 제품가격, 제품설명, 공급업체명, 삭제
//		select P.prod_id, P.prod_name, P.prod_price, P.prod_desc, V.vend_name
		out.print("<td>제품번호</td><td>제품명</td><td>제품가격</td><td>제품설명</td><td>공급업체명</td><td>삭제</td></tr>");
			
		for(int i = 0; i<list.size(); i++)
		{
			ProductVO productVO = (ProductVO) list.get(i);
			String prod_id = productVO.getProd_id();
			String prod_name = productVO.getProd_name();
			String prod_price = productVO.getProd_price();
			String prod_desc = productVO.getProd_desc();
			String vend_name = productVO.getVend_name();
			out.print("<tr><td>" + prod_id + "</td><td>" + prod_name +"</td><td>" + prod_price + "</td><td>" + prod_desc + "</td><td>" + vend_name + "</td><td>" + "<a href='/pro09/prod?command=delProduct&prod_id=" + prod_id + "'> 삭제 </a></td></tr>");
		}
		out.print("</table></body></html>");
		out.print("<a href='/pro09/customer2.html'>새로운 상품 조회하기</a>");
	}

}
=======================
package Week05.day0807;

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 ProductDAO {
	private Connection con;
	private PreparedStatement pstmt; // 실무에선 PreparedStatement를 더 많이씀.
	private DataSource dataFactory;
	
	public ProductDAO()
	{
		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, String i_vend_id) // 제품조회 메소드
	{
		List list = new ArrayList();
		try
		{
			con = dataFactory.getConnection();
			String query = "select P.prod_id, P.prod_name, P.prod_price, P.prod_desc, V.vend_name "
					+ "from products P, vendors V "
					+ "where P.vend_id = V.vend_id ";
			if(input_id != null && i_vend_id != null) { //제품번호, 공급업체번호 둘 다 입력 되었을 때
				query += " and P.prod_id like '%" + input_id + "%'";
				query += " and V.vend_id like '%" + i_vend_id + "%'";
			} else if(input_id != null && i_vend_id == null){ //제품번호만 입력했을 때
				query += " and P.prod_id like '%" + input_id + "%'";
			} else if(input_id == null && i_vend_id != null){ //공급업체만 입력했을 때
				query += " and V.vend_id like '%" + i_vend_id + "%'";
			}
			System.out.println("preparedStatement : " + query);
			pstmt = con.prepareStatement(query); // 파생된 SQL 재사용. preparedStatement 메소드에 sql문을 전달해 prepareStatement객체를 생성. 
			ResultSet rs = pstmt.executeQuery(); // sql문으로 회원 정보를 조회
			while(rs.next())
			{
				// 조회한 레코드의 각 컬럼 값을 받아옴.
				String prod_id = rs.getString("prod_id"); // " " 안에는 컬럼명이 와야함.!!!!!!!!!!!!!!
				String prod_name =rs.getString("prod_name");
				String prod_price = rs.getString("prod_price");
				String prod_desc = rs.getString("prod_desc");
				String vend_name = rs.getString("vend_name");
				// 각 컬럼 값을 다시 MemberVO 객체의 속성에 설정.
				ProductVO vo = new ProductVO();
				vo.setProd_id(prod_id);
				vo.setProd_name(prod_name);
				vo.setProd_price(prod_price);
				vo.setProd_desc(prod_desc);
				vo.setVend_name(vend_name);
				list.add(vo); // 설정된 MemberVO 객체를 다시 ArrayList에 저장.
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return list; // 조회한 레코드의 개수만큼 MemberVO객체를 저장한 ArrayList를 반환.
	}
	
	public void delProduct(String input_id) // 제품삭제 메소드
	{
		try
		{
			ProductVO vo = new ProductVO();
			vo.setDelId(input_id);
			con = dataFactory.getConnection();
			String query = "delete from products";
			query += " where prod_id = '" + input_id + "'";
			System.out.println("presparedStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.executeUpdate();
			pstmt.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	
	public void addProduct(String prod_id, String prod_name, int prod_price, String prod_desc, String vend_id) // 제품추가 메소드
	{
		try
		{
        // DataSource 이용해 데이터베이스와 연결
			Connection con = dataFactory.getConnection();
            // insert문을 문자열로 만듬.
			String query = "insert into products";
			query += " (prod_id,prod_name,prod_price,prod_desc,vend_id)";
			query += " values(?,?,?,?,?)"; // 순서대로 값을 assign 해야함.
			System.out.println("prepareStatement: " + query);
			pstmt = con.prepareStatement(query);
            // insert문의 각 ? 순서대로 회원정보를 세팅
			pstmt.setString(1, prod_id);
			pstmt.setString(2, prod_name);
			pstmt.setInt(3, prod_price);
			pstmt.setString(4, prod_desc);
			pstmt.setString(5, vend_id);
            // 회원정보를 테이블에 추가.
			pstmt.executeUpdate();
			pstmt.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}

}
=============================
package Week05.day0807;

public class ProductVO {
	// P.prod_id, P.prod_name, P.prod_price, P.prod_desc, V.vend_name
	private String prod_id;
	private String prod_name;
	private String prod_price;
	private String prod_desc;
	private String vend_name;
	private String vend_id;
	private String delId;

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

	public String getProd_id() {
		return prod_id;
	}

	public void setProd_id(String prod_id) {
		this.prod_id = prod_id;
	}

	public String getProd_name() {
		return prod_name;
	}

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

	public String getProd_price() {
		return prod_price;
	}

	public void setProd_price(String prod_price) {
		this.prod_price = prod_price;
	}

	public String getProd_desc() {
		return prod_desc;
	}

	public void setProd_desc(String prod_desc) {
		this.prod_desc = prod_desc;
	}

	public String getVend_name() {
		return vend_name;
	}

	public void setVend_name(String vend_name) {
		this.vend_name = vend_name;
	}

	public String getVend_id() {
		return vend_id;
	}

	public void setVend_id(String vend_id) {
		this.vend_id = vend_id;
	}

	public String getDelId() {
		return delId;
	}

	public void setDelId(String delId) {
		this.delId = delId;
	}
	
	
	
	
}
===============================
package sec03.ex04;

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;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class SessionTest4
 */
@WebServlet("/login2")
public class SessionTest4 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");
		PrintWriter out = response.getWriter();
		HttpSession session = request.getSession();
		String user_id = request.getParameter("user_id");
		String user_pw = request.getParameter("user_pw");
		if(session.isNew()) {
			//로그인창에서 서브릿으로 요청했다면 id가 null이 아니므로 세션에 id를 바인딩합니다.
			if(user_id !=null) {
				session.setAttribute("user_id", user_id);
				String url=response.encodeURL("login"); // 변수 url에 encodeURL()을 이용해 응답 시 미리 jsessionId를 저장합니다.
				out.println("<a href='login'>로그인 상태 확인</a>"); // 로그인 상태 확인 클릭시 jsessionID를 서블릿으로 다시 전송.
			} else {
				out.println("<a href='login2.html'>다시 로그인 하세요!!</a>");			
				session.invalidate();
			}	
		} else { 
			//재요청시 세션에서 id를 가져와 이전에 로그인했는지 여부를 확인.
			user_id = (String)session.getAttribute("user_id");
			if(user_id !=null && user_id.length() !=0) {
				out.println("안녕하세요 " + user_id + "님!!!");
			} else {
				out.println("<a href='login2.html'>다시 로그인 하세요!!</a>");			
				session.invalidate();
			}
		}
	}
	
}
--------------------------
package sec05.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;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class SessionTest4
 */
@WebServlet("/login")
public class LoginServlet 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");
		PrintWriter out = response.getWriter();
		String user_id = request.getParameter("user_id");
		String user_pwd = request.getParameter("user_pwd");
		MemberVO memberVO = new MemberVO();
		memberVO.setId(user_id);
		memberVO.setPwd(user_pwd);
		MemberDAO dao = new MemberDAO();
		
		//사용자 존재여부 check - 기본패턴임.
		boolean result = dao.isExisted(memberVO);
		if(result) {
			// 사용자 존재하므로 세션에 사용자 정보 설정
			HttpSession session = request.getSession();
			// 로그인 성공여부 설정
			session.setAttribute("isLogon", true); //조회 결과가 true이면 isLogOn 속성을 true로 세션에 저장.
			session.setAttribute("login.id", user_id); // 조회한 결과가 true이면 ID와 pwd를 세션에 저장.
			session.setAttribute("login.pwd", user_pwd);
			out.print("<html><body>");
			out.print("안녕하세요 " + user_id + "님!!!");
			out.print("<a href='show'>회원정보 보기</a>");
			out.print("</html></body>");
		} else {
			out.println("<html><body><center>회원 아이디가 틀립니다.");
			out.println("<a href='login3.html'>다시 로그인 하기</a>");			
			out.println("</html></body>");			
		}
	}
	
}
-----------------------------
package sec05.ex01;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class MemberDAO {
	private Connection con;
	private PreparedStatement pstmt; // 실무에선 PreparedStatement를 더 많이씀.
	private DataSource dataFactory;
	
	public MemberDAO()
	{
		try
		{
			Context ctx = new InitialContext();
			Context envContext = (Context)ctx.lookup("java:/comp/env");
			dataFactory = (DataSource)envContext.lookup("jdbc/oracle");
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public boolean isExisted(MemberVO memberVO) {
		boolean result = false;
		String id = memberVO.getId();
		String pwd = memberVO.getPwd();
		try {
			con = dataFactory.getConnection();
			// 오라클의 decode 함수를 이용해 조회하여 ID와 비밀번호가 테이블에 존재하면 true를, 존재하지 않으면 false를 조회함.
			String query = "select decode(count(*),1,'true','false') as result from t_member";
					query += " where id=? and pwd=?";
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, id);
			pstmt.setString(2, pwd);
			ResultSet rs = pstmt.executeQuery();
			rs.next(); // 커서를 첫번째 레코드로 위치시킴.
			result = Boolean.parseBoolean(rs.getString("result"));
			System.out.println("result=" + result);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
	
	public List listMembers()
	{
		List list = new ArrayList();
		try
		{
//			connDB(); // 네가지 정보로 데이터베이스를 연결
			con = dataFactory.getConnection();
			String query = "select * from t_member ";
			System.out.println("preparedStatement : " + query);
			pstmt = con.prepareStatement(query); // preparedStatement 메소드에 sql문을 전달해 prepareStatement객체를 생성. 
			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");
				// 각 컬럼 값을 다시 MemberVO 객체의 속성에 설정.
				MemberVO vo = new MemberVO();
				vo.setId(id);
				vo.setPwd(pwd);
				vo.setName(name);
				vo.setEmail(email);
				vo.setJoinDate(joinDate);
				list.add(vo); // 설정된 MemberVO 객체를 다시 ArrayList에 저장.
			}
			rs.close();
			pstmt.close();
			con.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return list; // 조회한 레코드의 개수만큼 MemberVO객체를 저장한 ArrayList를 반환.
	}
	
	public void addMember(MemberVO memberVO)
	{
		try
		{
			Connection con = dataFactory.getConnection();
			String id = memberVO.getId();
			String pwd = memberVO.getPwd();
			String name = memberVO.getName();
			String email = memberVO.getEmail();
			
			String query = "insert into t_member";
			query += " (id,pwd,name,email)";
			query += " values(?,?,?,?)"; // 순서대로 값을 assign 해야함.
			System.out.println("prepareStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, id);
			pstmt.setString(2, pwd);
			pstmt.setString(3, name);
			pstmt.setString(4, email);
			pstmt.executeUpdate();
			pstmt.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public void delMember(String id)
	{
		try
		{
			Connection con = dataFactory.getConnection();
			
			String query = "delete from t_member" + " where id=? ";
			System.out.println("prespareStatement: " + query);
			pstmt = con.prepareStatement(query);
			pstmt.setString(1, id);
			pstmt.executeUpdate();
			pstmt.close();
		} catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}
--------------------------------

package sec05.ex01;

import java.io.IOException;
import java.io.PrintWriter;
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;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class MemberServlet
 */
@WebServlet("/show")
public class ShowMember 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 id="", pwd="";
		Boolean isLogon=false;
		HttpSession session = request.getSession(false); // 세션이 존재하는 경우에만 세션리턴, 없으면 null반환
		//세션 존재여부 check
		if(session!= null) {
			// 로그인 성공여부 check
			isLogon=(Boolean)session.getAttribute("isLogon");
			if(isLogon==true) {
				id=(String)session.getAttribute("login.id");
				pwd=(String)session.getAttribute("login.pwd");
				out.print("<html><body>");
				out.print("아이디 : " + id + "<br>");
				out.print("비밀번호 : " + pwd + "<br>");
				out.print("</html></body>");
			} else {
				response.sendRedirect("login3.html"); // 로그인 상태가 아니면 로그인창으로 이동.
			} 
		} else {
			response.sendRedirect("login3.html"); // 세션이 생성되지 않았으면 로그인창으로 이동.
		}
	}
}
-----------------------------
package sec02.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 TestServlet1
 */
@WebServlet("/first/test")
public class TestServlet1 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();
		
		String context = request.getContextPath();
		String url = request.getRequestURL().toString();
		String mapping = request.getServletPath();
		String uri = request.getRequestURI();
		
		out.println("<html>");
		out.println("<head>");
		out.println("<title>Test Servlet1</title>");
		out.println("</head>");
		out.println("<body bgcolor='green'>");
		out.println("<b>TestServlet1입니다.</b><br>");
		out.println("<b>컨텍스트 이름 : " + context + "</b><br>");
		out.println("<b>전체 경로 : " + url + "</b><br>");
		out.println("<b>매핑 이름 : " + mapping + "</b><br>");
		out.println("<b>URI : " + uri + "</b><br>");
		out.println("</body>");
		out.println("</html>");
		out.close();
	}
}

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

package sec03.ex01;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

/**
 * Servlet Filter implementation class EncoderFilter
 */
@WebFilter("/*") // webFilter 애너테이션을 이용해 모든 요청이 필터를 거치게 함.
public class EncoderFilter implements Filter { // 사용자 정의 필터는 반드시 Filter 인터페이스를 구현해야함.
	ServletContext context;

    /**
     * Default constructor. 
     */
    public EncoderFilter() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	// doFilter()안에서 실제 필터 기능을 구현.
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		System.out.println("doFilter 호출");
		request.setCharacterEncoding("utf-8"); // 한글 인코딩 설정작업을 함.
		String context = ((HttpServletRequest)request).getContextPath(); // 웹 어플리케이션의 컨텍스트 이름을 가져옴.
		String pathinfo = ((HttpServletRequest)request).getRequestURI(); // 웹 브라우저에서 요청한 요청 URI를 가져옴.
		String realPath = request.getRealPath(pathinfo); // 요청 URI의 실제 경로를 가져옴.
		String mesg = " Context 정보 : " + context + "\n URI 정보 : " + pathinfo + "\n 물리적 경로 : " + realPath;
		System.out.println(mesg);
		chain.doFilter(request, response); // 다음 필터로 넘기는 작업을 수행함.
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		System.out.println("utf-8 인코딩.............");
		context = fConfig.getServletContext();
	}

}
---------------------------
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 LoginTest
 */
@WebServlet("/login2")
public class LoginTest extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//		request.setCharacterEncoding("utf-8"); // post방식으로 한글 전송 시 인코딩 작업을 생략함.
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		String user_name = request.getParameter("user_name");
		String user_pw = request.getParameter("user_pw");
		out.print("<html><body>");
		out.print("이름은 " + user_name + "<br>");
		out.print("비밀번호는 " + user_pw + "<br>");
		out.println("</html></body>");			
	}
}
------------------------------
package sec04.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;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class LoginTest
 */
@WebServlet("/login3")
public class LoginTest2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	ServletContext context = null;
	List user_list = new ArrayList();

	/**
	 * @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");
		context = getServletContext();
		PrintWriter out = response.getWriter();
		HttpSession session = request.getSession();
		String user_id = request.getParameter("user_id");
		String user_pw = request.getParameter("user_pw");
		
		LoginImpl loginUser = new LoginImpl(user_id, user_pw);
		if(session.isNew()) {
			session.setAttribute("loginUser", loginUser);
			user_list.add(user_id);
			context.setAttribute("user_list", user_list);
		}
		out.println("<html><body>");
		out.println("아이디는 " + loginUser.user_id + "<br>");
		out.println("총 접속자수는  " + LoginImpl.total_user + "<br><br>");
		out.println("접속 아이디 : <br>");
		List list = (ArrayList)context.getAttribute("user_list");
		for(int i=0; i<list.size(); i++) {
			out.println(list.get(i)+"<br>");
		}
		out.println("<a href='logout?user_id="+user_id+"'>로그아웃 </a>");
		out.println("</body></html>");			
	}
}
--------------------------------
package sec04.ex02;

import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

@WebListener
public class LoginImpl implements HttpSessionListener{
	String user_id;
	String user_pw;
	static int total_user=0;
	
	public LoginImpl() {
	}
	
	public LoginImpl(String user_id, String user_pw) {
		this.user_id = user_id;
		this.user_pw = user_pw;
	}
	
	public void sessionCreated(HttpSessionEvent arg0) {
		System.out.println("세션 생성");
		++total_user;
	}
	
	public void sessionDestroyed(HttpSessionEvent arg0) {
		System.out.println("세션 소멸");
		--total_user;
	}

}
-------------------------

package sec04.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;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class LogoutTest
 */
@WebServlet("/logout")
public class LogoutTest extends HttpServlet {
	private static final long serialVersionUID = 1L;
	ServletContext context;

	/**
	 * @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");
		PrintWriter out = response.getWriter();
		HttpSession session = request.getSession();
		String user_id = request.getParameter("user_id");
		session.invalidate(); // 로그아웃시 세션을 소멸시킴.
		List user_list = (ArrayList)context.getAttribute("user_list");
		user_list.remove(user_id);
		context.removeAttribute("user_list");
		context.setAttribute("user_list", user_list);
		out.println("<br>로그아웃했습니다.");		
	}

}





'Bitcamp > BITCAMP - Servlet & JSP' 카테고리의 다른 글

8일차  (0) 2019.08.09
7일차  (0) 2019.08.08
5일차  (0) 2019.08.06
4일차  (0) 2019.08.05
3일차  (0) 2019.08.02
And

5일차

|

주요내용 : 서블릿 포워드, 바인딩, 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"));
			}
		}
	}
}







'Bitcamp > BITCAMP - Servlet & JSP' 카테고리의 다른 글

7일차  (0) 2019.08.08
6일차  (0) 2019.08.07
4일차  (0) 2019.08.05
3일차  (0) 2019.08.02
JSP(Java Server Page)  (0) 2019.08.02
And