'전체 글'에 해당되는 글 384건
/* 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
)
;
배열 : 여러개의 데이터를 담기 위한 그릇의 역할
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 |
######################## 함수(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 |
주요내용 : 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> </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>
=================== @@@@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
)
;
주요내용 : 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>
주요내용 : 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> </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>
주요내용 : 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>
주요내용 : 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>로그아웃했습니다.");
}
}
주요내용 : 서블릿 포워드, 바인딩, 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 |