본문 바로가기

IT코딩공부!

#31 JSP(반복문!),(DB연결 시작)

오늘의 노래!!!

 

 
Shivers
아티스트
Ed Sheeran
앨범
=
발매일
1970.01.01

 

 

[0] 반복태그로 사용해서 이미지 불러오기~!

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

반복문으로 var=변수명 , litems=ServLet객체선언한 변수명
출력값

// CheckServLet .java

	protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		request.setCharacterEncoding("UTF-8");
		
		//[1] Check.jsp에서 받아온 정보
		String[] picks = request.getParameterValues("pick");
		
		//[2] 이동할 페이지 설정 : CheckResult.jsp로 설정
		RequestDispatcher Dispatcher = request.getRequestDispatcher("CheckResult.jsp");
		
		//[3] 전달한 정보 담기 : picks정보 전달
		request.setAttribute("picks", picks);
		
		//[4] 페이지 이동
		Dispatcher.forward(request, response);
		
        }

// 반복문 사용해서 이미지 출력하기 CheckResult.jsp

<body>
 	 <c:forEach var="c" items="${picks}">
 	 	<span><img src="./image/${c}" width="200px"></span>
 	 </c:forEach>
</body>

// 이미지 출력과 선택한 사진이 출력이 된다.


[1] 본격적으로 DB와 JSP와 연동 시작~~~

각각 java패키지 생성
파일 위치~!
속성 확인!
DB와 연결하기 위해선 java파일 필요!!!
context.xml 구조까지는 알 필요없다.
메소드를 result를 입력받는다!

// inputDB.jsp 출력을 위한 jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>InputDB</title>

</head>
<body>
	<form action="inputController" method="get">
		<fieldset>
			<legend>DB에 데이터 저장</legend>
			<label>입력값 : <input type="text" name="data1"/></label>
			<input type="submit" value="전송"/>
		</fieldset>
	</form>
</body>
</html>

// DB데이터를 입력 받기 위한 inputController.java

package controller;

import java.io.IOException;

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 service.inputService;

@WebServlet("/inputController")
public class inputController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public inputController() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		doProcess(request, response);
	}
	
	protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		request.setCharacterEncoding("UTF-8");
		
		//[1] inputDB.jsp에서 받아온 정보
		String data1 = request.getParameter("data1");
		
		System.out.println("[1]jsp -> controller : " + data1);
		
		inputService isvc = new inputService();
		
		int result = isvc.inputDB(data1);
		
	}

}

// DB데이터를 입력 받기 위한 inputService.java

package service;

import java.sql.Connection;

import dao.inputDAO;
import util.JdbcUtil;

public class inputService {

	public int inputDB(String data1) {
		System.out.println("[2]controller -> service : " +data1);
		
		// service에서 dao로 넘어갈때
		// inputService(클래스)에서 inputDAO(클래스)로 이동
	
		inputDAO idao = new inputDAO();
		
		//DB에 연결
		Connection con = JdbcUtil.getConnection();
		idao.setConnection(con);
		int result = idao.inputDB(data1);
		return 0;
	}
}

// DB데이터를 입력 받기 위한 inputDAO.java

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class inputDAO {

	// DB접속을 위한 객체 con
	Connection con;
	
	// 쿼리문 작성을 위한 객체 pstmt
	PreparedStatement pstmt;
	
	// SELECTE 결과를 담는 객체 rs
	ResultSet rs;
	
	public void setConnection(Connection con) {
		this.con = con;
	}
	
	public int inputDB(String data1) {
		System.out.println("[3]service -> dao : " + data1);
		String sql = "INSERT INTO JSP VALUES(?)";
		int result = 0;
		
		try {
			pstmt = con.prepareStatement(sql);
			System.out.println("[4] dao -> db : " + data1);
			
			pstmt.setString(1, data1);
			
			result = pstmt.executeUpdate();
			// 결과 : 1 행 이(가) 삽입되었습니다.
			// 그중 '1' 이 값이 result에 들어감
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return result;
	}
	
}

// DB데이터를 입력 받기 위한 JdbcUril.java

package util;

import java.sql.Connection;
import java.sql.SQLException;

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

public class JdbcUtil {

	//(1) DB접속 메소드
	public static Connection getConnection() {
		Connection con = null;
		
		// 톰캣안의 context, 초기화 하는 변수
		try {
			Context initCtx = new InitialContext();
			Context envCtx = (Context) initCtx.lookup("java:comp/env");
			
			DataSource ds = (DataSource) envCtx.lookup("jdbc/OracleDB");
			con = ds.getConnection();
			
			// commit 자동설정 → 해제
			con.setAutoCommit(false);
			
			System.out.println("DB접속 성공!");

		} catch (Exception e) {
			System.out.println("DB접속 실패!");
			e.printStackTrace();
		}
		
		
		return con;
	}
	
	// (2) con close()
	public static void close(Connection con) {
		try {
			System.out.println("접속해체 성공!");
			con.close();
		} catch (SQLException e) {
			System.out.println("접속해체 실패!");
			e.printStackTrace();
		}
	}
	
	// (3) con commit()
	public static void commit(Connection con) {
		try {
			System.out.println("저장 성공!");
			con.commit();
		} catch (SQLException e) {
			System.out.println("저장 실패!");
			e.printStackTrace();
		}
	}
	
	// (4) con rollback()
	public static void rollback(Connection con) {
		try {
			System.out.println("되돌리기 성공!");
			con.rollback();
		} catch (SQLException e) {
			System.out.println("되돌리기 실패!");
			e.printStackTrace();
		}
	}
}

// DB로 와서 테이블 설정 및 값 설정

DB값 확인하고 설정할것!