◆ 目次
◇ ディレクトリ構成
◇ 【画像】出力内容 & DB内容
- JDBC ドライバ導入
- context.xml を作成する
- 実行(複数パターン)
- 【実行】servlet(サーブレット)
- 【実行】DAO ~Beanを使わない~
- 【実行】DAO ~Beanを使用~
◇ ディレクトリ構成
book
┣━ src
┃ ┣━ sample
┃ ┃ ┣━ All.java
┃ ┃ ┣━ ProductList.java
┃ ┃ ┗━ ProductList2.java
┃ ┃
┃ ┣━ dao
┃ ┃ ┣━ DAO.java
┃ ┃ ┗━ ProductDAO.java
┃ ┃
┃ ┗━ bean
┃ ┗━ Product.java
┃
┗━ WebContent
┣━ META-INF
┃ ┗━ context.xml
┃
┗━ WEB-INF
┗━ lib
┗━ mysql-connector-java-5.1.48-bin.jar
◇ 【画像】出力内容 & DB内容
1. JDBC ドライバ導入
- 公式サイトから
mysql-connector-java-8.0.18.zip
をダウンロード - 解凍するして
mysql-connector-java-5.1.48-bin.jar
を取り出す -
/WebContent/WEB-INF/lib/mysql-connector-java-5.1.48-bin.jar
に入れる
2. context.xml を作成する
/WebContent/META-INF/context.xml
に作成する
<?xml version="1.0" encoding="UTF-8" ?>
<Context>
<Resource name = "jdbc/book"
auth = "Container"
type = "javax.sql.DataSource"
driverClassName = "com.mysql.jdbc.Driver"
url = "jdbc:mysql://localhost/book"
username = "username"
password = "password">
</Resource>
</Context>
3. 実行(複数パターン)
- 【実行】servlet(サーブレット)
- 【実行】DAO ~Beanを使わない~
- 【実行】DAO ~Beanを使用~
1. 【実行】servlet(サーブレット)
/src/sample/All.java
に作成する
package sample;
import java.io.*;
import java.sql.*;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.sql.*;
/**
* Servlet implementation class All
*/
@WebServlet("/All")
public class All extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
try {
// コネクション取得
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:/comp/env/jdbc/book");
Connection con = ds.getConnection();
// SQL文送信
PreparedStatement st = con.prepareStatement("select * from product");
// 実行&結果受け取り
ResultSet rs = st.executeQuery();
// データの表示
while (rs.next()) {
out.println(
rs.getInt("id") + ":" +
rs.getString("name") + ":" +
rs.getInt("price")
);
}
// データベース切断
st.close();
con.close();
} catch (Exception e) {
// 接続・SQL文エラー
e.printStackTrace(out);
} // try
}
}
2. 【実行】DAO ~Beanを使わない~
DAO(Data Access Object)を作成!!!!( ^ω^ )
上記、1. 【実行】servlet(サーブレット)
の内容をライブラリ化する
1 ) DAO.java
を作成する(コネクション取得)
2 ) ProductList.java
を作成する(DAO取得 & 処理 & 表示)
1 ) DAO.java を作成する(コネクション取得)
package dao;
import java.sql.Connection;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DAO {
static DataSource ds;
public Connection getConnection() throws Exception {
// 初期コンテキスト構築
InitialContext ic = new InitialContext();
// DBの接続先情報を取得(context.xmlの内容)
ds = (DataSource) ic.lookup("java:/comp/env/jdbc/book");
return ds.getConnection();
}
}
2 ) ProductList.java を作成する(DAO取得 & 処理 & 表示)
package sample;
import dao.DAO;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/sample/productList")
public class ProductList extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
try {
// DB接続
DAO dao = new DAO();
Connection con = dao.getConnection();
// SQL作成
PreparedStatement st = con.prepareStatement("SELECT * FROM product");
// SQL実行
ResultSet rs = st.executeQuery();
// データをセット
while (rs.next()) {
out.println(
rs.getInt("id") + ":" +
rs.getString("name") + ":" +
rs.getInt("price") + "<br>"
);
}
// 接続解除
st.close();
con.close();
} catch (Exception e) {
e.printStackTrace(out);
}
}
}
3. 【実行】DAO ~Beanを使用~
1 ) DAO.java
を作成する(コネクション取得)
2 ) Product.java
を作成する(Bean)
3 ) ProductDAO.java
を作成する(DAO取得 & 処理)
4 ) ProductList2.java
を作成する(ProductDAO取得 & 表示)
1 ) DAO.java を作成する(コネクション取得)
上記、2 ) 【実行】DAO ~Beanを使わない~
と同じ為
!!!!! 割愛 !!!!!
2 ) Product.java を作成する(Bean)
package bean;
public class Product implements java.io.Serializable {
private int id;
private String name;
private int price;
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPrice(int price) {
this.price = price;
}
}
3 ) ProductDAO.java を作成する(DAO取得 & 処理)
package dao;
import java.sql.*;
import java.util.*;
import bean.Product;
public class ProductDAO extends DAO {
public List<Product> listAll() throws Exception {
List<Product> list = new ArrayList<>();
// DB接続
Connection con = getConnection();
// SQL作成
PreparedStatement st = con.prepareStatement("SELECT * FROM product");
// SQL実行
ResultSet rs = st.executeQuery();
// データをセット
while (rs.next()) {
Product p = new Product();
p.setId(rs.getInt("id"));
p.setName(rs.getString("name"));
p.setPrice(rs.getInt("price"));
list.add(p);
}
// 接続解除
st.close();
con.close();
return list;
}
}
4 ) ProductList2.java を作成する(ProductDAO取得 & 表示)
package sample;
import java.io.*;
import java.sql.*;
import java.util.List;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import javax.sql.*;
import bean.Product;
import dao.ProductDAO;
@WebServlet("/sample/productList2")
public class Search2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
try {
ProductDAO dao = new ProductDAO();
List<Product> list = dao.listAll();
for (Product p : list) {
out.println(
p.getId() + ":" +
p.getName() + ":" +
p.getPrice() + "<br>"
);
}
} catch (Exception e) {
e.printStackTrace(out);
}
}
}
参考サイト
※ めちゃくちゃ参考になった!!!
Java で MySQL に 接続する 方法
https://garafu.blogspot.com/2016/05/how-to-connect-mysql.html#con-svlt1