7일차

|

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


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

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

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

@WebServlet("/vendor")
public class VendorServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doHandle(request, response);
	}

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

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

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CorrectVendorServlet
 */
@WebServlet("/correct")
public class CorrectVendorServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		String vend_id = request.getParameter("vend_id");
		VendorDAO dao = new VendorDAO();
		String command = request.getParameter("command");
        //바인딩해서 넘어온 request에서 회원정보를 가져온다.
		if(command != null && command.equals("correctVendor"))
		{
			String p_vend_id = request.getParameter("vend_id");
			String p_vend_name = request.getParameter("vend_name");
			String p_vend_address = request.getParameter("vend_address");
			String p_vend_city = request.getParameter("vend_city");
			String p_vend_state = request.getParameter("vend_state");
			String p_vend_zip = request.getParameter("vend_zip");
			String p_vend_country = request.getParameter("vend_country");
			dao.correctVendor(p_vend_id, p_vend_name, p_vend_address, p_vend_city, p_vend_state, p_vend_zip, p_vend_country);
		}	
		response.sendRedirect("vendor?vend_id="+vend_id);
	}

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

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

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

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

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

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

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

	public String getVend_id() {
		return vend_id;
	}

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

	public String getVend_name() {
		return vend_name;
	}

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

	public String getVend_address() {
		return vend_address;
	}

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

	public String getVend_city() {
		return vend_city;
	}

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

	public String getVend_state() {
		return vend_state;
	}

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

	public String getVend_zip() {
		return vend_zip;
	}

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

	public String getVend_country() {
		return vend_country;
	}

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

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

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

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

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

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

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

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

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

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

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



 

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

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