주요내용 : 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>